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

Универсал_1.70

o╠В┬б┬┐o╠Бn╠Гa├Яa╠Б┬╜_1.70.mq4
Вы автор или правообладатель?

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

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

О программе

«Универсал» — торговый советник для MetaTrader 4, управляющий рыночными и отложенными ордерами (BuyStop, SellStop, BuyLimit, SellLimit). Советник позволяет настраивать отдельные параметры Take Profit, Stop Loss, Trailing Stop и шага для каждого типа ордеров, а также ограничивать максимальное количество ордеров одного типа.

Продукт поддерживает привязку к заданному времени торговли с возможностью включения/отключения покупок и продаж в указанные часы. Также реализован мониторинг баланса счёта: при достижении заданного процентного изменения глобального Take Profit или Stop Loss советник может закрыть все позиции.

Дополнительно предусмотрены пипсовый учёт прибыли и убытка, звуковые уведомления об установке ордеров и срабатывании Trailing Stop, а также алерты в окно сообщений.

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

НастройкаОписание
t1 Раздел 1 — Текстовый параметр (заголовок раздела).
MAGIC Магический номер — Магический номер ордеров. У ордеров с открытым внешним Magic=0.
Lot Лот — Объём лота для установки ордера.
t2 Раздел 2 — Текстовый параметр (заголовок раздела).
WaitClose Ожидать закрытия ордера — Если true, новый ордер выставляется только после закрытия предыдущего. Иначе новый ордер добавляется поверх отложенного.
Ustan_BuyStop Устанавливать Buy Stop — Разрешает установку Buy Stop, если такого ордера нет в стакане.
Ustan_SellLimit Устанавливать Sell Limit — Разрешает установку Sell Limit, если такого ордера нет в стакане.
Ustan_SellStop Устанавливать Sell Stop — Разрешает установку Sell Stop, если такого ордера нет в стакане.
Ustan_BuyLimit Устанавливать Buy Limit — Разрешает установку Buy Limit, если такого ордера нет в стакане.
t3 Раздел 3 — Текстовый параметр (заголовок раздела).
ryn_MaxOrderov Макс. кол-во рыночных ордеров — Максимальное количество рыночных ордеров одного типа.
ryn_TakeProfit Тейк-Профит рыночных ордеров — Take Profit для рыночных ордеров в пунктах.
ryn_StopLoss Стоп-Лосс рыночных ордеров — Stop Loss для рыночных ордеров в пунктах.
ryn_TrStop Trailing Stop рыночных ордеров — Расстояние до Trailing Stop для рыночных ордеров в пунктах. 0 — Trailing отключён.
ryn_TrStep Шаг Trailing рыночных ордеров — Шаг Trailing Stop для рыночных ордеров в пунктах.
WaitProfit Ожидать прибыли для Trailing — Если true, Trailing Start начинается только после достижения прибылью значения Trailing Stop.
t4 Раздел 4 — Текстовый параметр (заголовок раздела).
st_Step Шаг стоп-ордеров (пункты) — Расстояние в пунктах от текущей цены до уровня установки стоп-ордера.
st_TakeProfit Тейк-Профит стоп-ордеров — Take Profit для стоп-ордеров в пунктах.
st_StopLoss Стоп-Лосс стоп-ордеров — Stop Loss для стоп-ордеров в пунктах.
st_TrStop Trailing Stop стоп-ордеров — Расстояние до Trailing Stop для стоп-ордеров в пунктах. 0 — Trailing отключён.
st_TrStep Шаг Trailing стоп-ордеров — Шаг Trailing Stop для стоп-ордеров в пунктах.
t5 Раздел 5 — Текстовый параметр (заголовок раздела).
lim_Step Шаг лимитных ордеров (пункты) — Расстояние в пунктах от текущей цены до уровня установки лимитного ордера.
lim_TakeProfit Тейк-Профит лимитных ордеров — Take Profit для лимитных ордеров в пунктах.
lim_StopLoss Стоп-Лосс лимитных ордеров — Stop Loss для лимитных ордеров в пунктах.
lim_TrStop Trailing Stop лимитных ордеров — Расстояние до Trailing Stop для лимитных ордеров в пунктах. 0 — Trailing отключён.
lim_TrStep Шаг Trailing лимитных ордеров — Шаг Trailing Stop для лимитных ордеров в пунктах.
t6 Раздел 6 — Текстовый параметр (заголовок раздела).
UseTime Использовать время — Включает/отключает привязку к заданному времени торговли.
Hhour Час совпадения — Час совпадения для привязки к заданному времени торговли.
Mminute Минута совпадения — Минута совпадения для привязки к заданному времени торговли.
TIME_Buy Покупка по времени — Включает/отключает покупку в заданное время.
TIME_Sell Продажа по времени — Включает/отключает продажу в заданное время.
TIME_BuyStop Buy Stop по времени — Включает/отключает установку Buy Stop в заданное время.
TIME_SellLimit Sell Limit по времени — Включает/отключает установку Sell Limit в заданное время.
TIME_SellStop Sell Stop по времени — Включает/отключает установку Sell Stop в заданное время.
TIME_BuyLimit Buy Limit по времени — Включает/отключает установку Buy Limit в заданное время.
t7 Раздел 7 — Текстовый параметр (заголовок раздела).
PipsProfit Прибыль в пипсах — Величина прибыли в пунктах при пипсовом учёте.
PipsLoss Убыток в пипсах — Величина убытка в пунктах при пипсовом учёте.
t8 Раздел 8 — Текстовый параметр (заголовок раздела).
UseGlobalLevels Использовать глобальные уровни — Включает/отключает глобальные уровни Take Profit и Stop Loss на основе баланса.
Global_TakeProfit Глобальный Тейк-Профит (%) — Глобальный Take Profit в процентах от баланса счёта.
Global_StopLoss Глобальный Стоп-Лосс (%) — Глобальный Stop Loss в процентах от баланса счёта.
UseAlert Использовать алерты — Включает отправку алертов в окно сообщений.
ryn_CloseAll_Profit Закрыть все по прибыли — При достижении глобальной прибыли закрывает все позиции по всем парам.
ryn_CloseAll_Loss Закрыть все по убытку — При достижении глобального убытка закрывает все позиции по всем парам.
DeleteOtlozh Удалять отложенные ордера — Включает удаление отложенных ордеров при достижении глобального уровня Take Profit.
t9 Раздел 9 — Текстовый параметр (заголовок раздела).
Proskalz Проскальзывание (пункты) — Расстояние в пунктах для проверки и управления ордерами.
UseOrderSound Звук при установке ордера — Включает звуковой сигнал при установке ордера.
UseTrailingSound Звук при Trailing — Включает звуковой сигнал при срабатывании Trailing Stop.
NameOrderSound Имя звукового файла ордера — Имя звукового файла для уведомления об установке ордера.
NameTrallingSound Имя звукового файла Trailing — Имя звукового файла для уведомления о Trailing Stop.
Получить полный код

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

