Pesha
¯\_(ツ)_/¯

 
Уровень 13

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2151



РЕКОМЕНДУЮ



Советник на пробой коробки (авансом, если можно за сентябрь)
[*]

Доброго времени суток, Андрей.
Если возможно за сентябрь заказать?

1. Строиться коробка по хай и лоу свечам, обязательно настройка времени начало и окончание (пример: начало 0:00 окончание 4:59)

2. Далее выставляются ордера sell stop и buy stop (расстояние от вершины коробки настраиваемое) (рис. ниже), те коробка строиться до 4:59 в 5:00 сразу выставляются ордера, если есть возможность количество этих ордеров (пример: количество в настройках 2, значит 2 buy и 2 sell).

3. stop loss для ордеров ставятся на обратной стороне коробки (рис. ниже)

4. ТР очень важный момент!!!:
4.1. если коробка построенная за определенное время (высота) составила (91 пп, рис. ниже), то ТР будет 91 пп для всех ордеров.
4.2 если коробка построенная за определенное время (высота) составила больше 300 пп (например 460 пп), то ТР будет 300 пп не больше!!!
Итого по ТР 1. высота коробки, если меньше 300 пп либо равна, то ТР будет меньше либо равен 300 пп.
2. высота коробки, если больше 300 пп, то ТР будет 300 пп не больше.

