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

PairTrader_Exp v.4

pairtrader_exp v41.mq4
Вы автор или правообладатель?

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

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

О программе

Продукт представляет собой торгового советника для платформы MetaTrader 4, написанный на языке MQL4. Автор — Mr.SilverKZ (2012). Советник работает с двумя валютными парами: текущим символом графика и вторым символом, задаваемым в настройках. Основная идея — анализ разницы (спреда) между ценовыми движениями двух инструментов и открытие противоположных или одинаковых позиций в зависимости от выбранного режима.

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

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

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

НастройкаОписание
true - ???????? ?????????, (OpenPair) OpenPair — открытие пары — Переключатель разрешения открытия новых позиций
Trade Trade — торговля — Переключатель разрешения торговых операций (открытия позиций)
true - ????????????? ??????? ???????, (ClosePair) ClosePair — закрытие пары — Переключатель автоматического закрытия всех управляемых позиций при достижении заданных условий
?????????? ?????????? ?2 (Symbol_2) Symbol_2 — второй символ — Второй торговый символ, участвующий в паре (по умолчанию GBPUSD)
true - ????????????? ?????????? (Revers) Revers — обратное направление — Режим направления позиций: в обратном или стандартном направлении по двум инструментам
?????? ????????? ? ??????? ??? ????? (Delta) Delta — начальный порог разницы — Начальное пороговое значение разницы между инструментами, при котором инициируется открытие позиции
?????? ????????? ? ??????? ??? ???????, 0 - ??????? ??? (Step) Step — шаг разницы — Шаг изменения порогового значения разницы между инструментами при каждой новой попытке открытия
???????????? ?????????? ??????? (Count) Count — максимальное число сделок — Максимальное допустимое количество открытых сделок в рамках одной сессии обработки
?????? ? ?????? ???????? ??? ???????? ??????? (Profit) Profit — порог прибыли — Порог совокупной прибыли, при достижении которого происходит закрытие позиций
?????? ? ?????? ???????? ??? ???????? ??????? (StopLoss) StopLoss — порог убытка — Порог совокупного убытка, при достижении которого происходит принудительное закрытие позиций
????????-???? ? ?????? ????????, 0 - ????????? ??? (Trailing) Trailing — трейлинг-стоп — Величина трейлинг-стопа в пунктах для автоматического закрытия при откатах от максимальной прибыли
??????? ??? (Lot) Lot — размер лота — Базовый размер лота для каждой открытой позиции
?????????? ????? (MM) MM — управление лотом — Параметр управления размером лота: 0 — фиксированный лот, 1 — увеличение на базовый лот, больше 1 — умножение лота
????????????? ??????? (Magic) Magic — магический номер — Магический номер для идентификации ордеров, управляемых данным советником
Получить полный код

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

extern bool    OpenPair  =  false;    // true - ???????? ?????????, 

extern bool    Trade     =  true;                                      
extern bool    ClosePair =  false;    // true - ????????????? ??????? ???????, 

extern string  Symbol_2  =  "GBPUSD"; // ?????????? ?????????? ?2
extern bool    Revers    =  false;    // true  - ????????????? ??????????  

extern int     Delta     =  50;       // ?????? ????????? ? ??????? ??? ?????
extern int     Step      =  50;       // ?????? ????????? ? ??????? ??? ???????, 0 - ??????? ???
extern int     Count     =  5;        // ???????????? ?????????? ???????
extern int     Profit    =  25;       // ?????? ? ?????? ???????? ??? ???????? ???????
extern int     StopLoss  =  1000;     // ?????? ? ?????? ???????? ??? ???????? ???????
extern int     Trailing  =  20;       // ????????-???? ? ?????? ????????, 0 - ????????? ???
extern double  Lot       =  0.1;      // ??????? ???
extern double  MM        =  0;        // ?????????? ?????

extern int     Magic     =  10345;    // ????????????? ???????

