А также просьба к разработчикам откомментировать правильность кода открытия ордера, хочется чтобы он подождал если контекст занят, обновил котировки если нужно и окрыл ордер железно.
//---------------------------------------------------------------------
// 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
Как с такими сообщениями об ошибках вообще можно работать??