MQL4. Фрагмент, отвечающий за повторные попытки открыть ордерВозможно, что для некоторых людей, разрабатывающих советники на MQL 4, будет полезен следующий фрагмент.
Пускай есть ордер вида
ticket=OrderSend(Symbol(),OP_BUY,lots_buy,MarketInfo(Symbol(),MODE_ASK),

slippage,0.0,0.0,”MartingailExpert”,MagicBuy,0,Blue);
Одер по какой-то причине не открылся сразу, причина не носит фатальный характер и через несколько секунд ордер открылся бы успешно, если бы была предпринята еще одна или несколько попыток.
В начало программы добавляю строки вида
//—-
extern string Parameters_15 =”Число попыток исправить ошибку открытия ордера”;
extern int error_reset = 30;
int kod_error;
int i;

После ордера, который возможно не был открыт с первой попытки, добавляю код
….

ticket=OrderSend(Symbol(),OP_BUY,lots_buy,MarketInfo(Symbol(),MODE_ASK),

slippage,0.0,0.0,”MartingailExpert”,MagicBuy,0,Blue);

//—————————————————————————-
kod_error = GetLastError();
if ((kod_error != 0)&&( ticket<=0))
{
Print(“Не удается открыть ордер по символу “, Symbol(), ” Ошибка “, GetLastError(),” Выполняем еще “, error_reset, “попыток устранить ошибку”);
for (i=1; i<=error_reset; i++) { Sleep(5000); RefreshRates(); ticket=OrderSend(Symbol(),OP_BUY,lots_buy,MarketInfo(Symbol(),MODE_ASK),

slippage,0.0,0.0,”MartingailExpert”,MagicBuy,0,Blue);

if ( ticket>0) {Print(“Ордер “,ticket,” успешно открыт. Попытка “, i); break;}
}
}
if (ticket<=0) Print(“Ордер не был открыт за отведенное число попыток. Ошибка “, GetLastError());
//———————————————————————————-


Красным цветом выделен тот фрагмент, где меняете информацию, записывая ее для вашего ордера. Естественно, что можно было написать более продвинутый код, но для стандартных ситуаций, когда ордер, например, не открывается из-за быстрого изменения цены (реквота), как правило, достаточно и такого простого кода.

Ананченко Игорь Викторович Контактная информация Моб. телефон: +79213201586 ICQ: 361916132 Веб-сайт: http://anantchenko.ru E-mail: igor@anantchenko.ru Вконтакте: http://vkontakte.ru/id8574436 https://mcp.microsoft.com/authenticate/validatemcp.aspx Transcript ID 793398 and the Access Code 9213201586 Microsoft Certification Status: Microsoft Certified IT Professional, Microsoft Certified Technology Specialist, Microsoft Certified Desktop Support Technician, Microsoft Certified Professional, Microsoft Certified Trainer