Советники: Сетка ордеров (версия 3-я) - страница 5

 
proffessor:
vitalykk:

У меня почему-то после достижения заданного профита всегда остается 2-3 незакрытых ордера

Параметр pop=5. В чем причина?


Посмотрите записи в журнале, явно или торговый поток занят, или ещё какая-то шкварка от дилцентра.

Сейчас готовлю новую версию, но выложу не скоро - тестирую и дописываю.....

будем ждать..........
 
Для всех. Если остаются незакрытыми несколько отложенных ордеров из серии попробуйте изменить кусок кода следующим образом
 if(OrdersTotal()>0)
    {
     Comment("          Balance  ",AccountBalance(),"\n          Equity  ",AccountEquity(),"\n          Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
         {
            bool closed;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           
            if(OrderType()==OP_BUY) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
                  if(closed==true)q=pop;
                  }
            }
           
            if(OrderType()==OP_SELL) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                  if(closed==true)q=pop;
                  }
            }
            Sleep(1000);
            if(OrderType()>1 )
//вставьте вот этот цикл для закрытия отложенников
             for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderDelete(OrderTicket());
                  if(closed==true)q=pop;
                  }  
//здесь конец изменения     
         }
      }
 
proffessor:
Для всех. Если остаются незакрытыми несколько отложенных ордеров из серии попробуйте изменить кусок кода следующим образом
 if(OrdersTotal()>0)
    {
     Comment("          Balance  ",AccountBalance(),"\n          Equity  ",AccountEquity(),"\n          Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
         {
            bool closed;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           
            if(OrderType()==OP_BUY) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
                  if(closed==true)q=pop;
                  }
            }
           
            if(OrderType()==OP_SELL) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                  if(closed==true)q=pop;
                  }
            }
            Sleep(1000);
            if(OrderType()>1 )
//вставьте вот этот цикл для закрытия отложенников
             for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderDelete(OrderTicket());
                  if(closed==true)q=pop;
                  }  
//здесь конец изменения     
         }
      }

еще если б объяснили как это зделать ) подскажите пожалуйста
 
karmeno:
proffessor:
Для всех. Если остаются незакрытыми несколько отложенных ордеров из серии попробуйте изменить кусок кода следующим образом
 if(OrdersTotal()>0)
    {
     Comment("          Balance  ",AccountBalance(),"\n          Equity  ",AccountEquity(),"\n          Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
         {
            bool closed;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           
            if(OrderType()==OP_BUY) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
                  if(closed==true)q=pop;
                  }
            }
           
            if(OrderType()==OP_SELL) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                  if(closed==true)q=pop;
                  }
            }
            Sleep(1000);
            if(OrderType()>1 )
//вставьте вот этот цикл для закрытия отложенников
             for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderDelete(OrderTicket());
                  if(closed==true)q=pop;
                  }  
//здесь конец изменения     
         }
      }

еще если б объяснили как это зделать ) подскажите пожалуйста


Правый клик по советнику в окне Избранные, Изменить, открывает окно с кодом - заменяете нужный кусок - он выделен комментариями // // Жмете F5, если всё нормально то в нижнем окне под кодом ошибок будет 0. Всё...... А на будущее - Справка, или в ветку для начинающих форума.....

 
Уважаемый proffessor, и все таки как советник заставить закрывать все сделки, в т.ч. и лок. А то получается, если позиция в локе по достижении профита закрывается только прибыльная сделка, а убыточная продолжает наращивать убыток. Спасибо
 
sergei19741:
Уважаемый proffessor, и все таки как советник заставить закрывать все сделки, в т.ч. и лок. А то получается, если позиция в локе по достижении профита закрывается только прибыльная сделка, а убыточная продолжает наращивать убыток. Спасибо

Сменить диллинговый центр..... У меня так тоже бывает, но редко... Если торговать на азиатской сессии, практически никогда нет проблем.
 
proffessor:
sergei19741:
Уважаемый proffessor, и все таки как советник заставить закрывать все сделки, в т.ч. и лок. А то получается, если позиция в локе по достижении профита закрывается только прибыльная сделка, а убыточная продолжает наращивать убыток. Спасибо

Сменить диллинговый центр..... У меня так тоже бывает, но редко... Если торговать на азиатской сессии, практически никогда нет проблем.

А в коде нельзя прописать устоновку тейков или еще лучше трейлинг, или и то и другое )), а в каком Вы дилингцентре? PS Спасибо за быстрый ответ
 
