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

ilan_rsi_mm_extr192_rrr.mq4

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный код представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4 на языке MQL4. Советник реализует сеточную торговую стратегию с элементами управления рисками и денежным менеджментом. Он использует пользовательские индикаторы i-Regr и TrendMagic для определения направления тренда, а также поддерживает механизмы блокировки позиций, трейлинг-стопов, аварийную остановку по средствам и управление размером лотов.

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

НастройкаОписание
OpenNewCycle Открыть новый цикл — Переключатель, определяющий, разрешён ли советнику открывать новые сделки при отсутствии текущих позиций.
TradeWaitTime Время ожидания сделки — Задержка в секундах между попытками открытия новых сделок одного направления.
CycleWaitTime Время ожидания цикла — Задержка в секундах перед началом нового цикла торговли.
????????? ????? ? ????? ?? ?????????? ??? ?????? ? ?????????. ?????? ??? 0.1, ?????: 0.15, 0.26, 0.4 (LotExponent) Показатель лота — Множитель для расчёта размера лота в зависимости от номера сделки в цикле.
dec ??????????? ???? ??????, ???? = 0 ?? ?????????? ?????? ???????? ?????? ??? ????????? ????? (TakeProfit) Тейк-профит — Фиксированный уровень прибыли в пунктах для закрытия сделки; при нулевом значении используются внутренние массивы.
dec ??? ??????? ?????? (PipStep) Шаг в пунктах — Минимальное расстояние в пунктах между последовательными сделками.
c9 Метка MM — Текстовый параметр, используемый как идентификатор группы настроек денежного менеджмента.
?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.15 (Lots) Размер лота — Базовый размер лота для сделок при нулевом риске.
?????? ?????? ???????? ? % ?? ????, ???? = 0 ?? ?????? ?????? ??????????? ???????? Lots (Risk) Риск в процентах — Процент от баланса для расчёта размера лота; при нулевом значении используется фиксированный Lots.
????? ????? ?????? ??????? ??????? ??????????? = ?????????? ????????? ? ???? ??????????? ? ????? ??? (LastTrade) Номер последней сделки — Номер сделки, начиная с которой применяется специальный размер лота или условия.
dec ??????????? ???? ?????? ????? ??????? ?????? ?????? ??? LastTrade (TakeProfitLast) Тейк-профит для последних сделок — Уровень фиксации прибыли в пунктах для сделок, начиная с LastTrade.
???????????? ?????? ???????? ?????? ? % ?? ????, ???????? ??? ???? 10 000 ?????? ????????? ??????? ? (LasTradeSize) Размер последней сделки — Процент от баланса, ограничивающий размер лота при достижении порога LastTrade.
??????????? ?????????? ???????????? ???????? ??????? (MaxTrades) Максимум сделок — Максимальное количество одновременных сделок, разрешённых советником.
s11 Метка регрессии — Текстовый параметр, обозначающий группу настроек индикатора регрессии.
dec ??? ???????? ????? ?? ??????, ???? =0 ?? ?? ?????? ?? ????????, ?????? ?????? ?????? ??? ?????? (TrendPS) Шаг тренда — Расстояние в пунктах для входа в трендовую сделку; при нуле используются внутренние массивы.
dec ???? ?? ?????? ????????? ??????? ????? 10% ????????, ?? ????????? ??? ????? ? ???????? (ProfitPerc) Прибыль в процентах — Процент от баланса, при достижении которого все позиции закрываются.
dec ???? ? ??? ?????? ????? ?? ?????? ? ???? ????? ?????? ???, ?? ??????????? ?? ?????????, ??????? (MinProfitPips) Минимум прибыли в пунктах — Минимальное количество прибыли в пунктах для активации условий закрытия или модификации.
dec ???? ? ??? ?????? ????? ?? ?????? ? ???? ????? ?????? ???, ?? ??????????? ?? ?????????, ??????? (MinProfitPipsOne) Минимум прибыли одной сделки — Минимальный уровень прибыли в пунктах для закрытия одной прибыльной сделки.
??????? ??????? ????????? ???? ???? ????? ?? ? ???? ??????? (NumTr) Количество сделок — Пороговое количество сделок для активации определённых условий закрытия.
?????????????? ????? ??????????? (FDir) Направление фильтра — Фильтр направления торговли: -1 — оба направления, 0 — без фильтра, 1 — только покупка, 2 — только продажа.
c3 Метка блокировки — Текстовый параметр, обозначающий группу настроек блокировки позиций.
????? (MagicNumber) Магический номер — Уникальный идентификатор ордеров советника для их отслеживания и управления.
dec ??????????????? (slip) Проскальзывание — Допустимое проскальзывание цены при выставлении ордеров в пунктах.
?.?. ???? ?? "?????????????" (?.?. ???? ??????? ?????? ?? ? ????? ???????????) ???????? ?? ???????? (PercDown) Процент просадки — Процент от баланса, при достижении которого активируется механизм аварийного закрытия.
??????? ???? ?? ????? ?? 10 % ???????? ????? 30 ???? ??????????? ? ????? ???????, ?????? ??????????? (PercClose) Процент закрытия — Процент от баланса, ограничивающий допустимую убыточную просадку перед полным закрытием.
????????? ????? ???????????? ??? =0 (ComOn) Включение комментариев — Флаг вывода отладочных сообщений в журнал: 1 — включено, 0 — выключено.
c4 Метка таймфрейма — Текстовый параметр, обозначающий группу настроек таймфрейма индикатора.
????????? ?? ??????? ???? ????????? ?????? ??. mper ??? = 5 - H1 (TFIlanX) Таймфрейм Илан — Таймфрейм для основной логики советника; при нуле используется базовый.
=3 ????? 3 ?????? ????????????? ?? ?? ?1 (nH1) Порог H1 — Количество сделок, при превышении которого советник переключается на таймфрейм H1.
=5 ????? 5 ?????? ????????????? ?? ?? ?4 (nH4) Порог H4 — Количество сделок, при превышении которого советник переключается на таймфрейм H4.
c8 Метка блокировки — Текстовый параметр, обозначающий группу настроек системы блокировки.
???????? ?????????? ????? ??????? ? ???????? ?????????????? ???????, ???? =0 ?? ?? ????????, ???? =0 (LockS) Размер блокировки — Доля средств для выставления защитных ордеров при срабатывании блокировки; ноль отключает механизм.
?????????? ????? ??? ??????? ???? (LMagN) Магический номер блокировки — Магический номер, используемый для идентификации защитных (лок) ордеров.
????? ?????? ?? ????? ?????? ????????? ??????? ????? ???? ????????? ??????????? ?????? ??????? ????? (NumLockMin) Минимум для блокировки — Минимальное количество сделок, при котором активируется режим блокировки.
????? ?????? ?? ????? ?????? ????????? ??????? ????? ???? ?????????? ??????? ?????? ????? ??????? (NumLoc) Лимит локов — Пороговое количество текущих сделок для активации выставления защитного ордера.
dec ???????????? ?????????? ?? ?????? ?????? ????? ???????? ??? ?? ????????? ??? (MaxDist) Максимальная дистанция — Максимальное расстояние в пунктах от текущей цены до ордера, при превышении которого активируется блокировка.
????????? ????????? ? % ?? ???????? ??? ???????? ???? ??????? ??????? ? ????? (LockProfitPerc) Прибыль блокировки — Процент от баланса, при достижении прибыли по блокирующим позициям происходит их закрытие.
dec ?????????? ? ????? ??????? ??? ???????????????? ? ??????? (koridor) Коридор — Дистанция в пунктах, в пределах которой защитный ордер не выставляется при уже существующей позиции.
????????? ??????? ? ??????????? ??????? ??????? (Lmul) Множитель лота блокировки — Множитель размера лота для выставляемых защитных ордеров.
????????????? ?????????? ??????? ??????? (MaxLockTrades) Максимум блокирующих сделок — Максимальное количество защитных ордеров, разрешённых для одной позиции.
???????? ?????????? ?????????? ??? ???????? ???? TrendMagic (CCPeriod) Период CC — Период расчёта для индикатора TrendMagic, используемого в системе блокировки.
???????? ?????????? ?????????? ??? ???????? ???? TrendMagic (ATRPeriod) Период ATR — Период усреднения для индикатора TrendMagic.
????????? ?? ??????? ???????? ????????? ????????? (TMTF) Таймфрейм TrendMagic — Таймфрейм, на котором рассчитывается индикатор TrendMagic для фильтрации сигналов.
_tmp2_ Разделитель i-Regr — Текстовый разделитель в интерфейсе настроек для группы параметров первого индикатора регрессии.
?????????? ????????? ??? = TRUE (IndOff1) Индикатор 1 выключен — Переключатель отключения первого индикатора регрессии i-Regr; при TRUE используются стандартные сигналы.
??????? ?????? ? ????????? ?????, ??? =2 ?? ?????????? ??????? ?? ????????? ??????, =1 ?????? ?? ??? (kanal) Канал — Режим использования канала индикатора i-Regr: 0 — без канала, 1 — односторонний, 2 — двусторонний.
?????? ????? (SPer) Период сглаживания — Период расчёта для индикатора i-Regr первого уровня.
????????? ?? ??????? ???????? ?????????, (TFS) Таймфрейм i-Regr — Таймфрейм, на котором рассчитывается индикатор i-Regr для генерации сигналов.
???? = 0 ?? ?? ??????, ???? =1 ?? ???????? ?????? ??????????? ??????, ????? ???????????? ? ????? (invert) Инверсия сигнала — Режим инверсии сигнала первого индикатора: 0 — обычный, 1 — инвертированный.
_tmp3_ Разделитель i-Regr малый — Текстовый разделитель в интерфейсе настроек для группы параметров второго индикатора регрессии.
?????????? ????????? ??? = TRUE (IndOff2) Индикатор 2 выключен — Переключатель отключения второго индикатора регрессии i-Regr; при TRUE используются стандартные сигналы.
?????? ????? (SPermall) Период сглаживания малый — Период расчёта для индикатора i-Regr второго (малого) уровня.
????????? ?? ??????? ???????? ????????? (TFSmall) Таймфрейм i-Regr малый — Таймфрейм, на котором рассчитывается второй индикатор i-Regr.
UseEquityStop Стоп по средствам — Включает аварийное закрытие всех позиций при превышении допустимой просадки по средствам.
TotalEquityRisk Максимальный риск средств — Максимальный допустимый процент убытка от средств, при достижении которого все позиции закрываются.
t2 Разделитель стопов — Текстовый разделитель в интерфейсе настроек для группы параметров стоп-лоссов.
0-?? ?????????? ????, 1 - ??????????? ????, 2 - ???? ???? ?????? (UseTrailingStop) Использовать трейлинг-стоп — Режим трейлинг-стопа: 0 — отключён, 1 — ступенчатый, 2 — модифицированный с коэффициентом xtral.
dec ?????????? ?? ????? ?????????, ????? ??????? ???????? ???? //+---------------------------------- (ProfitTrailDist) Дистанция трейла прибыли — Расстояние в пунктах от средней цены, при превышении которого активируется трейлинг-стоп.
dec ?????????? ?? ??????? ??????? ???????? //| ???????? ???????????-???????????? | (TrailDist) Дистанция трейла — Расстояние в пунктах для ступенчатого перемещения стоп-лосса.
dec ???????????? ?????? ?????? 5 ??????? //| ??????? ????????? ????? ???????, ?????????? ?? ????? ?? (TrailStep) Шаг трейла — Шаг перемещения стоп-лосса в пунктах при активации трейлинг-стопа.
????? ?????? ?????????? ?????? ?????????? ???? //| ?? ??????? ???????? ??????????? (???????) ? "???" (NumIT) Количество сделок для трейла — Минимальное количество сделок, при котором активируется трейлинг-стоп.
???????? ???, ?????????? ?? ????? ????????? ?? ????????? ? xtral ??? ?????? ??? ?? ????? ?? ?? ????, (xtral) Коэффициент трейла — Множитель для модифицированного алгоритма трейлинг-стопа.
Получить полный код

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

extern string ?2= "???????? ?????????";

extern bool OpenNewCycle    = true;
extern int  TradeWaitTime   = 30;
extern int  CycleWaitTime   = 60;

extern double LotExponent = 1.4;  // ????????? ????? ? ????? ?? ?????????? ??? ?????? ? ?????????. ?????? ??? 0.1, ?????: 0.15, 0.26, 0.43 ...
double learr[25]={1.3,1.4,1.5,1.6,1.7,2,2,2,2,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.6,1.6,1.6,1.6,1.6,1.6,1.6}; // dec ?? ?????? ??? ???? LotExponent=0 
extern double TakeProfit = 30;  //dec ??????????? ???? ??????, ???? = 0 ?? ?????????? ?????? ???????? ?????? ??? ????????? ?????
int tparr[25]={10,10,10,10,20,30,30,30,30,30,30,30,30,30,30,30,30,10,10,10,10,10,10,10,10,10}; // dec(???????? ??? 5 ?????? ???? ????? ????????!)
extern double PipStep = 30;     //dec ??? ??????? ??????
double psarr[25]={70,110,110,110,110,110,110,110,110,110,110,110,90,90,90,90,90,90,170,180,190,200,200,200,200,200}; //dec ???????? ???? PipStep=0(???????? ??? 5 ?????? ???? ????? ???????? !)

extern string c9 = "MM";
extern double Lots = 0.1;         // ?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.15
extern double Risk = 0.5;          // ?????? ?????? ???????? ? % ?? ????, ???? = 0 ?? ?????? ?????? ??????????? ???????? Lots

extern double LastTrade=100; // ????? ????? ?????? ??????? ??????? ??????????? = ?????????? ????????? ? ???? ??????????? ? ????? ????????? + lastradeprofit
extern double TakeProfitLast = 10.0;  //dec ??????????? ???? ?????? ????? ??????? ?????? ?????? ??? LastTrade
extern double LasTradeSize=17; // ???????????? ?????? ???????? ?????? ? % ?? ????, ???????? ??? ???? 10 000 ?????? ????????? ??????? ?? ?????? 1 ????
extern int    MaxTrades = 50;                // ??????????? ?????????? ???????????? ???????? ???????

extern string s11 ="????????? ?????? ?? ??????";

extern double TrendPS = 11;     //dec ??? ???????? ????? ?? ??????, ???? =0 ?? ?? ?????? ?? ????????, ?????? ?????? ?????? ??? ?????? ?????? ??????
extern double ProfitPerc= 5;   //dec ???? ?? ?????? ????????? ??????? ????? 10% ????????, ?? ????????? ??? ????? ? ????????
extern double MinProfitPips =15; //dec ???? ? ??? ?????? ????? ?? ?????? ? ???? ????? ?????? ???, ?? ??????????? ?? ?????????, ??????? ?????????? ? + ?? ?????? MinProfitPips ?? ????? ?????????
extern double MinProfitPipsOne =2; //dec ???? ? ??? ?????? ????? ?? ?????? ? ???? ????? ?????? ???, ?? ??????????? ?? ?????????, ??????? ?????????? ? + ?? ?????? MinProfitPips ?? ????? ?????????
extern double NumTr=2; // ??????? ??????? ????????? ???? ???? ????? ?? ? ???? ???????                           
extern int FDir = 2;     //  ?????????????? ????? ???????????