#include <Errors.mqh>
#include <Bazovie.mqh>

extern string   t1="------ У открытых вручную MAGIC = 0 ------";
extern int      MAGIC=0;//У ордеров открытых вручную MAGIC=0 
extern double   Lot=0.2;//Лот для установки ордера

extern string   t2="--- Выключатели отложенных ---";
extern bool     WaitClose=true;//Если true, то отложенный встанет только тогда, когда закроется рыночный

extern bool     Ustan_BuyStop=true;   //можно ли ставиь Бай-Cтоп если в рынке такого у нас нет
extern bool     Ustan_SellLimit=false; //можно ли ставиь Cелл-Лимит если в рынке такого у нас нет
extern bool     Ustan_SellStop=true;  //можно ли ставиь Cелл-Cстоп если в рынке такого у нас нет
extern bool     Ustan_BuyLimit=false;  //можно ли ставиь Бай-Лимит если в рынке такого у нас нет

extern string   t3="--- Параметры рыночных ---";
extern int      ryn_MaxOrderov=2;//ограничение максимального числа рыночных ордеров одного типа
extern int      ryn_TakeProfit=200; //Тейк-Профит  рыночного ордера 
extern int      ryn_StopLoss=100; //Стоп-Лосс  рыночного ордера
extern int      ryn_TrStop=100; //Трейлинг-Стоп рыночного ордера. Если = 0 то тарла нет
extern int      ryn_TrStep=10; //Шаг трала рыночного ордера
extern bool     WaitProfit = true; // Если true, то ждать профит = значению TrailingStop и только потом начинать тралить

extern string   t4="--- Параметры стоповых ---";
extern int      st_Step=50;//Расстояние в пунктах от уровня текущей цены до уорвня установки стопового ордера
extern int      st_TakeProfit=200; //Тейк-Профит  стоповых ордеров
extern int      st_StopLoss=100; //Стоп-Лосс  стоповых ордеров
extern int      st_TrStop=0; //Трейлинг-Стоп стоповых ордеров. Если = 0 то тарла нет и st_TrStep не важен
extern int      st_TrStep=3; //Шаг трала стоповых ордеров

