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

forex winner ea (full2019).mq4

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

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

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

О программе

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

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

НастройкаОписание
StopLoss (Stoploss) Стоп-лосс — Размер стоп-лосса в пунктах, устанавливаемый при модификации ордера после его открытия
TrailStart Начало трейлинга — Уровень прибыли в пунктах, начиная с которого трейлинг-стоп начинает сдвигать стоп-лосс вверх
TrailStop Шаг трейлинга — Расстояние в пунктах, на которое сдвигается стоп-лосс при активном трейлинге
Lot Multiplyer e.g 0.1, series: 0.16, 0.26, 0.43 ... (LotExponent) Множитель лота — Коэффициент возведения в степень для увеличения размера лота при каждой новой сделке
DynamicPips Динамические пипы — Включает автоматический пересчёт расстояния между ордерами на основе текущей волатильности
DefaultPips Пипы по умолчанию — Базовое значение расстояния между ордерами в пунктах, используемое при динамическом режиме
_GLUBINA_ Глубина расчёта — Текстовое описание параметра количества баров для расчёта волатильности
number of last bars for calculation of volatility (Glubina) Глубина — Количество последних баров, используемых для определения диапазона цен при расчёте волатильности
DEL Делитель — Делитель для расчёта расстояния между ордерами на основе диапазона цен за указанное количество баров
how much the price may differ if the DC prompts requotes (the last time a little change the price) (slip) Слиппаж — Допустимое отклонение цены при исполнении рыночного или отложенного ордера
LOT SIZE (Lots) Размер лота — Базовый размер лота для открытия новых сделок
EQUITY PER LOT (Equity_per_lot) Эквити на лот — Значение эквити, используемое для расчёта размера лота на основе текущего баланса
how many decimal places in the lot count 0 - normal items (1) 1 - mini lots (0.1), 2 - micro (0.01) (lotdecimal) Десятичные знаки лота — Количество знаков после запятой при округлении рассчитанного размера лота
Number of pips to close the trade (TakeProfit) Тейк-профит — Количество пунктов для фиксации прибыли по позиции
Lower Boundry RSI (RsiMinimum) Минимум RSI — Объявленный параметр нижней границы RSI (не используется в текущей логике советника)
Upper Boundry RSI (RsiMaximum) Максимум RSI — Объявленный параметр верхней границы RSI (не используется в текущей логике советника)
magic number (Advisor uses this to distinguish trades) (MagicNumber) Магический номер — Идентификатор ордеров советника для отделения своих позиций от чужих
PipStep Шаг в пипах — Расстояние между ордерами в пунктах; рассчитывается автоматически при включённом динамическом режиме
the maximum number of simultaneously opened orders (MaxTrades) Максимум сделок — Максимальное количество одновременно открытых позиций на одном символе
UseEquityStop Стоп по эквити — Включает принудительное закрытие всех позиций при превышении допустимого убытка по эквити
TotalEquityRisk Риск по эквити — Максимальный процент убытка от текущего эквити, при превышении которого закрываются все позиции
UseTrailingStop Трейлинг-стоп — Включает автоматическое сдвигание стоп-лосса в прибыльную зону по мере роста позиции
use a timeout (to close the treade if they "hang" for too long) (UseTimeOut) Таймаут сделок — Включает принудительное закрытие позиций, находящихся открытыми дольше заданного времени
timeout trade hours (how many hovering close the transaction) (MaxTradeOpenHours) Максимальное время сделки — Максимальное время в часах, в течение которого позиция может оставаться открытой перед принудительным закрытием
Получить полный код

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

#property description"CONTRACT"// Only change Test Into "Change Text"
#property description"Email: s*****t*@forexwinnerea.com"// Only change Test Into "Change Text"
#property description"Skype: live:support_55314"// Only change Test Into "Change Text"
#property description"Mobile: +447452658001"// Only change Test Into "Change Text"

#property description"This copy will working only run on the following account  REAL# 1002229"// Only change Test Into "Change Text"
#property description "forexearnbdico"
enum priod
  {
   priod1 =PERIOD_M1,//M1
   priod2 = PERIOD_M5,//M5
   priod3 =PERIOD_M15, // M15
   priod4 =PERIOD_M30, // M30
   priod5 =PERIOD_H1, // H1
   priod6 =PERIOD_H4, //H4
   priod7 =PERIOD_D1, //D1
   priod8 =PERIOD_W1,//W1
   priod9 =PERIOD_MN1//MN

  };

priod period= priod5; //BUY TIME FRAME 

extern int Stoploss = 500;            // StopLoss
 extern int TrailStart = 10;
extern int TrailStop = 10;

extern double LotExponent = 1.2651;   // Lot Multiplyer e.g 0.1, series: 0.16, 0.26, 0.43 ...
extern bool    DynamicPips                   = true; 
extern int     DefaultPips                   = 12;
extern string _GLUBINA_ = "GLUBINA = number of last bars to calculate volatility";
extern int Glubina = 24;  // number of last bars for calculation of volatility
extern int DEL = 3;
extern int slip = 3;           // how much the price may differ if the DC prompts requotes (the last time a little change the price)
extern double Lots = 0.01;          // LOT SIZE
extern int Equity_per_lot = 10; // EQUITY PER LOT
extern int lotdecimal = 2;          // how many decimal places in the lot count 0 - normal items (1) 1 - mini lots (0.1), 2 - micro (0.01)
extern double TakeProfit = 230.0;    // Number of pips to close the trade