int            Mas_Tip_Symb1[6];      // [] ??? ???: 0=B,1=S,2=BL,3=SL,4=BS,5=SS 
int            Mas_Tip_Symb2[6];      // [] ??? ???: 0=B,1=S,2=BL,3=SL,4=BS,5=SS  
string         Txt, Text_1, Text_2, Text_3, Text_4;
string         Symbol_1;
double         Koef; 
int            i, K;
double         ProfitMax;
double         lot;

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

int deinit()
{
   return(0);
}

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

   datetime T1 = ObjectGet(WindowExpertName(),OBJPROP_TIME1);
   int Error=GetLastError();              
   if (Error==4202)                    
     {
      Alert("?????? ???????????? ????? ?????????",
            "\n??? ??????????? ????????. ??????? ??????.");
      Create(Time[i]);                       
      T1=Time[i];                      
     }
   i = iBarShift(Symbol(),0,T1); 

   double Price1 = (iClose(Symbol_1,0,0) - iClose(Symbol_1,0,i)) / MarketInfo(Symbol_1, MODE_POINT);
   double Price2 = K*(iClose(Symbol_2,0,0) - iClose(Symbol_2,0,i)) / MarketInfo(Symbol_2, MODE_POINT);
   double Spread = Price1 - Price2;

   if (Terminal()==0) lot = Lot;

   bool   Sig_Buy    = MathAbs(Spread) >= Delta+Step*Mas_Tip_Symb1[0] && Spread < 0 && Mas_Tip_Symb1[0]<=Count;
   bool   Sig_Sell   = MathAbs(Spread) >= Delta+Step*Mas_Tip_Symb1[1] && Spread > 0 && Mas_Tip_Symb1[1]<=Count;

   if(Spread < 0) 
      {
       Text_1 = Symbol_1+" Buy ";
       if(Revers)Text_2 = Symbol_2+" Buy ";
       else Text_2 = Symbol_2+" Sell ";
      }
   if(Spread > 0) 
      {
       Text_1 = Symbol_1+" Sell ";
       if(Revers)Text_2 = Symbol_2+" Sell ";
       else Text_2 = Symbol_2+" Buy ";
      }
   if((Mas_Tip_Symb1[0]+Mas_Tip_Symb1[1])==0) Text_3 = "0"; else Text_3 = (Mas_Tip_Symb1[0]+Mas_Tip_Symb1[1]) - 1;
   if(OpenPair) Text_4 = "?????????";    else Text_4 = "?????????";

   Comment("----------------------------------------------------",
           "\n???????????: ",Text_1," - ",Text_2,
           "\n????????: ",Text_4,
           "\n??????? ???????: ",Txt,
           "\n----------------------------------------------------",
           "\n??????? ????????? = ",MathAbs(Spread),
           "\n????????? ??? ????? = ",Delta+Step*(Mas_Tip_Symb1[0]+Mas_Tip_Symb1[1]),
           "\n----------------------------------------------------",
           "\n?????????? ??????? = ",Text_3,
           "\n???????????? ?????????? ??????? = ",Count,
           "\n----------------------------------------------------",
           "\n??????? ???????/?????? = ",ProfitAll(),
           "\n????-?????? ??? ?????? = ",Profit,
           "\n????-???? ??? ?????? = ",StopLoss,
           "\n????????-???? = ",Trailing,
           "\n----------------------------------------------------");

   double Profits = ProfitAll();
   if (Profits>ProfitMax) ProfitMax=Profits;
   if (Trailing>0 && (ProfitMax-Profits)>Trailing && Profits>0)
     {
      CloseAll();
     }
   if((Terminal()>0 && (Profits>=Profit || Profits<=(-StopLoss))) || ClosePair)
     {
      CloseAll();
     }

   if(!OpenPair) return(0); 
   if(Trade && Terminal()==0) return(0);

   if(Step<=0 && Terminal()!=0)return(0)

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

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

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

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

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

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

Стоимость полного кода
564,80₽ ≈ $6.90