Из этого фрагмента ничего не видно. Возможно, Вы пытаетесь установить
стоп-лосс для лонгов выше рынка, а для шортов - ниже. Функция
CheckStopLoss в этом случае ошибки не обнаружит и стоп не изменит.
Better писал (а):
Из этого фрагмента ничего не видно. Возможно, Вы пытаетесь установить стоп-лосс для лонгов выше рынка, а для шортов - ниже. Функция CheckStopLoss в этом случае ошибки не обнаружит и стоп не изменит.
Вот функция, которая вызывает ранее упомянутую:Из этого фрагмента ничего не видно. Возможно, Вы пытаетесь установить стоп-лосс для лонгов выше рынка, а для шортов - ниже. Функция CheckStopLoss в этом случае ошибки не обнаружит и стоп не изменит.
int Deel(int iAct) { if(iAct != OP_SELL && iAct != OP_BUY) { Print("u_turn_breader \'Deel\' function: Error! Wrong param ", iAct, "."); return(FEED_ERROR); } RefreshRates(); string strSymbol = TextSymbol(utOrderInstrIndex()); double dPrice = CheckOrderPrice(utOrderPrice(), strSymbol, iAct); double dStop = CheckStopLoss(strSymbol, dPrice, utOrderStop(), iAct); double dProfit = NormalizeDouble(utOrderPrft(), MarketInfo(strSymbol, MODE_DIGITS)); int iMagic = utOrderMagic(); int iResult = OrderSend(strSymbol, iAct, DEEL_LOTS, dPrice, DEEL_SLIPPAGE, dStop, dProfit, "u-turn order #" + DoubleToStr(iMagic, 0), iMagic, 0, Yellow); if(iResult == -1) { int iError = GetLastError(); utSetOrderId(iResult, iError); Print("\'Deel\': Error! OrderSend(", strSymbol, ", ", TextOrderAction(iAct), ", ", DEEL_LOTS, ", ", dPrice, ", ", DEEL_SLIPPAGE ,", ", dStop, " , ", dProfit, ", u-turn order #", iMagic, ", 0 , Yellow) function fail! - ", TextMqlOrderError(iError), " (", iError, ")."); } else { utSetOrderId(iResult, 0); iResult = THREAD_SUCCESS; } return(iResult); }
Работает она далеко не всегда. Не могу привести здесь весь код, но точно уверен, что в контексте не может возникнуть такой путаницы, да и вывод сообщения об ошибке подтверждает правильность выбранных цен. По-вашему функция OrderSend всегда работает корректно?
Сейчас только получил сообщение об ошибке:
OrderSend(EURUSD, Sell, 1, 1.2602, 3, 1.262, 1.258, String, 0, Colour) function fail - INVALID STOPS (130).
НАШЕЛ ЖУКА, СПАСИБО ЗА УЧАСТИЕ!
Слишком близкие стопы - есть
Разница м/у текущую цену (Bid или Ask в зависимости от типа ордера) и стоп должна быть хотя на 1 пункт больше чем TickSize.
MarketInfo(Symbol(),MODE_TICKSIZE);
Разница м/у текущую цену (Bid или Ask в зависимости от типа ордера) и стоп должна быть хотя на 1 пункт больше чем TickSize.
Стопы конечно близкие, но допустимые. В первой функции к минимальному стопу добавляется пункт.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Заранее благодарен.