← К каталогу
Исходный код · ID 3302

37_exp-timeopenbuy.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Программа представляет собой торгового советника для MetaTrader 4, написанный на языке MQL4. Она предназначена для автоматической работы с отложенными ордерами типа Buy Stop и Sell Stop в соответствии с заданным временем открытия и закрытия.

Советник размещает указанное количество отложенных ордеров в заданном временном окне, контролируя количество активных позиций каждого типа. При необходимости он корректирует уровни стоп-лосса и тейк-профита существующих отложенных ордеров.

Также продукт поддерживает автоматическое закрытие открытых позиций и удаление отложенных ордеров по расписанию. Доступна функция увеличения объёма сделок с каждым последующим ордером с помощью множителя лота. Для идентификации своих ордеров используется магический номер.

Настройки программы

НастройкаОписание
BuyStopOpen Открытие Buy Stop — Включает или отключает размещение отложенных ордеров Buy Stop
SellStopOpen Открытие Sell Stop — Включает или отключает размещение отложенных ордеров Sell Stop
BuyStop_Number Количество Buy Stop — Количество отложенных ордеров Buy Stop, которые необходимо поддерживать
SellStop_Number Количество Sell Stop — Количество отложенных ордеров Sell Stop, которые необходимо поддерживать
Distance Расстояние — Расстояние в пунктах от текущей цены для размещения отложенных ордеров
TPBuyStop Тейк-профит Buy Stop — Уровень тейк-профита для отложенных ордеров Buy Stop
SLBuyStop Стоп-лосс Buy Stop — Уровень стоп-лосса для отложенных ордеров Buy Stop
TPSellStop Тейк-профит Sell Stop — Уровень тейк-профита для отложенных ордеров Sell Stop
SLSellStop Стоп-лосс Sell Stop — Уровень стоп-лосса для отложенных ордеров Sell Stop
CloseAfterOpen Закрытие после открытия — При активации удаляет противоположные отложенные ордера после открытия позиции
Lots Объём лота — Размер лота для торговых операций
Lot_Multiplier Множитель лота — Множитель для увеличения объёма лота с каждым последующим ордером
Slippage Проскальзывание — Максимально допустимое проскальзывание при исполнении ордеров
Magic Магический номер — Магический номер для идентификации ордеров советника
CloseIfNotOpen Удаление если не открыто — При активации удаляет отложенные ордера, если позиции не были открыты к заданному времени
OpenAtTime Открытие по времени — Включает или отключает размещение ордеров по расписанию
TimetoOpen Время открытия — Время для размещения отложенных ордеров (формат ЧЧ:ММ)
CloseAtTime Закрытие по времени — Включает или отключает автоматическое закрытие по расписанию
TimetoClose Время закрытия — Время для автоматического закрытия позиций и удаления ордеров (формат ЧЧ:ММ)
Получить полный код

Поиск по коду файла

/*
   G e n e r a t e d  by ex4-to-mq4 decompiler FREEWARE 4.0.509.5
   Website:  H Tt P : // W w W. meTaQ Uo T es. n E T
   E-mail :  SU P p Ort@m E t aqUo Te s. Net
*/

#property strict

extern bool BuyStopOpen = true;
extern bool SellStopOpen = true;
extern int BuyStop_Number = 5;
extern int SellStop_Number = 5;
extern int Distance = 20;          
extern int TPBuyStop = 0;
extern int SLBuyStop = 0;
extern int TPSellStop = 0;
extern int SLSellStop = 0;
extern bool CloseAfterOpen = false;
extern double Lots = 0.1;
extern double Lot_Multiplier = 1.5;
extern int Slippage = 10;
extern int Magic = 1;
extern bool CloseIfNotOpen = false;
extern bool OpenAtTime = true;
extern string TimetoOpen = "12:30";
extern bool CloseAtTime = true;
extern string TimetoClose = "15:30";
double Gd_152,Gd_1521;
double Gd_160,Gd_1601;
int G_ticket_168;
int G_ticket_172;

int start() {
      // код доступен только после оплаты
   }