double Drop = 5000;
extern double RsiMinimum = 30.0;    // Lower Boundry RSI
extern double RsiMaximum = 70.0;    // Upper Boundry RSI
extern int MagicNumber = 1111111;      // magic number (Advisor uses this to distinguish trades)
extern double PipStep=0;
bool komoles=0;

extern int MaxTrades = 17;                 // the maximum number of simultaneously opened orders
extern bool UseEquityStop = FALSE;
extern double TotalEquityRisk = 20.0;
extern bool UseTrailingStop = FALSE;
extern bool UseTimeOut = FALSE;            // use a timeout (to close the treade if they "hang" for too long)
extern double MaxTradeOpenHours = 960.0;    // timeout trade hours (how many hovering close the transaction)

datetime Date_Time=D'2034.07.19 08:24:00'; //I.E: D'YYYY.MM.DD HH:MM:SS'

double PriceTarget, StartEquity, BuyTarget, SellTarget;
double AveragePrice, SellLimit, BuyLimit;
double LastBuyPrice, LastSellPrice, Spread;
bool flag;
string EAName="Forex WINNER EA";
datetime timeprev = 0, expiration;
int NumOfTrades = 0;
double iLots,l,ordprof;
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 (AccountNumber() !=Account_Number)
    {     
     ExpertRemove();
     Alert("Your VPS/PC is not supported, Kindly update VPS!!!");
    } */
    if (TimeCurrent()>Date_Time )
    {
    ExpertRemove();
    Alert("Your VPS Payment is due. Kindly pay your due VPS amount!!!");    
    }

   l=MathFloor((AccountEquity()/Equity_per_lot/10000)/MarketInfo(Symbol(),24))*MarketInfo(Symbol(),24);
   Lots=l;
   if (Lots<MarketInfo(Symbol(),23)) Lots=MarketInfo(Symbol(),23);
   if (Lots>MarketInfo(Symbol(),25)) Lots=MarketInfo(Symbol(),25);
   if (DynamicPips) {
      double hival=High[iHighest(NULL,period,MODE_HIGH,Glubina,1)];    // calculate highest and lowest price from last bar to 24 bars ago
      double loval=Low[iLowest(NULL,period,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--) {
      komoles=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);
         if (iLots<MarketInfo(Symbol(),23)) iLots=MarketInfo(Symbol(),23);
         if (iLots>MarketInfo(Symbol(),25)) iLots=MarketInfo(Symbol(),25);   
         RefreshRates();
         ticket = OpenPendingOrder(1, iLots, Bid, slip, Ask, 0, 0, EAName + "-" + Symbol() +period+ "-" + 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);
            if (iLots<MarketInfo(Symbol(),23)) iLots=MarketInfo(Symbol(),23);
            if (iLots>MarketInfo(Symbol(),25)) iLots=MarketInfo(Symbol(),25);   
            ticket = OpenPendingOrder(0, iLots, Ask, slip, Bid, 0, 0, EAName + "-" + Symbol() + period + "-" +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(), period, 2);
      CurrCl = iClose(Symbol(), period, 1);
      SellLimit = Bid;
      BuyLimit = Ask;
      if (!LongTrade) {
         NumOfTrades = total;
         iLots = NormalizeDouble(Lots * MathPow(LotExponent, NumOfTrades), lotdecimal);
         if (iLots<MarketInfo(Symbol(),23)) iLots=MarketInfo(Symbol(),23);
         if (iLots>MarketInfo(Symbol(),25)) iLots=MarketInfo(Symbol(),25);   
         if (!LongTrade) {

                ticket = OpenPendingOrder(0, iLots, BuyLimit, slip, BuyLimit, 0, 0, EAName + "-" + Symbol() +period+  "-" +NumOfTrades, MagicNumber, 0, Lime);

               if (ticket < 0) {
                  Print("Error: ", GetLastError());
                  return (0);
               }
               LastBuyPrice = FindLastBuyPrice();
               NewOrdersPlaced = TRUE;

         } 
         if (ticket > 0) expiration = datetime(TimeCurrent() + 60.0 * (60.0 * MaxTradeOpenHours));
         TradeNow = FALSE;
      }
   }
   total = CountTrades();
   AveragePrice = 0;
   double Count = 0;
   for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
      komoles=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--) {
         komoles=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 (NewOrdersPlaced) {
      if (flag == TRUE) {
         for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
            komoles=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
            if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) 
            komoles=OrderModify(OrderTicket(), NormalizeDouble(AveragePrice,Digits), NormalizeDouble(OrderStopLoss(),Digits), NormalizeDouble(PriceTarget,Digits), 0, Yellow);
            NewOrdersPlaced = FALSE;
 

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

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

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

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

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

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

Стоимость полного кода
1 571,50₽ ≈ $19.21