proffessor:
karmeno:
proffessor:
Для всех. Если остаются незакрытыми несколько отложенных ордеров из серии попробуйте изменить кусок кода следующим образом
 if(OrdersTotal()>0)
    {
     Comment("          Balance  ",AccountBalance(),"\n          Equity  ",AccountEquity(),"\n          Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
         {
            bool closed;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           
            if(OrderType()==OP_BUY) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
                  if(closed==true)q=pop;
                  }
            }
           
            if(OrderType()==OP_SELL) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                  if(closed==true)q=pop;
                  }
            }
            Sleep(1000);
            if(OrderType()>1 )
//вставьте вот этот цикл для закрытия отложенников
             for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderDelete(OrderTicket());
                  if(closed==true)q=pop;
                  }  
//здесь конец изменения     
         }
      }

еще если б объяснили как это зделать ) подскажите пожалуйста


Правый клик по советнику в окне Избранные, Изменить, открывает окно с кодом - заменяете нужный кусок - он выделен комментариями // // Жмете F5, если всё нормально то в нижнем окне под кодом ошибок будет 0. Всё...... А на будущее - Справка, или в ветку для начинающих форума.....


пишет отказано в доступе ответе пожалуйста

 
proffessor:
sergei19741:
Уважаемый proffessor, и все таки как советник заставить закрывать все сделки, в т.ч. и лок. А то получается, если позиция в локе по достижении профита закрывается только прибыльная сделка, а убыточная продолжает наращивать убыток. Спасибо

Сменить диллинговый центр..... У меня так тоже бывает, но редко... Если торговать на азиатской сессии, практически никогда нет проблем.

Тестил на нескольких ДЦ. Проблема в закрытии рабочих ордеров на всех. Отложки удаляются без проблем.

В целом неплохая рабочая стратегия.

Требует большого депо для прохода трендовых, безоткатных участков. Примерно 3000 - 5000 для 0.01 лота.

Пожелания

1. Неплохо было бы сразу ставить ТР, а потом его модифицировать в зависимости от ситуации.(отпадет проблема с закрытием рабочих ордеров)

2. Задействовать магик. Чтоб работал только со своими ордерами. (работа на два и более окон)

3. Возможность ставить ордера только на продажу или только на покупку.(например в одном окне только покупаем, во втором только продаем)

4. Движение сетки за ценой. (т.н. ползучка. Например, тренд вверх, В одном окне ордера отрабатывают selllimit, во втором buylimit ползет за ценой вниз)

 

Axlamon:


proffessor:
sergei19741:
Уважаемый proffessor, и все таки как советник заставить закрывать все сделки, в т.ч. и лок. А то получается, если позиция в локе по достижении профита закрывается только прибыльная сделка, а убыточная продолжает наращивать убыток. Спасибо

Сменить диллинговый центр..... У меня так тоже бывает, но редко... Если торговать на азиатской сессии, практически никогда нет проблем.

Тестил на нескольких ДЦ. Проблема в закрытии рабочих ордеров на всех. Отложки удаляются без проблем.

В целом неплохая рабочая стратегия.

Требует большого депо для прохода трендовых, безоткатных участков. Примерно 3000 - 5000 для 0.01 лота.

Пожелания

1. Неплохо было бы сразу ставить ТР, а потом его модифицировать в зависимости от ситуации.(отпадет проблема с закрытием рабочих ордеров)

2. Задействовать магик. Чтоб работал только со своими ордерами. (работа на два и более окон)

3. Возможность ставить ордера только на продажу или только на покупку.(например в одном окне только покупаем, во втором только продаем)

4. Движение сетки за ценой. (т.н. ползучка. Например, тренд вверх, В одном окне ордера отрабатывают selllimit, во втором buylimit ползет за ценой вниз)




Сейчас доделываю полуавтомат-автомат по данной стратегии.

Алгоритм будет следующий: первый ордер, поставленный с рынка тралится.

Если вошли в лок или в обратный тренд (возможность поставить обратный стоповый ордер с доливкой), то сразу ставятся SL и TP на уровне безубытка, или заданной прибыли в пунктах. Данный уровень изменяется, как только зацеплен следующий отложенник. Тралить всю пачку ордеров нет смысла - ДЦ просто не даст часто модифицировать большое количество ордеров.

На полуавтомате - возможность самому выбирать что ставить (buy или sell, а также стоповую либо лимитную сетку).

Таким образом решаем сразу две проблемы:

1) закрытие всех ордеров происходит по SL или TP, т.е. на дилцентр можно и наехать, если что.

2) возможность самому выбирать когда входить в рынок и какой тип сетки ставить

Причина обращения: