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

ilan 2.0@lifeindreamsworld.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматической торговли на одном инструменте с использованием настраиваемых параметров размера позиции, стоп-лосса, тейк-профита и магического номера.

Программа анализирует ценовые данные и технические индикаторы для принятия решений об открытии и закрытии позиций. Поддерживается работа с отложенными ордерами (лимитные и стоп-ордера) различных типов, а также рыночными ордерами. Для идентификации собственных позиций используется магический номер.

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

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

НастройкаОписание
?? ??????? ???????? ??? ??? ??????????? ?????????? ??????. ??????: ?????? ??? 0.1, ?????: 0.16, 0.26 (LotExponent) LotExponent — Числовой коэффициент, определяющий степень увеличения размера лота при каждой новой сделке
DynamicPips DynamicPips — Переключатель, определяющий использование динамического расчёта шага между ордерами вместо фиксированного значения
DefaultPips DefaultPips — Значение по умолчанию для шага между ордерами в пипсах
Glubina Glubina — Глубина анализа ценовых данных — количество баров для определения максимума и минимума
DEL DEL — Делитель, используемый при расчёте расстояния между ордерами
?? ??????? ????? ?????????? ???? ? ?????? ???? ?? ???????? ??????? (? ????????? ?????? ??????? ????? (slip) slip — Допустимое проскальзывание при открытии ордеров в пунктах
????? ???? ??? ?????? ?????? (Lots) Lots — Начальный размер лота для торговли
??????? ?????? ????? ??????? ? ???? ???????????? 0 - ?????????? ???? (1), 1 - ???????? (0.1), 2 - ?? (lotdecimal) lotdecimal — Точность округления размера лота: 0 — целые лоты, 1 — лоты с одним знаком после запятой, 2 — лоты с двумя знаками
?? ?????????? ???????? ??????? ??????? ????????? ?????? (TakeProfit) TakeProfit — Расстояние до тейк-профита в пунктах
Drop Drop — Пороговое значение для технического индикатора CCI, при достижении которого происходит закрытие позиций
?????? ??????? RSI (RsiMinimum) RsiMinimum — Минимальное значение технического индикатора RSI, используемое при принятии торговых решений
??????? ??????? RSI (RsiMaximum) RsiMaximum — Максимальное значение технического индикатора RSI, используемое при принятии торговых решений
????????? ????? (???????? ????????? ???????? ???? ?????? ?? ?????) (MagicNumber) MagicNumber — Магический номер для идентификации ордеров, созданных данным советником
??????????? ?????????? ???????????? ???????? ??????? (MaxTrades) MaxTrades — Максимальное количество одновременно открытых сделок
UseEquityStop UseEquityStop — Переключатель, определяющий включение или отключение стопа по балансу
TotalEquityRisk TotalEquityRisk — Процент риска баланса, при превышении которого происходит принудительное закрытие позиций
UseTrailingStop UseTrailingStop — Переключатель, определяющий включение или отключение скользящего стопа
???????????? ??????? (????????? ?????? ???? ??? "?????" ??????? ?????) (UseTimeOut) UseTimeOut — Переключатель, определяющий включение или отключение таймаута нахождения позиций
????? ???????? ?????? ? ????? (????? ??????? ????????? ???????? ??????) (MaxTradeOpenHours) MaxTradeOpenHours — Максимальное время нахождения сделки на рынке в часах до принудительного закрытия
Получить полный код

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

double Stoploss = 500.0;            // ??????? ?????????
double TrailStart = 10.0;
double TrailStop = 10.0;

extern double LotExponent = 1.4;   // ?? ??????? ???????? ??? ??? ??????????? ?????????? ??????. ??????: ?????? ??? 0.1, ?????: 0.16, 0.26, 0.43 ...
extern bool    DynamicPips                   = true; 
extern int     DefaultPips                   = 12;
extern int Glubina = 24;
extern int DEL = 3;
extern double slip = 3.0;           // ?? ??????? ????? ?????????? ???? ? ?????? ???? ?? ???????? ??????? (? ????????? ?????? ??????? ???????? ????)
extern double Lots = 0.1;          // ????? ???? ??? ?????? ??????
extern int lotdecimal = 1;          // ??????? ?????? ????? ??????? ? ???? ???????????? 0 - ?????????? ???? (1), 1 - ???????? (0.1), 2 - ????? (0.01)
extern double TakeProfit = 10.0;    // ?? ?????????? ???????? ??????? ??????? ????????? ??????

extern double Drop = 500;
extern double RsiMinimum = 30.0;    // ?????? ??????? RSI
extern double RsiMaximum = 70.0;    // ??????? ??????? RSI
extern int MagicNumber = 2222;      // ????????? ????? (???????? ????????? ???????? ???? ?????? ?? ?????)
int PipStep=0;

extern int MaxTrades = 10;                 // ??????????? ?????????? ???????????? ???????? ???????
extern bool UseEquityStop = FALSE;
extern double TotalEquityRisk = 20.0;
extern bool UseTrailingStop = FALSE;
extern bool UseTimeOut = FALSE;            // ???????????? ??????? (????????? ?????? ???? ??? "?????" ??????? ?????)
extern double MaxTradeOpenHours = 48.0;    // ????? ???????? ?????? ? ????? (????? ??????? ????????? ???????? ??????)

double PriceTarget, StartEquity, BuyTarget, SellTarget;
double AveragePrice, SellLimit, BuyLimit;
double LastBuyPrice, LastSellPrice, Spread;
bool flag;
string EAName="Ilan1.6";
int timeprev = 0, expiration;
int NumOfTrades = 0;
double iLots;
int cnt = 0, total;
double Stopper = 0.0;
bool TradeNow = FALSE, LongTrade = FALSE, ShortTrade = FALSE;
int ticket;
bool  NewOrdersPlaced = FALSE;
double AccountEquityHighAmt, PrevEquity;

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

int deinit() {
   return (0);
}

int start()
 {
      // код доступен только после оплаты
   }
 if (DynamicPips)  {
     double hival=High[iHighest(NULL,0,MODE_HIGH,Glubina,1)];    // calculate highest and lowest price from last bar to 24 bars ago
     double loval=Low[iLowest(NULL,0,MODE_LOW,Glubina,1)];       // chart used for symbol and time period
     PipStep=NormalizeDouble((hival-loval)/DEL/Point,0);         // calculate pips for spread between orders
     if (PipStep<DefaultPips/DEL) PipStep = NormalizeDouble(DefaultPips/DEL,0);
     if (PipStep>DefaultPips*DEL) PipStep = NormalizeDouble(DefaultPips*DEL,0);          // if dynamic pips fail, assign pips extreme value
   }// else PipStep = DefaultPips;

   double PrevCl;
   double CurrCl;
   if (UseTrailingStop) TrailingAlls(TrailStart, TrailStop, AveragePrice);
   if ((iCCI(NULL,15,55,0,0)>Drop && ShortTrade)||(iCCI(NULL,15,55,0,0)<(-Drop) && LongTrade)) {

         CloseThisSymbolAll();
         Print("Closed All due to TimeOut");

   }
   if (timeprev == Time[0]) return (0);
   timeprev = Time[0];

   double CurrentPairProfit = CalculateProfit();
   if (UseEquityStop) {
      if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {
         CloseThisSymbolAll();
         Print("Closed All due to Stop Out");
         NewOrdersPlaced = FALSE;
      }
   }
   total = CountTrades();
   if (total == 0) flag = FALSE;
   for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY) {
            LongTrade = TRUE;
            ShortTrade = FALSE;
            break;
         }
      }
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_SELL) {
            LongTrade = FALSE;
            ShortTrade = TRUE;
            break;
         }
      }
   }
   if (total > 0 && total <= MaxTrades) {
      RefreshRates();
      LastBuyPrice = FindLastBuyPrice();
      LastSellPrice = FindLastSellPrice();
      if (LongTrade && LastBuyPrice - Ask >= PipStep * Point) TradeNow = TRUE;
      if (ShortTrade && Bid - LastSellPrice >= PipStep * Point) TradeNow = TRUE;
   }
   if (total < 1) {
      ShortTrade = FALSE;
      LongTrade = FALSE;
      TradeNow = TRUE;
      StartEquity = AccountEquity();
   }
   if (TradeNow) {
      LastBuyPrice = FindLastBuyPrice();
      LastSellPrice = FindLastSellPrice();
      if (ShortTrade) {
         NumOfTrades = total;
         iLots = NormalizeDouble(Lots * MathPow(LotExponent, NumOfTrades), lotdecimal);
         RefreshRates();
         ticket = OpenPendingOrder(1, iLots, Bid, slip, Ask, 0, 0, EAName + "-" + NumOfTrades + "-" + PipStep, MagicNumber, 0, HotPink);
         if (ticket < 0) {
            Print("Error: ", GetLastError());
            return (0);
         }
         LastSellPrice = FindLastSellPrice();
         TradeNow = FALSE;
         NewOrdersPlaced = TRUE;
      } else {
         if (LongTrade) {
            NumOfTrades = total;
            iLots = NormalizeDouble(Lots * MathPow(LotExponent, NumOfTrades), lotdecimal);
            ticket = OpenPendingOrder(0, iLots, Ask, slip, Bid, 0, 0, EAName + "-" + NumOfTrades + "-" + PipStep, MagicNumber, 0, Lime);
            if (ticket < 0) {
               Print("Error: ", GetLastError());
               return (0);
            }
            LastBuyPrice = FindLastBuyPrice();
            TradeNow = FALSE;
            NewOrdersPlaced = TRUE;
         }
      }
   }
   if (TradeNow && total < 1) {
      PrevCl = iClose(Symbol(), 0, 2);
      CurrCl = iClose(Symbol(), 0, 1);
      SellLimit = Bid;
      BuyLimit = Ask;
      if (!ShortTrade && !LongTrade) {
         NumOfTrades = total;
         iLots = NormalizeDouble(Lots * MathPow(LotExponent, NumOfTrades), lotdecimal);
         if (PrevCl > CurrCl) {
            if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 1) > RsiMinimum ) {
               ticket = OpenPendingOrder(1, iLots, SellLimit, slip, SellLimit, 0, 0, EAName + "-" + NumOfTrades, MagicNumber, 0, HotPink);
               if (ticket < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               LastBuyPrice = FindLastBuyPrice();
               NewOrdersPlaced = TRUE;
            }
         } else {
            if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 1) < RsiMaximum ) {
               ticket = OpenPendingOrder(0, iLots, BuyLimit, slip, BuyLimit, 0, 0, EAName + "-" + NumOfTrades, MagicNumber, 0, Lime);
               if (ticket < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               LastSellPrice = FindLastSellPrice();
               NewOrdersPlaced = TRUE;
            }
         }
         if (ticket > 0) expiration = TimeCurrent() + 60.0 * (60.0 * MaxTradeOpenHours);
         TradeNow = FALSE;
      }
   }
   total = CountTrades();
   AveragePrice = 0;
   double Count = 0;
   for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            AveragePrice += OrderOpenPrice() * OrderLots();
            Count += OrderLots();
         }
      }
   }
   if (total > 0) AveragePrice = NormalizeDouble(AveragePrice / Count, Digits);
   if (NewOrdersPlaced) {
      for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            if (OrderType() == OP_BUY) {
               PriceTarget = AveragePrice + TakeProfit * Point;
               BuyTarget = PriceTarget;
               Stopper = AveragePrice - Stoploss * Point;
               flag = TRUE;
            }
         }
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            if (OrderType() == OP_SELL) {
               PriceTarget = AveragePrice - TakeProfit * Point;
               SellTarget = PriceTarget;
               Stopper = AveragePrice + Stoploss * Point;
               flag = TRUE;
            }
         }
      }
   }
   if (NewOrder

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

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

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

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

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

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

Стоимость полного кода
1 249,10₽ ≈ $15.27