extern string c3= "??????????????? ?????????";
extern int MagicNumber = 54321;    // ?????
extern double slip = 3.0;          //dec ???????????????

extern double PercDown=0; // ?.?. ???? ?? "?????????????" (?.?. ???? ??????? ?????? ?? ? ????? ???????????) ???????? ?? ???????? ?? ????? ?????? ?????? 30 % ?? ???????? ???????, ?? ??? ???? ??????????? ? ????? ?? ?????????
extern double PercClose=0; // ??????? ???? ?? ????? ?? 10 % ???????? ????? 30 ???? ??????????? ? ????? ???????, ?????? ??????????? ??????????????, ???? ?? 60 % ??????? ? ????????, ?? ????????? ??? 20 %

extern int ComOn=0; // ????????? ????? ???????????? ??? =0                           
extern string c4= "????????? ????????? ? ????????";
extern int TFIlanX=0;    // ????????? ?? ??????? ???? ????????? ?????? ??. mper ??? = 5 - H1

extern int nH1=0;       //   =3 ????? 3 ?????? ????????????? ?? ?? ?1
extern int nH4=0;       //   =5 ????? 5 ?????? ????????????? ?? ?? ?4

extern string c8= "????????? ????";

extern double LockS=0; // ???????? ?????????? ????? ??????? ? ???????? ?????????????? ???????, ???? =0 ?? ?? ????????, ???? =0.5, ?? ???????? 50% ??????? ?????
extern int LMagN=689; // ?????????? ????? ??? ??????? ????
extern int NumLockMin=10; // ????? ?????? ?? ????? ?????? ????????? ??????? ????? ???? ????????? ??????????? ?????? ??????? ???????????
extern int NumLoc=15; // ????? ?????? ?? ????? ?????? ????????? ??????? ????? ???? ?????????? ??????? ?????? ????? ???????
extern int MaxDist=400; //dec ???????????? ?????????? ?? ?????? ?????? ????? ???????? ??? ?? ????????? ???
extern int LockProfitPerc=1; // ????????? ????????? ? % ?? ???????? ??? ???????? ???? ??????? ??????? ? ?????
extern int koridor = 50; // dec ?????????? ? ????? ??????? ??? ???????????????? ? ???????
extern double Lmul = 2; // ????????? ??????? ? ??????????? ??????? ???????
extern int MaxLockTrades = 4; // ????????????? ?????????? ??????? ???????
extern int CCPeriod = 50; // ???????? ?????????? ?????????? ??? ???????? ???? TrendMagic
extern int ATRPeriod = 5; // ???????? ?????????? ?????????? ??? ???????? ???? TrendMagic
extern int TMTF = 7; // ????????? ?? ??????? ???????? ????????? ?????????
int TradeAfterLock = 0; // ??? =0 ???? ? ??? ???????? ???, ?? ?? ????????? ?????????, = 1 ?????????? ?????????

extern string _tmp2_ = " --- i-Regr --- ? ??????? ???????? ??????????? ?????????? ?????";

extern bool IndOff1=false; // ?????????? ????????? ??? = TRUE
extern int Regr.degree1 = 6; // ??????? ????????? 
extern double Regr.kstd1 = 5; // ?????? ??????, ???? =0 ?? ???????? ?????? ??????? ?????
extern int kanal=2; // ??????? ?????? ? ????????? ?????, ??? =2 ?? ?????????? ??????? ?? ????????? ??????, =1 ?????? ?? ????????? ????? ???????, = 0 ?? ????????? ??????? ?????? ?????????? ???????? ????? ???????
int Regr.shift1 = 0; // ???????? ???????????? ???????? ????
extern int SPer = 800; // ?????? ?????
extern int TFS=7;     // ????????? ?? ??????? ???????? ?????????, 
extern int invert=0; // ???? = 0 ?? ?? ??????, ???? =1 ?? ???????? ?????? ??????????? ??????, ????? ???????????? ? ?????

extern string _tmp3_ = " --- i-Regr --- ? ????? ????????";

extern bool IndOff2=false; // ?????????? ????????? ??? = TRUE
extern int Regr.degree1mall = 3; // ??????? ????????? 
extern double Regr.kstd1mall = 1.5; // ?????? ??????, ???? =0 ?? ???????? ?????? ??????? ?????
int Regr.shift1mall = 0; // ???????? ???????????? ???????? ????
extern int SPermall = 150; // ?????? ?????
extern int TFSmall=3;     // ????????? ?? ??????? ???????? ?????????

extern bool UseEquityStop = FALSE;
extern double TotalEquityRisk = 20.0;

bool UseTimeOut = FALSE;
double MaxTradeOpenHours = 48.0;
extern string t2 = " ????????? ?????????";

extern int UseTrailingStop = 0; // 0-?? ?????????? ????, 1 - ??????????? ????, 2 - ???? ???? ??????
extern int ProfitTrailDist = 30; //dec ?????????? ?? ????? ?????????, ????? ??????? ???????? ????  //+------------------------------------------------------------------+
extern int TrailDist = 80; //dec ?????????? ?? ??????? ??????? ????????                            //| ???????? ???????????-????????????                                |
extern int TrailStep = 10; //dec ???????????? ?????? ?????? 5 ???????                              //| ??????? ????????? ????? ???????, ?????????? ?? ????? ????????,  |
extern int NumIT = 3; // ????? ?????? ?????????? ?????? ?????????? ????                         //| ?? ??????? ???????? ??????????? (???????) ? "???", ? ??????? ?? ??????????? (???????)   |

