А также просьба к разработчикам откомментировать правильность кода открытия ордера, хочется чтобы он подождал если контекст занят, обновил котировки если нужно и окрыл ордер железно.
//--------------------------------------------------------------------- // send sell order //--------------------------------------------------------------------- int Sell(double LotSize, int StopLoss, int TakeProfit) { int i, OrderHandle; double sl, tp; // wait for trade to be allowed if trade context is busy for 30 seconds i = 0; while ((i < 300) && !(IsTradeAllowed())) { Sleep(100); i++; } // refresh rates (if delay is bigger than 1/2 sec) if (i > 5) RefreshRates(); // get stop loss/take profit if (StopLoss == 0) sl = 0; else sl = Bid + StopLoss*Point; if (TakeProfit == 0) tp = 0; else tp = Bid - TakeProfit*Point; // send order OrderHandle = OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, sl, tp, "", 0, 0, Green); if (OrderHandle < 0) Alert(ErrorDescription(GetLastError())); return(OrderHandle); }
Ха, по первому вопросу я допер в чем дело - функция Alert возвращает описание всех! произошедших ошибок с момента открытия метатрейдера, нафиг только такое счастье надо непонятно... Как можно сбросить этот список чтобы выдавать описание только последней ошибки?
Ха, по первому вопросу я допер в чем дело - функция Alert возвращает описание всех! произошедших ошибок с момента открытия метатрейдера, нафиг только такое счастье надо непонятно... Как можно сбросить этот список чтобы выдавать описание только последней ошибки?
Окно всплывает с последней ошибкой, а история себе хранится... Там, кстати время пишется ;)
История пусть в журнале хранится а мне нужно просто сообщение о последней ошибке. Как во всех нормальных программах.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
#include <stdlib.mqh>
....
OrderHandle = OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, sl, tp, "", 0, 0, Green);
if (OrderHandle < 0)
Alert(ErrorDescription(GetLastError()));
при неправильном стопе выдавала окно с 14! строками
invalid parameters...
invalid stop loss
invalid stop loss
invalid function parameter value
.... 9 повторений
invalid function parameter value
Как с такими сообщениями об ошибках вообще можно работать??