Отложенный ордер на MQL5
Добрый день, нужна помощь в выставлении лимитированного ордера на покупку по барам. Т.е если брать таймфрэйм D1, то требуется выставить ордер на покупку выше high-я вчерашнего дня.
Прилагаю код. Как правильно описать эту процедуру ?
Вместо Period() надо поставить PERIOD_D1 и полученное значение указать в качестве цены.
Вместо Period() надо поставить PERIOD_D1 и полученное значение указать в качестве цены.
Можете хотя бы написать пример ?
Можете хотя бы написать пример ?
Ну какой пример когда надо заменить всего один параметр?
double high1 = iHigh(Symbol(),PERIOD_D1,1); double low1 = iLow(Symbol(),PERIOD_D1,1); // Создать запрос MqlTradeRequest request = {0}; request.action = TRADE_ACTION_PENDING; request.symbol = Symbol(); request.volume = 0.1; request.price = low1; // или high1 если ставить лимитник на йух request.sl = request.price-500*_Point; request.tp = request.price+100*_Point; request.type = ORDER_TYPE_BUY_LIMIT; // или ORDER_TYPE_SELL_LIMIT request.type_filling = ORDER_FILLING_FOK; request.expiration = ORDER_TIME_DAY; MqlTradeResult result = {0}; if (OrderSend (request,result)) Print ("Ордер успешно отправлен, ошибок нет = ", GetLastError()); else Print ("Не удалось отправить запрос, ошибка = ", GetLastError()); }
Правильность заполнения структуры не проверял.
Отложенный ордер на MQL5
Отложенный ордер на MQL5
Да
Подставьте свои значения и лишнее уберите...
//+------------------------------------------------------------------+ //| Place order | //+------------------------------------------------------------------+ void COrder::Place(const double price, const double volume, const bool buy_sell) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; ticket = 0; req_id = 0; mem_magic = magic_storage + 1; check_count = 0; if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number; //--- Fill structure request.action = TRADE_ACTION_PENDING; request.magic = mem_magic; 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(OrderSendAsync(request, result) == true) { if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE)) { req_id = result.request_id; magic_storage = mem_magic; state = ORD_DO_SET; mem_time = GetMicrosecondCount(); mem_start_time = TimeCurrent(); SetTransCount(); } else { mem_magic = 0; mem_time = 0; mem_start_time = 0; CheckError(result.retcode, "Place: Ордер не установлен! Причина: ", order_status, ticket); } } else { mem_magic = 0; mem_time = 0; mem_start_time = 0; CheckError(result.retcode, "Place: Ордер не отослан! Причина: ", order_status, ticket); } }
Если используете OrderSend(), то вместо req_id = result.request_id; нужно ticket = result.order;

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, нужна помощь в выставлении лимитированного ордера на покупку по барам. Т.е если брать таймфрэйм D1, то требуется выставить ордер на покупку выше high-я вчерашнего дня.
Прилагаю код. Как правильно описать эту процедуру ?