extern double xtral=2; // ???????? ???, ?????????? ?? ????? ????????? ?? ????????? ? xtral ??? ?????? ??? ?? ????? ?? ?? ????, ???????? ???? ???? ?? 90 ? ? +, ?????? ???? ?? ?????? 30 ? ? ???? ?????????                                                                                              

int mper[10]={0,1,5,15,30,60,240,1440,10080,43200};
int TFIlan=0;
int ccc=0;
double lota[100]; // ????
int modea[100];   // ??? ?????? OP_BUY 0 , OP_SELL 1 , OP_BUYLIMIT 2 , OP_SELLLIMIT 3 , OP_BUYSTOP 4 , OP_SELLSTOP 5 
double opa[100];       // ???? ????????
double sla[100];      // ????????
double tpa[100];      // ??????
string comma[100];     // ???????????
datetime tima[100];    // ????? ???????? ?????? 
double profa[100];
int ticka[100]; 

double PriceTarget, StartEquity, BuyTarget, SellTarget, AveragePrice, SellLimit, BuyLimit,LastBuyPrice, LastSellPrice, Spread,mac;
bool flag;
string EAName = "Ilan_extr19";
int timeprev = 0, expiration;
int NumOfTrades = 0;
double iLots;
int cnt = 0, total;
double Stopper = 0.0;
bool TradeNow = FALSE;
bool Trade[2];

int ticket;
bool NewOrdersPlaced = FALSE;
double AccountEquityHighAmt, PrevEquity;
int TrendRe=1; // ??? =0 ????? ???????? ?????, ??? =1 ????? ?????, ?.?. ?????????? ?? ??????
double LastDD=0; // ????? ??????????? ???????????? ???????? ??? ??????? ????? ??????
double FirstTr=0; // ????? ?????????? ????? ?????? ?????? ? ?????
int ClLock=0;  // ???? ??? ???????? ????
double LocSummP =0; // ????? ?????????? ??????? ?????????? ?? ???? ??? ?????? ?????
double LastLPrice = 0; // ???? ???????? ?????????? ????
int stoptrade2l=0;
bool init = false;
int last_tick = -1;

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

int deinit() {
   return (0);
}

int lastTime[2];
int cycleLastTime[2];
int tradePause[2], cyclePause[2];

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

int CountTrades(int m) 
{
   lastTime[OP_BUY] = 0;
   lastTime[OP_SELL] = 0;
   cycleLastTime[OP_BUY] = 0;
   cycleLastTime[OP_SELL] = 0;

   int count = 0;
   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 
   {
      if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == m)
            if (OrderType() == OP_SELL || OrderType() == OP_BUY) 
            {
               lastTime[OrderType()] = MathMax(lastTime[OrderType()], OrderOpenTime());
               count++;
            }
   }
   trade = OrdersHistoryTotal();
   while(trade > 0 && (cycleLastTime[OP_BUY] == 0 || cycleLastTime[OP_SELL] == 0))
   {
      trade--;
      if(OrderSelect(trade, SELECT_BY_POS, MODE_HISTORY))
         if(OrderMagicNumber() == m)
            if(OrderSymbol() == Symbol())
               if (OrderType() == OP_SELL || OrderType() == OP_BUY) 
               {
                  lastTime[OrderType()] = MathMax(lastTime[OrderType()], OrderOpenTime());
                  cycleLastTime[OrderType()] = MathMax(cycleLastTime[OrderType()], OrderCloseTime());
               }
   }

   tradePause[OP_BUY] = TimeCurrent() - lastTime[OP_BUY];
   tradePause[OP_SELL] = TimeCurrent() - lastTime[OP_SELL];
   cyclePause[OP_BUY] = TimeCurrent() - cycleLastTime[OP_BUY];
   cyclePause[OP_SELL] = TimeCurrent() - cycleLastTime[OP_SELL];
   return (count);
}

int LockTicket(int m)  // ?????????? ????? ? ????????? ???????? ??????????
{
   int t = 0;
   datetime dt = 0;
   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) 
   {
      if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == m)
            if (OrderType() == OP_SELL || OrderType() == OP_BUY)
               if (dt < OrderOpenTime()) 
               {
                  t = OrderTicket();
                  dt = OrderOpenTime();
               }
   }
   return (t);
}

