//-------------------------------------------------------------------- // openbuy.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //--------------------------------------------------------------- 1 -- int start() // Спец.функция start { int Dist_SL =10; // Заданный SL (pt) int Dist_TP =3; // Заданный TP (pt) double Prots=0.35; // Процент своб. ср. string Symb=Symbol(); // Финанс. инструмент //--------------------------------------------------------------- 2 -- while(true) // Цикл открытия орд. { int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Мин. дистанция double Min_Lot=MarketInfo(Symb,MODE_MINLOT);// Мин. стоим. лотов double Step =MarketInfo(Symb,MODE_LOTSTEP);//Шаг изменен лотов double Free =AccountFreeMargin(); // Свободн средства double One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);//Стоим.лота //--------------------------------------------------------- 3 -- double Lot=MathFloor(Free*Prots/One_Lot/Step)*Step;// Лоты if (Lot0) // Получилось :) { Alert ("Открыт ордер Buy ",ticket); break; // Выход из цикла } //--------------------------------------------------------- 8 -- int Error=GetLastError(); // Не получилось :( switch(Error) // Преодолимые ошибки { case 135:Alert("Цена изменилась. Пробуем ещё раз.."); RefreshRates(); // Обновим данные continue; // На след. итерацию case 136:Alert("Нет цен. Ждём новый тик.."); while(RefreshRates()==false) // До нового тика Sleep(1); // Задержка в цикле continue; // На след. итерацию case 146:Alert("Подсистема торговли занята. Пробуем ещё.."); Sleep(500); // Простое решение RefreshRates(); // Обновим данные continue; // На след. итерацию } switch(Error) // Критические ошибки { case 2 : Alert("Общая ошибка."); break; // Выход из switch case 5 : Alert("Старая версия клиентского терминала."); break; // Выход из switch case 64: Alert("Счет заблокирован."); break; // Выход из switch case 133:Alert("Торговля запрещена"); break; // Выход из switch default: Alert("Возникла ошибка ",Error);// Другие варианты } break; // Выход из цикла } //--------------------------------------------------------------- 9 -- Alert ("Скрипт закончил работу -----------------------------"); return; // Выход из start() } //-------------------------------------------------------------- 10 --