int SetOrder(string A_symbol_0, int A_cmd_8, double A_lots_12, double A_price_20, double A_price_28 = 0.0, double A_price_36 = 0.0, int A_magic_44 = 0, int A_datetime_48 = 0, string A_comment_52 = "") {
   color color_60;
   int datetime_64;
   double ask_68;
   double bid_76;
   double point_84;
   int error_92;
   int ticket_100;
   if (A_symbol_0 == "" || A_symbol_0 == "0") A_symbol_0 = Symbol();
   int stoplevel_104 = MarketInfo(A_symbol_0, MODE_STOPLEVEL);
   if (A_datetime_48 > 0 && A_datetime_48 < TimeCurrent()) A_datetime_48 = 0;
   for (int Li_96 = 1; Li_96 <= 1; Li_96++) {
      if ((!IsTesting()) && (!IsExpertEnabled()) || IsStopped()) {
         Print("SetOrder(): Остановка работы функции");
         break;
      }

      RefreshRates();
      datetime_64 = TimeCurrent();
      ticket_100 = OrderSend(A_symbol_0, A_cmd_8, A_lots_12, A_price_20, Slippage, A_price_28, A_price_36, A_comment_52, A_magic_44, A_datetime_48, color_60);
      if (ticket_100 > 0) return (ticket_100);
      error_92 = GetLastError();

         if (ExistOrders(A_symbol_0, A_cmd_8, A_magic_44, datetime_64)) break;
       else {
         point_84 = MarketInfo(A_symbol_0, MODE_POINT);
         ask_68 = MarketInfo(A_symbol_0, MODE_ASK);
         bid_76 = MarketInfo(A_symbol_0, MODE_BID);
         if (ask_68 == 0.0 && bid_76 == 0.0) Comment("SetOrder(): Проверьте в обзоре рынка наличие символа " + A_symbol_0);
         if (error_92 == 130/* INVALID_STOPS */) {
            switch (A_cmd_8) {
            case OP_BUYLIMIT:
               if (A_price_20 > ask_68 - stoplevel_104 * point_84) A_price_20 = ask_68 - stoplevel_104 * point_84;
               if (A_price_28 > A_price_20 - (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 - (stoplevel_104 + 1) * point_84;
               if (!(A_price_36 > 0.0 && A_price_36 < A_price_20 + (stoplevel_104 + 1) * point_84)) break;
               A_price_36 = A_price_20 + (stoplevel_104 + 1) * point_84;
               break;
            case OP_BUYSTOP:
               if (A_price_20 < ask_68 + (stoplevel_104 + 1) * point_84) A_price_20 = ask_68 + (stoplevel_104 + 1) * point_84;
               if (A_price_28 > A_price_20 - (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 - (stoplevel_104 + 1) * point_84;
               if (!(A_price_36 > 0.0 && A_price_36 < A_price_20 + (stoplevel_104 + 1) * point_84)) break;
               A_price_36 = A_price_20 + (stoplevel_104 + 1) * point_84;
               break;
            case OP_SELLLIMIT:
               if (A_price_20 < bid_76 + stoplevel_104 * point_84) A_price_20 = bid_76 + stoplevel_104 * point_84;
               if (A_price_28 > 0.0 && A_price_28 < A_price_20 + (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 + (stoplevel_104 + 1) * point_84;
               if (A_price_36 <= A_price_20 - (stoplevel_104 + 1) * point_84) break;
               A_price_36 = A_price_20 - (stoplevel_104 + 1) * point_84;
               break;
            case OP_SELLSTOP:
               if (A_price_20 > bid_76 - stoplevel_104 * point_84) A_price_20 = bid_76 - stoplevel_104 * point_84;
               if (A_price_28 > 0.0 && A_price_28 < A_price_20 + (stoplevel_104 + 1) * point_84) A_price_28 = A_price_20 + (stoplevel_104 + 1) * point_84;
               if (A_price_36 <= A_price_20 - (stoplevel_104 + 1) * point_84) break;
               A_price_36 = A_price_20 - (stoplevel_104 + 1) * point_84;
            }
            Print("SetOrder(): Скорректированы ценовые уровни");
         }
         if (error_92 == 2/* COMMON_ERROR */ || error_92 == 64/* ACCOUNT_DISABLED */ || error_92 == 65/* INVALID_ACCOUNT */ || error_92 == 133/* TRADE_DISABLED */) break;
         if (error_92 == 4/* SERVER_BUSY */ || error_92 == 131/* INVALID_TRADE_VOLUME */ || error_92 == 132/* MARKET_CLOSED */) {
            Sleep(300000);
            break;
         }
         if (error_92 == 8/* TOO_FREQUENT_REQUESTS */ || error_92 == 141/* TOO_MANY_REQUESTS */) Sleep(100000);
         if (error_92 == 139/* ORDER_LOCKED */ || error_92 == 140/* LONG_POSITIONS_ONLY_ALLOWED */ || error_92 == 148/* TRADE_TOO_MANY_ORDERS */) break;
         if (error_92 == 146/* TRADE_CONTEXT_BUSY */) while (IsTradeContextBusy()) Sleep(11000);
         if (error_92 == 147/* TRADE_EXPIRATION_DENIED */) A_datetime_48 = 0;
         else
            if (error_92 != 135/* PRICE_CHANGED */ && error_92 != 138/* REQUOTE */) Sleep(7700.0);
      }
   }
   return (0);
}

void CPBS() {
   bool is_closed_0;
   color color_4;
   double order_lots_8;
   double price_16;
   double price_24;
   double price_32;
   int error_40;
   if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
      for (int Li_44 = 1; Li_44 <= 1; Li_44++) {
         if (!IsTesting() && (!IsExpertEnabled()) || IsStopped()) break;
         while (!IsTradeAllowed()) Sleep(5000);
         RefreshRates();
         price_16 = MarketInfo(OrderSymbol(), MODE_ASK);
         price_24 = MarketInfo(OrderSymbol(), MODE_BID);
         if (OrderType() == OP_BUY) price_32 = price_24;
         else price_32 = price_16;
         order_lots_8 = OrderLots();
         is_closed_0 = OrderClose(OrderTicket(), order_lots_8, price_32, Slippag

Показано первые 50% кода (символов: 11267)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 126,70₽ ≈ $13.77