extern string   t5="--- Параметры лимитных ---";
extern int      lim_Step=50;//Расстояние в пунктах от уровня текущей цены до уорвня установки лимитного ордера
extern int      lim_TakeProfit=200; //Тейк-Профит лимитных ордеров 
extern int      lim_StopLoss=100; //Стоп-Лосс лимитных ордеров
extern int      lim_TrStop=0; //Трейлинг-Стоп лимитных ордеров. Если = 0 то тарла нет и lim_TrStep не важен
extern int      lim_TrStep=3; //Шаг трейлинга лимитных ордеров

extern string   t6="--- Только для работы по времени ---";
extern bool     UseTime=true;//вкл/выкл привязку к указанноу времени. Если=false, то все таймовые параметры не важны, 

extern int      Hhour=23;//терминальные часы совершения сделки
extern int      Mminute=59;//терминальные минуты совершения сделки
extern bool     TIME_Buy=false;//вкл/выкл открываться ли на покупку в заданное время
extern bool     TIME_Sell=false;//вкл/выкл открываться ли на продажу
extern bool     TIME_BuyStop=true;    //можно ли установить БайCтоп в заданное время
extern bool     TIME_SellLimit=false; //можно ли установить CеллЛимит в заданное время
extern bool     TIME_SellStop=true;   //можно ли установить CеллCстоп в заданное время
extern bool     TIME_BuyLimit=false;  //можно ли установить БайЛимит в заданное время

extern string   t7="--- Пипсовка ---";
extern int      PipsProfit=0; //прибыль при пипсовке можно ставить 1, 2, 3, ...
extern int      PipsLoss=0; //убыток при пипсовке можно ставить 1, 2, 3, ...

extern string   t8="--- Глобальные уровни ---";
extern bool     UseGlobalLevels=true;//отловить увеличение и уменьшение депозита заданное число процентов

extern double   Global_TakeProfit=2.0;//Глобальный Тейк-Профит (зада¸тся в процентах)
extern double   Global_StopLoss=2.0;//Глобальный Стоп-Лосс (зада¸тся в процентах)
extern bool     UseAlert=true;//использовать сообщение в окне алертов
extern bool     ryn_CloseAll_Profit=false;//вкл/выкл закрыть позиции по всем валютным парам по достижении глобального профита
extern bool     ryn_CloseAll_Loss=false;//вкл/выкл закрыть позиции по всем валютным парам по достижении глобального лосса
extern bool     DeleteOtlozh=false;//вкл/выкл удалить при этом и отложенные ордера

extern string   t9="--- Прочие параметры ---";
extern int      Proskalz = 3; //Проскальзывание в пунктах 
extern bool     UseOrderSound = true;  // Использовать звуковой сигнал для установки ордеров
extern bool     UseTrailingSound = true;  // Использовать звуковой сигнал для трейлинга
extern string   NameOrderSound  = "alert.wav";  // Наименование звукового файла для ордеров
extern string   NameTrallingSound  = "expert.wav";// Наименование звукового файла для трейлинга

string     Comm1,Comm2,Comm3,Comm4,Comm5,Comm6,Comm7,ED,SMB; 
double     PNT,NewPrice,SL,TP,Balans,Free;
int        MinLevel,i,SchBuyStop,SchSellStop,SchBuyLimit,SchSellLimit,SchSell,SchBuy,SBid,SAsk,BBid,BAsk,GTP,GSL,GLE,total;
bool       fm,Rezult,TrailBuyStop,TrailSellStop,TrailBuyLimit,TrailSellLimit,SigBuy,SigSell,NewOrder;
bool       SigTIME_Buy,SigTIME_Sell,SigTIME_BuyStop,SigTIME_SellLimit,SigTIME_SellStop,SigTIME_BuyLimit;

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

