285
double bid =MarketInfo("GBPUSD",MODE_BID); // Запрос значения Bid
double ask =MarketInfo("GBPUSD",MODE_ASK); // Запрос значения Ask
double point =MarketInfo("GBPUSD",MODE_POINT);//Запрос Point
// Открытие BUY
OrderSend("GBPUSD",OP_BUY,0.1,ask,3,bid-15*Point,bid+15*Point);
Alert (GetLastError()); // Сообщение об ошибке
return; // Выход из start()
}
//--------------------------------------------------------------------
При исполнении этого скрипта рассматриваемая ошибка не возникает, поэтому в
результате его исполнения будет выведено соответствующее сообщение: 0 (ноль). Это
значит, что функция GetLastError() вернула значение 0, т.е. при исполнении торгового
приказа клиентским терминалом ошибок не выявлено.
Рассмотрим и некоторые другие наиболее распространённые ошибки. Для этого вернёмся
к идее открытия ордера с помощью скрипта в том окне, в которое присоединён скрипт.
9.1.3.6 Ошибка 129. Неправильная цена
В ряде случаев возникает банальная ошибка - в качестве цены открытия указывается не то
значение двухсторонней котировки. Как известно (см. Требования и ограничения
торговых операций), рыночные ордера Buy открываются ценой Ask. Вот что получится,
если в скрипте mistaken.mq4 ошибочно указать Bid:
//--------------------------------------------------------------------
// mistaken.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------------
int start() // Спец. функция start
{ // Открытие BUY
OrderSend(Symbol(),OP_BUY,0.1,Bid,3,Bid-15*Point,Bid+15*Point);
Alert (GetLastError()); // Сообщение об ошибке
return; // Выход из start()
}
//--------------------------------------------------------------------
Перед отправкой торгового приказа на сервер клиентский терминал проанализирует,
соответствуют ли заявленные значения цены и стоп-приказов допустимым значениям. Во
время этой проверки обнаружится, что заявленная цена открытия ордера является
ошибочной, поэтому торговый приказ не будет отправлен клиентским терминалом для