Всем привет, осваиваю фортс и в связи с этим вопрос. Есть брокер О
пытаюсь открыть сделку SELLIMIT - руками все ок. а вот советником никак.
код :
возвращает код 10008 но в терминале ордера нет :-)
в журнале также пишет PLACED
при чем если размещать СЕЛЛИТИСТОП то все ок.
в чем может быть трабл?
if(result.retcode==TRADE_RETCODE_DONE)
TRADE_RETCODE_DONE это для ФОРЕКС, а для ФОРТС TRADE_RETCODE_PLACED
И ещё. Какой Вы хотите отослать ордер?
Рыночный или отложенный?
TRADE_RETCODE_DONE это для ФОРЕКС, а для ФОРТС TRADE_RETCODE_PLACED
я так опнял ордер сразу снимается при ФОК
Рыночный или лимитный:
//+------------------------------------------------------------------+ //| Expert set order function | //+------------------------------------------------------------------+ void SetOrder( const string aSymbol, ulong &order_ticket, const double price, const double volume, const bool buy_sell ) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; //--- Fill structure request.magic = 987654321; request.symbol = aSymbol; 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; } } //--- Send order if ( OrderSend( request, result ) ) { if ( result.retcode == TRADE_RETCODE_PLACED ) { order_ticket = result.order; } } else { Print( "Установка ордера не выполнена! ", aSymbol, "; Объём = ", volume, "; Код возврата = ", result.retcode); } }
Отложенный:
//+------------------------------------------------------------------+ //| Place order | //+------------------------------------------------------------------+ void PlaceOrder( ulong &ticket, const double price, const double volume, const bool buy_sell ) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; ticket = 0; //--- Fill structure request.action = TRADE_ACTION_PENDING; request.magic = 987654321; request.symbol = a_symbol; request.volume = volume; request.price = price; if ( buy_sell ) { request.type = ORDER_TYPE_BUY_LIMIT; } else { request.type = ORDER_TYPE_SELL_LIMIT; } request.comment = "Отложенный ордер..."; request.type_filling = ORDER_FILLING_RETURN; request.type_time = ORDER_TIME_DAY; //--- Send order if ( OrderSend( request, result ) ) { if ( result.retcode == TRADE_RETCODE_PLACED ) { ticket = result.order; } } else { Print( "Ордер не установлен! ", a_symbol, ", Цена = ", price, "; Объём = ", volume, "; Код возврата = ", result.retcode ); } }
спасибо, более менее понятно, две функции у Вас одинаковые по сути, если сделать выбор типа исполнения.
только начал изучать фортс. буду копать дальше.
спасибо, более менее понятно, две функции у Вас одинаковые по сути, если сделать выбор типа исполнения.
только начал изучать фортс. буду копать дальше.
Добро пожаловать на ФОРТС!
Будут любые вопросы - обращайтесь.
Спасибо, я так понял это целая ветка "приколов"
я просто хочу сделать панель для фортс на основе своей, вот пытаюсь, но срабатывает отложенник не всегда
я так понял есть свои нюансы
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет, осваиваю фортс и в связи с этим вопрос. Есть брокер О
пытаюсь открыть сделку SELLIMIT - руками все ок. а вот советником никак.
код :
возвращает код 10008 но в терминале ордера нет :-)
в журнале также пишет PLACED
при чем если размещать СЕЛЛИТИСТОП то все ок.
в чем может быть трабл?