MQL4 (язык программирования Metatrader 4) OrderSend(), тейк-профит и переменные стоп-лосс

if (Ask > highest_price) { 

double takeprofit=NormalizeDouble(Bid+15*Point,Digits); 

double stoploss=NormalizeDouble(Bid-5*Point,Digits); 

int ticket=OrderSend(Symbol(),OP_BUY,0.1, Ask,0,stoploss,takeprofit,"My order",0,0,clrGreen); }

В настоящее время это мой код. Я хочу использовать пользовательский стоп-лосс и тейк-профит для 5 и 15 пунктов соответственно. Но я получаю код ошибки 130, который связан с этим. Это только позволяет мне использовать MarketInfo() (например, минимальное требуемое расстояние от цены, которая фактически равна 0 для EURUSD), чтобы указывать уровни тейк-профита и стоп-лосса, которые вообще не работают с моей стратегией.

Я буду признателен за ваше мнение по этому поводу.

1 ответ

Прежде всего, 15 пунктов не обязательно означает 15 пунктов. Если у вашего брокера 5-значные котировки, 15*Point будет означать 1,5 пипса, что может быть слишком коротким по сравнению с текущей ценой. Далее всегда легче напечатать значения, прежде чем спрашивать нас. Поэтому постарайтесь увидеть все значения (Bid, Ask, Stop Loss, Take Profit), и проблема может быть легко видна. Последнее предложение заключается в том, что ваш брокер является ECN-брокером или ведет себя как тот. В таком случае попробуйте int ticket=OrderSend(_Symbol,OP_BUY,0.1,Ask,10/*slippage in Point*/,0,0,NULL) и если хорошо, то измените его, разместив стоп-лосс и тейк-профит

Другие вопросы по тегам