StopLimit - страница 6

 

Сработка после перерыва по доступной цене, на открытии дневной сессии, следующего дня.
Это сквиз такой, на открытии рынка.
Смущает только почему не по цене bid было исполнение.
Есть подозрение, что котировки стакана в тестере или врут, или котировки кривые. 
Моделирование по реальным тикам выбрано?

В реальной торговле, обычно первые 1-5 минут с открытия рынка, пропускают.
Иначе будут такие сквизы, по первой доступной цене, и волатильность с бешенным спредом.
По этому перед закрытием рынка, к примеру в 23.40 снимай все свои stoplimit заявки.
И разрешай выставление заявок после 10.01 с контролем спреда.

У тебя stoplimit заявка, которая была выставлена вчерашним днём, а на открытии рынка она жахает маркетом, когда нет ликвидности.
Нафига ты limit в 100 тиков задал? Выстави limit в 5 тиков для входа.


 
Dmitry Fedoseev:

Вот потому и делаете странные выводы - от лени. Не мне это надо, а вам, что бы понять, что происходит.

На графике последняя цена 2-го декабря в 23:48. В логах сработка ордеров 3-го в 10. Что это?

Еще раз повторяю, мне это не надо, мне давно всё понятно. Вы действительно не понимаете или прикидываетесь?

На графике 2-го декабря в 23:48 - это не последняя цена, это шкала времени, терминал так устроен ))))))))))))


 
Sergey Chalyshev:

Еще раз повторяю, мне это не надо, мне давно всё понятно. Вы действительно не понимаете или прикидываетесь?

На графике 2-го декабря в 23:48 - это не последняя цена, это шкала времени, терминал так устроен ))))))))))))


Очень глубокосмысленное выражение: 23:48 - это не цена.

Ладно... я пошел... постараюсь больше не вмешиваться в ваши темы.

 
Dmitry Fedoseev:

Очень глубокосмысленное выражение: 23:48 - это не цена.

Ладно... я пошел... постараюсь больше не вмешиваться в ваши темы.

Дмитрий, далеко не уходите и вмешивайтесь по делу ))

Вы иногда помогаете, и лично мне помогли разобраться в некоторых вопросах.

Хотите дам вам логин и пароль от биржевого счета? Только при условии: много не сливать и не менять пароль.

 
Sergey Chalyshev:

Дмитрий, далеко не уходите и вмешивайтесь по делу ))

Вы иногда помогаете, и лично мне помогли разобраться в некоторых вопросах.

Хотите дам вам логин и пароль от биржевого счета? Только при условии: много не сливать и не менять пароль.

Ага. Попробовал бы парочку ордеров и в тестере. 

 
Dmitry Fedoseev:

Ага. Попробовал бы парочку ордеров и в тестере. 

Написал в личку

 
Sergey Chalyshev:

Видимо никто не использует,

ордер открывается по несуществующим ценам:

простенький пример для проверки:

//+------------------------------------------------------------------+
//|                                               StopLimit_Test.mq5 |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;

input int Deviation = 100;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   trade.SetTypeFilling(ORDER_FILLING_RETURN);
   double ticksise=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   if(OrdersTotal()==0)
      trade.OrderOpen(
         _Symbol,                      // символ
         ORDER_TYPE_BUY_STOP_LIMIT,    // тип ордера
         1.0,                          // объем ордера
         tick.ask+Deviation*ticksise,  // цена исполнения
         tick.ask+10*ticksise,         // цена стоплимита
         0,                            // цена stop loss
         0                             // цена take profit
      );
  }
//+------------------------------------------------------------------+

А вот собственно в чем проблема: цена стоплоимита и лимита перепутаны. На самом деле сначала параметр limit_price, а потом price. Поэтому, если ставить бай-стоп-лимит, цена price должна быть выше цены limit_price. Но в коде из цитаты наоборот, первое срабатывание происходит по близкой цене tick.ask+10*ticksise и появляется байлит где-то там наверху (выше рыночной цены) и он сразу срабатывает.

Но в тестере в начале периода тестирования цена идет вниз поэтому проверял со стоплимитом, вот такой код работает нормально:

void OnTick()
  {

   static int x=0;
   
   if(x==1)return;
   
   x=1;
  

   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   trade.SetTypeFilling(ORDER_FILLING_RETURN);
   double ticksise=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   if(OrdersTotal()==0){
      Comment(GetTickCount()," ",ticksise);
      trade.OrderOpen(
         _Symbol,                      // символ
         ORDER_TYPE_SELL_STOP_LIMIT,    // тип ордера
         1.0,                          // объем ордера
         tick.bid-100*ticksise,  // цена исполнения
         tick.bid-1000*ticksise,         // цена стоплимита
         0,                            // цена stop loss
         0                             // цена take profit
      );
   }

  }

после первого срабатывания появляется появляется лимит...





   

 
Dmitry Fedoseev:

А вот собственно в чем проблема: цена стоплоимита и лимита перепутаны. На самом деле сначала параметр limit_price, а потом price. Поэтому, если ставить бай-стоп-лимит, цена price должна быть выше цены limit_price. Но в коде из цитаты наоборот, первое срабатывание происходит по близкой цене tick.ask+10*ticksise и появляется байлит где-то там наверху (выше рыночной цены) и он сразу срабатывает.

Но в тестере в начале периода тестирования цена идет вниз поэтому проверял со стоплимитом, вот такой код работает нормально:

после первого срабатывания появляется появляется лимит...   

У меня в примере ничего не перепутано, BuyLimit  ставится выше Ask-а, и он должен исполняться по Ask-у, а не по цене которая указана в BuyLimit.

Прочитайте всю ветку еще раз, устал объяснять.

Попробуйте просто установить BuyLimit выше Ask-а без StopLimit-a.

Просто замените ORDER_TYPE_BUY_STOP_LIMIT  на  ORDER_TYPE_BUY_LIMIT .

BuyLimit срабатывает адекватно по цене Ask, а в случае с BuyStopLimit неадекватно по цене указанной в BuyLimit.

 
Sergey Chalyshev:

У меня в примере ничего не перепутано, BuyLimit  ставится выше Ask-а, и он должен исполняться по Ask-у, а не по цене которая указана в BuyLimit.

Прочитайте всю ветку еще раз, устал объяснять.

Попробуйте просто установить BuyLimit выше Ask-а без StopLimit-a.

Просто замените ORDER_TYPE_BUY_STOP_LIMIT  на  ORDER_TYPE_BUY_LIMIT .

BuyLimit срабатывает адекватно по цене Ask, а в случае с BuyStopLimit неадекватно по цене указанной в BuyLimit.

Теперь понятно.

 

Стоп-лимитный ордер можно проверить в Тестере и для Форекса. Достаточно задать "Исполнение"= Биржевое.



Проверил buy stop limit так: выставил цену лимитного ордера хуже цены активации. Ордер при активации открылся по рынку (цена аск). Так что, кажется, функционал в Тестере работает.

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