Настройки советника:
1. Лот ордера (если есть возможность, то процент от депо. Формула % лота(пример 2) = депо*на %(2)/100/1000
2. Время коробки начало и конец.
3. Расстояние от коробки выставления ордеров в пунктах
4. Количество ордеров buy stop и sell stop
5. ТР отключаемый от высоты коробки, 0 берется размер высоты коробки, если не указан свой ТР.
6. БУ (шаг и расстояние)
7. Трал (шаг и расстояние)
8. Закрытие ордеров и удаление не открытых ордеров по времени, те пример (указано в настройках 23:30) в 23:30 все ордера удаляются и закрываются.



Надеюсь на АВАНС *friends* *drinks* 
  • +2
  • Просмотров: 8738
  • 27 августа 2016, 12:24
  • Pesha
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
5Min_Binary_Strategy
27 августа 2016
29 августа 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (36)

+
+1
Авансом только когда есть свободное время, сейчас работы хватает.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 27 августа 2016, 12:30
комментарий был удален 2016-09-01 00:06:05 Pesha

+
0
Аванс не прошёл)))
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 00:06
+
+1
Тут работы порядочно, если получится быстро сделать будет советник.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 08:23
+
0
Спасибо. Если найти индикатор коробки будет проще?
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 08:38
+
+1
Не надо, кое что уже начало вырисовываться.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 09:01
+
+1
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 09:53
+
0
Андрей абсолютно не то(((
1. Строиться коробка по хай и лоу свечам, обязательно настройка времени начало и окончание (пример: начало 0:00 окончание 4:59)



Правильным будет построение вот так:


Далее ордера выставляются бесконечное количество раз.


Они должны один раз выставиться и все, больше обращения к выставлению не должно.

ТР должен быть размеру высоты коробки, те высота 239 пп ТР тоже 239.

Может все-таки индикатор???
Редактирован: 1 сентября 2016, 19:52
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 19:49
+
0
ТР должен быть размеру высоты коробки, те высота 239 пп ТР тоже 239.


В ТЗ ТП вообще по другому. Ориентируюсь на ТЗ

Строиться коробка по хай и лоу свечам, обязательно настройка времени начало и окончание (пример: начало 0:00 окончание 4:59)


Так и строит. Чтобы отладить мне нужно видеть время внизу.

Далее ордера выставляются бесконечное количество раз.

Насчет бесконечности завтра смотреть буду.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 20:39
+
0
4. ТР очень важный момент!!!:
4.1. если коробка построенная за определенное время (высота) составила (91 пп, рис. ниже), то ТР будет 91 пп для всех ордеров.
4.2 если коробка построенная за определенное время (высота) составила больше 300 пп (например 460 пп), то ТР будет 300 пп не больше!!!
Итого по ТР 1. высота коробки, если меньше 300 пп либо равна, то ТР будет меньше либо равен 300 пп.
2. высота коробки, если больше 300 пп, то ТР будет 300 пп не больше.


Ну да, с этой коробкой он берет 300 и ставить, это пока не проверить, тк она строиться всегда 300)
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 20:48
+
0
В коде ТП при коробке 91-300п ставит — 91, больше 300 — 300.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 21:05
+
0
Да, так и нужно.
Не верно строит коробку.

Если не получится есть индикатор, но он ex4.

Редактирован: 1 сентября 2016, 21:21
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 21:15
+
0
Индикатор скорее всего визуальный, с него не вытащишь никаких значений.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 21:38
+
0
Не верно строит коробку


Что конкретно неверно, покажите на скрине? Скрины нужны крупные разборчивые и целиком, чтобы я видел как можно больше информации. А кусками я ничего не пойму.
Редактирован: 1 сентября 2016, 21:43
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 1 сентября 2016, 21:40
+
0
extern int BarsCount = 20; // баров для расчета


Вот это понять не могу зачем???? Он историю не смотрит, он берет только максимум и минимум за определенное время.



Те согласно настроек он берет максимальное и минимальное значение с 10 00 до 14 00, после чего в 14:00:01(03) выставляет отложенные ордера.

А он видимо посчитал по истории нарисовал коробку по истории.


И он поставил ордер только в 14:15 и только в buy, последняя

Пример правильной коробки (справа)



Те коробка закончилась он выставляет ордера, не ждет новой свечи!!! а сразу выставляет BUY STOP и SELL STOP

У Вас был похожий заказ На вашем сайте вы делали эксперта по индикатору Dserg-LinRegressionBreakout_v1.1 могли бы вы его не много до делать. только особенность коробка прямоугольная и ордера открываются не на новой свече, а после формирования ее.

Решил добавить Индикатор, может получиться с ним.
Он, кстати, считает макс и мин и высоту коробки!


Редактирован: 1 сентября 2016, 22:51
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 22:36
+
0
Помнится, когда-то делала коробку, может что пригодится:
opentraders.ru/downloads/617/
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 1 сентября 2016, 23:06
+
0
*hi*  Это и было практически за основу коробки взято;) 
Только коробки бывают разной высоты и SL ставится должен на открытие обратного ордера с учетом отступа, а так практически идеально.
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 1 сентября 2016, 23:15
+
0
Проверил работу советника. Выставил ордера, построил, коробку по времени, бесконечного выставления нет:


Редактирован: 2 сентября 2016, 10:12
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 2 сентября 2016, 06:50
+
0
Вот это понять не могу зачем???? Он историю не смотрит, он берет только максимум и минимум за определенное время.


Осталось с предыдущей версии. Убрал.

И он поставил ордер только в 14:15 и только в buy, последняя


Ставит ордер только если цена внутри коробки.

Файл обновил: www.opentraders.ru/downloads/1306/
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 2 сентября 2016, 10:21
+
0
Исправил еще найденные ошибки. На скрине строит по времени 2.30-8.30.


www.opentraders.ru/downloads/1306/
Редактирован: 2 сентября 2016, 10:39
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 2 сентября 2016, 10:37
+
0
Добрый день.

Наверное нужно тестировать на демо. тк на тестере показывает вот такой заход по ордерам.

Построение коробки счас идеальное, ордера отрывает сразу после окончания




Настройки:


Редактирован: 3 сентября 2016, 13:37
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 3 сентября 2016, 13:35
+
0
Может я пользуюсь не обнлвленной версией
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 5 сентября 2016, 11:49
+
0
Поставлю на демо проверю.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 12:08
+
0
Проверил:

avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 12:54
+
0
Еще сделал чтобы впритык время было как у вас на скрине:




//+------------------------------------------------------------------+
//|                                                      Korobka.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double Risk       = 10;       // риск
extern string Start      = "00:00";  // начало коробки
extern string End        = "4:30";   // конец коробки
extern string CloseTime  = "23:30";  // закрытие всех ордеров
extern int StopLoss      = 50;       // лось
extern int TakeProfit    = 70;       // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int TrailingStep  = 20;       // шаг трала
extern int Expiration    = 10;       // истечение ордера
extern int Delta         = 100;      // дельта
extern int Count         = 2;        // количество ордеров
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

datetime t=0;

int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   Comment("");
  }

void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   int EndBar=iBarShift(NULL,0,StringToTime(End));
   int StartBar=iBarShift(NULL,0,StringToTime(Start));
   int DeltaBars=StartBar-EndBar;

   double h = High[iHighest(NULL,0,MODE_HIGH,DeltaBars,EndBar)];
   double l = Low[iLowest(NULL,0,MODE_LOW,DeltaBars,EndBar)];

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);       else sl=NormalizeDouble(h,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
      else
        {
         if((h-l)>91*Point && (h-l)<300*Point) tp=NormalizeDouble(price-91*Point,Digits);
         if((h-l)>300*Point) tp=NormalizeDouble(price-300*Point,Digits);
        }
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);       else sl=NormalizeDouble(l,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
      else
        {
         if((h-l)>91*Point && (h-l)<300*Point) tp=NormalizeDouble(price+91*Point,Digits);
         if((h-l)>300*Point) tp=NormalizeDouble(price+300*Point,Digits);
        }
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type) count++;
           }
        }
     }
   return(count);
  }

