Вопрос для тех кто разбирается в написании советников!

 
Я торгую CFD, как известно у CFD есть цена Last и еще бид и аск, так вот открытие отложеных ордеров Лимит происходит по цене Last и срабатывание тейк профита срабатывает по ней. но вот со стоп лосом и трейленом проблема они срабатывают по другой схеме, когда цена last косается стоплоса то брокер закрывает ордер по той цене которая была в этот момент на CFD со знаком #I и всегда происходит большая разница даже если только что у вас был плюс то закрытие происходит с минусом или с меньшим плюсом минимум это 15 пп. Основной мой вопрос таков можно бы было написать советник который открывал бы по цене Last а стоп и тейк срабатывал обращаясь к ценам указаным в контракте с #I ну например цена ласт еще не достигла тейк профита а бид или аск уже там и чтобы он закрыл четко если это селл то по аск когда аск достигнет указаной прибыли! Извените если не все понятно просто описать сразу все сложно, но кого заинтересует эта тема пишите вместе разберем и по моему мнению получится прибыльная штука если это возможно так как я торговал на CFD тогда когда все ордера срабатывали только по цене ласт прибыль была колосальная!
 

Думаю, что это нетрудно сделать.

Я реализовал ситуацию так -

В глобальные переменные -

extern string    Tiker = "FTSEH9#I";
extern int      Max_Spread = 25;// для дакса и футси
double Ask_Tiker, Bid_Tiker, Spread,delta_ASK ,delta_BID ;

Далее, в ф-ю СТАРТ

//--------Проверяем размер спреда---------------
Ask_Tiker = MarketInfo(Tiker,MODE_ASK);
Bid_Tiker = MarketInfo(Tiker,MODE_BID);
Spread = (Ask_Tiker - Bid_Tiker); // размер спреда
delta_ASK = (Ask_Tiker -Ask) ;//расхождение цены при покупке
delta_BID = (Bid - Bid_Tiker) ;//расэождение цены при продаже

Ну а далее, сами соображайте - какие предельные расхождния вам подходят.

Если торгуемый инсирумент достаточно волатилен (ликвиден), то со стопами лучше не заморачиваться.

А выставлять их как обычно. Без всяких тикеров.

Я например, чтобы избежать неприятных сюрпризов ограничиваю лишь размер спреда и расхождения.

if ( // задаем условия :
     (Spread <= Max_Spread * Point)// размер спреда
      &&  (delta_BID/Point <=Max_Spread ) //расхождение с тикером
      &&  (delta_ASK/Point<= Max_Spread)//расхождение с тикером
        )
//если условия соответствуют заданным, торговля разрешена 
      Trade=true;       else Trade=false;

И еще. Строго следите, чтобы в окне ОБЗОР РЫНКА присутствовал тикер торгуемого инструмента.

И чтобы этот тикер совпадал с названием во внешних параметрах.

Иначе эксперт не откроет сделки.