int deinit()
  {

   if (!IsTesting())
    {
     Comment("");
     Print("Советник деинициализирован (выключен совсем)");
    }

   return(0);
  }

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

  if(!IsTradeAllowed()) {
    Comment("Торговля запрещена в настройках терминала, либо торговый поток занят");
    return(0);
  }
  Proverka();

  if(ryn_TrStop>0 && ryn_TrStop>=MinLevel) Comm1="Трал рыночных - Вкл."; else Comm1="Трал рыночных - Откл.";
  if (lim_TrStop>0 && lim_TrStop>=MinLevel) Comm2="Трал лимитных - Вкл."; else Comm2="Трал лимитных - Откл.";
  if (st_TrStop>0 && st_TrStop>=MinLevel) Comm3="Трал стоповых - Вкл."; else Comm3="Трал стоповых - Откл.";
  if (PipsProfit>0||PipsLoss>0) Comm4="Пипсовка - Вкл"; else Comm4="Пипсовка - Откл";
  double OtlTP=(Balans/100*Global_TakeProfit+Balans);
  double OtlSL=(Balans-Balans/100*Global_StopLoss);
  GTP=MathCeil(OtlTP);
  GSL=MathCeil(OtlSL);
  if (UseGlobalLevels) {
    Comm5="- - - - Глобальные уровни - - - -";
    Comm6="Глобальный Тейк-Профит = "+GTP+" $";
    Comm7="Глобальный Стоп-Лосс   = "+GSL+" $";
  }
  else {Comm5="Глобальные уровни - Откл"; Comm6=""; Comm7="";}
  SMB=Symbol();
  Comment("Ордеров сейчас для ",SMB," :","\n","Buy = ",SchBuy_b(MAGIC),"       Sell = ",SchSell_b(MAGIC),"\n","BuyStop = ",SchBuyStop_b(MAGIC),
        "   SellLimit = ",SchSellLimit_b(MAGIC),"\n","SellStop = ",SchSellStop_b(MAGIC),"    BuyLimit = ",SchBuyLimit_b(MAGIC),"\n",Comm1,
        "\n",Comm2,"\n",Comm3,"\n",Comm4,"\n",Comm5,"\n",Comm6,"\n",Comm7);

  if(Ustan_BuyLimit) {
    if((SchBuyLimit_b(MAGIC)==0 && (SchBuy_b(MAGIC)<ryn_MaxOrderov || !WaitClose))
        && (Ustan_BuyLimit && lim_Step>=MinLevel)) { 
      UstanBuyLimit_b(Lot,lim_Step,lim_TakeProfit,lim_StopLoss,Proskalz,MAGIC,UseOrderSound);
    }
  }
  if(Ustan_BuyStop) {
    if((SchBuyStop_b(MAGIC)==0 && (SchBuy_b(MAGIC)<ryn_MaxOrderov || !WaitClose)) && Ustan_BuyStop && st_Step>=MinLevel) {
      UstanBuyStop_b(Lot,st_Step,st_TakeProfit,st_StopLoss, Proskalz,MAGIC,UseOrderSound);
    }  
  }
  if(Ustan_SellStop) {
     if((SchSellStop_b(MAGIC)==0 && (SchSell_b(MAGIC)<ryn_MaxOrderov || !WaitClose))&&Ustan_SellStop && st_Step>=MinLevel) {
       UstanSellStop_b(Lot,st_Step,st_TakeProfit,st_StopLoss,Proskalz,MAGIC,UseOrderSound);
     }  
  }
  if(Ustan_SellLimit) {
    if((SchSellLimit_b(MAGIC)==0 && (SchSell_b(MAGIC)<ryn_MaxOrderov || !WaitClose)) && Ustan_SellLimit && lim_Step>=MinLevel) {
      UstanSellLimit_b(Lot,lim_Step,lim_TakeProfit,lim_StopLoss,Proskalz,MAGIC,UseOrderSound);
    }  
  }

  if(UseTime) {
     SigTIME_Buy=false;  SigTIME_BuyStop=false;   SigTIME_SellStop=false;
     SigTIME_Sell=false; SigTIME_SellLimit=false; SigTIME_BuyLimit=false;
     if(Hour()==Hhour && Minute()==Mminute) {//если текущие час и минута совпадают
        if(TIME_Buy) {
          SigTIME_Buy=true;
          if(UstanRynBuy_b(Lot,ryn_TakeProfit,ryn_StopLoss,Proskalz,MAGIC,UseOrderSound)==true)
          {SigTIME_Buy=false;}
        }
        if(TIME_Sell) {
          SigTIME_Sell=true;
          if(UstanRynSell_b(Lot,ryn_TakeProfit,ryn_StopLoss,Proskalz,MAGIC,UseOrderSound)==true)
            {SigTIME_Sell=false;}
        }
        if(TIME_BuyStop) {
          SigTIME_BuyStop=true;
          if((SchBuyStop_b(MAGIC)==0 && (SchBuy_b(MAGIC)<ryn_MaxOrderov || !WaitClose)) && SigTIME_BuyStop && st_Step>=MinLevel) {
            if(UstanBuyStop_b(Lot,st_Step,st_TakeProfit,st_StopLoss,Proskalz,MAGIC,UseOrderSound)==true) {
              SigTIME_BuyStop=false;
            }
          }  
        }
        if(TIME_SellLimit) {
           SigTIME_SellLimit=true;
           if((SchS

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

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

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

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

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

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

Стоимость полного кода
1 357,30₽ ≈ $16.59