Собственно сабж, вот код:
Понять не могу почему выходит ошибка OrderCheck. Этот код я скопировал из чужого работающего эксперта, и чуть чуть поменял (Посылается 3 заявки) присвоение параметров осталось прежним.
Поиск рулит.
Из чужого - верю. Из работающего - не верю.
Вы случайно при чуть-чуть изменении работающего кода не удалили обнуление структур?
Поиск рулит.
Из чужого - верю. Из работающего - не верю.
Вы случайно при чуть-чуть изменении работающего кода не удалили обнуление структур?
Ну, Вы забыли про остальные поля.
MqlTradeRequest request = {0}; MqlTradeResult result = {0}; //--- Fill structure request.magic = magic; request.symbol = _Symbol; request.volume = volume; request.type_filling = ORDER_FILLING_IOC; request.type_time = ORDER_TIME_DAY; if ( price == 0 ) { request.action = TRADE_ACTION_DEAL; request.comment = "Рыночный ордер..."; //--- if ( buy_sell ) { request.type = ORDER_TYPE_BUY; } else { request.type = ORDER_TYPE_SELL; } } else { request.action = TRADE_ACTION_PENDING; request.price = price; request.comment = "Лимитный ордер..."; //--- if (buy_sell) { request.type = ORDER_TYPE_BUY_LIMIT; } else { request.type = ORDER_TYPE_SELL_LIMIT; } }
Собственно сабж, вот код:
Понять не могу почему выходит ошибка OrderCheck. Этот код я скопировал из чужого работающего эксперта, и чуть чуть поменял (Посылается 3 заявки) присвоение параметров осталось прежним.
Лот какого размера?
У Вас округление до 1 цифры после запятой req.volume = NormalizeDouble(Lot,1);
Если Lot =0.01, то req.volume будет 0.0
Возможно это тоже причина...
Лот какого размера?
У Вас округление до 1 цифры после запятой req.volume = NormalizeDouble(Lot,1);
Если Lot =0.01, то req.volume будет 0.0
Возможно это тоже причина...
Лот указан верно, а точнее размером 0,1 в req.volume содержит именно это значение.
Ну, Вы забыли про остальные поля.
Все поля были заполнены верно, судя по справке необходимые поля заполнялись верно их нужно 5, вот вырезка из справочника по типу MqlTradeRequest:
Market Execution
Торговый ордер на открытие позиции в режиме Market Execution (режим исполнения торговых приказов по рынку). Требуется указание 5 полей:
- action
- symbol
- volume
- type
- type_filling
Можно также задать значения полей magic и comment.
А проблема решилась - т.к. я не инициализировал переменные request и result должным образом, как вы показали в своем коде:
MqlTradeRequest request = {0}; MqlTradeResult result = {0};Очевидно, что в них попадал "мусор". Спасибо за помощь!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Собственно сабж, вот код:
Понять не могу почему выходит ошибка OrderCheck. Этот код я скопировал из чужого работающего эксперта, и чуть чуть поменял (Посылается 3 заявки) присвоение параметров осталось прежним.