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)
и если хорошо, то измените его, разместив стоп-лосс и тейк-профит