void again() 
{
   timeprev = Time[1];
   return (0);
}

void CloseThisSymbolAll(int mn) {
   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol()) {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) {
         while (!IsTradeAllowed()) Sleep(1000);
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), slip, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), slip, Red);
            PrintF ("close ALL orders Type : order :  Bid  "+OrderType()+" :  "+OrderOpenPrice()+"  :  "+Bid);            
         }
      }
   }
}

int OpenPendingOrder(int pType, double pLots, double pPrice, int pSlippage, double ad_24, int ai_32, int ai_36, string a_comment_40, int a_magic_48, int a_datetime_52, color a_color_56) {
   int l_ticket_60 = 0;
   int l_error_64 = 0;
   int l_count_68 = 0;
   int li_72 = 3;
   pPrice=NormalizeDouble(pPrice,Digits);
   switch (pType) {
   case 2:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_BUYLIMIT, pLots, RoundToTickSize(pPrice), pSlippage, StopLong(ad_24, ai_32), TakeLong(pPrice, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
         Sleep(1000);
      }
      break;
   case 4:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_BUYSTOP, pLots, RoundToTickSize(pPrice), pSlippage, StopLong(ad_24, ai_32), TakeLong(pPrice, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      break;
   case 0:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         RefreshRates();
         l_ticket_60 = OrderSend(Symbol(), OP_BUY, pLots, RoundToTickSize(Ask), pSlippage, StopLong(Bid, ai_32), TakeLong(Ask, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      break;
   case 3:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_SELLLIMIT, pLots, RoundToTickSize(pPrice), pSlippage, StopShort(ad_24, ai_32), TakeShort(pPrice, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      break;
   case 5:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_SELLSTOP, pLots, RoundToTickSize(pPrice), pSlippage, StopShort(ad_24, ai_32), TakeShort(pPrice, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      break;
   case 1:
      for (l_count_68 = 0; l_count_68 < li_72; l_count_68++) {
         l_ticket_60 = OrderSend(Symbol(), OP_SELL, pLots, RoundToTickSize(Bid), pSlippage, StopShort(Ask, ai_32), TakeShort(Bid, ai_36), a_comment_40, a_magic_48, a_datetime_52, a_color_56);
         l_error_64 = GetLastError();
         if (l_error_64 == 0/* NO_ERROR */) break;
         if (!(l_error_64 == 4/* SERVER_BUSY */ || l_error_64 == 137/* BROKER_BUSY */ || l_error_64 == 146/* TRADE_CONTEXT_BUSY */ || l_error_64 == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
   }
   return (l_ticket_60);
}

double StopLong(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   else return (ad_0 - ai_8 * Point);
}

double StopShort(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   else return (ad_0 + ai_8 * Point);
}

double TakeLong(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   else return (ad_0 + ai_8 * Point);
}

double TakeShort(double ad_0, int ai_8) {
   if (ai_8 == 0) return (0);
   else return (ad_0 - ai_8 * Point);
}

double CalculateProfit() 
{
   double ld_ret_0 = 0;
   for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) 
               ld_ret_0 += OrderProfit();
   }
   return (ld_ret_0);
}

void TrailingAlls() 
{     
   int  total2=CountTrades(MagicNumber);   
   if (CalculateProfit()<=0 || total2==0) return(0);

   double AveragePrice2 = 0;
   double Count2 = 0;
   int dir=-1;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) 
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) 
         {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) 
            {
               AveragePrice2 += OrderOpenPrice() * OrderLots();
               Count2 += OrderLots();
               if (OrderType() == OP_BUY) dir = 0;
               if (OrderType() == OP_SELL) dir = 1;            
            }
         }
   }
   if (total2 > 0) 
    {   

    AveragePrice2 = RoundToTickSize(AveragePrice2/Count2);    
    } 

     if (dir==0) 
      {
       if (AveragePrice2>Bid-ProfitTrailDist*Point) return(0);
      } 
     if (dir==1) 
      {
       if (AveragePrice2<Bid+ProfitTrailDist*

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

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

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

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

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

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

Стоимость полного кода
3 829,80₽ ≈ $46.81