void DelOrder()
  {
   bool del;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1) del=OrderDelete(OrderTicket());
           }
        }
     }
  }

double Lot()
  {
   double lot=Lots;
   if(Lots==0)
     {
      lot=NormalizeDouble(AccountEquity()/Risk/StopLoss,2); // 10000*10/100*1000=1
     }
   return(lot);
  }

void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- создадим прямоугольник по заданным координатам
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- установим цвет прямоугольника
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| Ступенчатый трал               if(TrailingStop>0) Trailing();    |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }

void BU()
  {
   bool m;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }

void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }

void OnTick()
  {
   int EndBar=iBarShift(NULL,0,StringToTime(End));
   int StartBar=iBarShift(NULL,0,StringToTime(Start));
   int DeltaBars=MathAbs(StartBar-EndBar);
   double h = High[iHighest(NULL,0,MODE_HIGH,DeltaBars+1,EndBar)];
   double l = Low[iLowest(NULL,0,MODE_LOW,DeltaBars+1,EndBar)];

   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();

   if(TimeCurrent()>StringToTime(End) && (CountOrders(0)<1 || CountOrders(1)<1))
     {
      PutRect("Rect",Time[EndBar],l,Time[StartBar],h,Blue);
      if(CountOrders(4)<1 && Bid<h)
        {
         for(int i=1;i<=Count;i++)
           {
            PutOrder(4,h+Delta*Point);
           }
        }
      if(CountOrders(5)<1 && Bid>l) 
        {
         for(int k=1;k<=Count;k++)
           {
            PutOrder(5,l-Delta*Point);
           }
        }
     }

   if(CountOrders(0)>0 || CountOrders(1)>0) DelOrder();
   if(TimeCurrent()>StringToTime(CloseTime) && CloseTime!="") {DelOrder();CloseAll();}

   Comment("\n End: ",iBarShift(NULL,0,StringToTime(End)),
           "\n Start: ",iBarShift(NULL,0,StringToTime(Start)));
  }
//+------------------------------------------------------------------+


Редактирован: 5 сентября 2016, 13:02
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 12:59
+
0
А запустите на ecn-demo, я запускаю на этом счете, может в этом вся соль.
Поставил, так же открывает 1000 ордеров.
Вечером скачаю последнюю версию
Редактирован: 5 сентября 2016, 13:12
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 5 сентября 2016, 13:07
+
0
У меня на на другом компе ecn-demo, но там тоже все нормально.
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 13:10
+
0
А сейчас стоял в режиме ожидания и как только время настало все установил как положено:

avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 13:16
+
0
А когда сработают ордера ?????
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 5 сентября 2016, 13:41
+
0
А Билд какой у вас терминала?
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 5 сентября 2016, 13:23
+
0
А когда сработают ордера ?????


Есть контроль чтобы не открывал когда в рынке позы:
if(TimeCurrent()>StringToTime(End) && (CountOrders(0)<1 || CountOrders(1)<1))
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 13:51
+
0
Поставил на обычный демо вроде поставил хорошо, значит счета ecn
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 5 сентября 2016, 13:58
+
0
Нашел ошибку. Такой контроль позиций не работает:

if(TimeCurrent()>StringToTime(End) && (CountOrders(0)<1 || CountOrders(1)<1))

Нужно по другому:

if(TimeCurrent()>StringToTime(End) && CountTrades()<1)




www.opentraders.ru/downloads/1306/
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 5 сентября 2016, 17:20
+
0
Добрый день, Андрей.
Большую работу Вы проделали, за это огромное спасибо!!! Поэтому хотелось бы исправить не точности которые были найдены.
Все это время тестировал и на сервере, и на других ноутах, и компах…
Результат один и тот же.
Коробку счас строит идеально заданному времени, вопросов к этому нет, но открытие ордеров и дальнейшее сопровождение тут не все так радостно.
Решил записать видео, где видно, что в течение дня открывает ордер, после закрывает и потом опять может его открыть, что не должно происходить.
В видео четко видно, как открывает после закрывает и потом снова может перезайти, но и есть еще один момент про который писал ранее может откложек открывать тьму.

Видео 3 минутки

Надеюсь, это видео поможет понять о чем речь идет.
Спасибо.
avatar

  13  Pesha Автор Сообщений: 222 - ¯\_(ツ)_/¯

  • 11 сентября 2016, 12:23
+
+1
avatar

  35  AM2 Сообщений: 16425 - Андрей

  • 11 сентября 2016, 18:50
+
0
не понимаю, как в данном советнике выставляется SL по противоположному краю коробки…
avatar

  0  valdaifox Сообщений: 1

  • 25 февраля 2020, 10:54

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий