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

MY MILLIONS EA

my millions ea.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. Советник предназначен для автоматической торговли на одном выбранном инструменте и использует набор пользовательских настроек для управления рисками, сопровождения позиций и определения моментов входа в рынок.

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

Советник использует технические индикаторы, такие как RSI, скользящие средние и стандартное отклонение, для определения направления сделок и расчёта расстояния между ордерами. Реализованы функции адаптивного RSI и пересечения MA с RSI, которые могут влиять на принятие торговых решений. Также имеется возможность реверса направления торговли и защиты от трендовых движений.

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

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

НастройкаОписание
0=Broker GMT. (GMTOffset) Смещение GMT — Смещение времени брокера относительно GMT. 0 означает время брокера.
TradeComment Комментарий к сделке — Комментарий, добавляемый к торговым ордерам.
MoneyManagementset Настройки управления капиталом — Заголовок группы настроек для управления капиталом.
Portion of account you want to trade on this pair (Portion) Доля счёта — Доля счёта, выделенная для торговли на данной паре.
Close all orders when negative Float is excessive. (UseEquityProtection) Защита капитала — Закрывает все ордера при чрезмерном отрицательном плавающем убытке.
Percent of portion for max Float level. (FloatPercent) Процент плавающего убытка — Процент от выделенной части для максимального уровня плавающего убытка.
Set to protect from internet loss (UsePowerOutSL) Защита при потере связи — Устанавливает защиту на случай потери соединения с интернетом.
will autocalculate lot size, lot increment and profit target (MoneyMangement) Управление капиталом — Если включено, размер лота, шаг увеличения и цель по прибыли рассчитываются автоматически.
equals 4% or .04 of account balance for base lot (MaximumRisk) Максимальный риск — Максимальный риск в процентах от баланса для базового лота.
LotSize Размер лота — Базовый размер лота для торговли.
must be set to .01 or greater (LotIncrement) Шаг увеличения лота — Шаг увеличения лота. Должен быть не менее 0.01.
Tolerance for opening and closing of orders (Slippage) Проскальзывание — Допустимое проскальзывание при открытии и закрытии ордеров.
_Piplite_EA_Set_ Настройки торговых параметров — Заголовок группы настроек для торговых параметров.
All orders closed when this profit target amount (in dollars) is reached (ProfitTarget) Цель по прибыли — Целевая сумма прибыли в долларах, при достижении которой все ордера закрываются.
Increase/decrease ProfitTarget when MoneyMangement=true (ProfitSkew) Смещение цели прибыли — Увеличение или уменьшение цели по прибыли при включённом управлении капиталом.
1= mixed mode, 2= global mode, 3= split mode, 1 is best (ProfitMode) Режим прибыли — Режим фиксации прибыли: 1 — смешанный, 2 — глобальный, 3 — раздельный.
Will try to allow profit grow beyond ProfitTarget (ProfitTrailing) Сопровождение прибыли — Позволяет прибыли расти сверх установленной цели.
Maximum percent of MaxProfit allowed to decrease before close all orders (MaxRetrace) Максимальный откат прибыли — Максимальный процент снижения от максимальной прибыли, после которого все ордера закрываются.
true = will trade long when price is low and short and price is high. false = will trade long when p (ReverseDirection) Реверс направления — Если включено, торговля ведётся в длинную сторону при низкой цене и в короткую при высокой. Если выключено — наоборот.
Adaptive RSI For Trade Entry (UseARSI) Использовать адаптивный RSI — Включает использование адаптивного RSI для входа в рынок.
TF for ARSI (RSI_period) Период RSI — Таймфрейм для адаптивного RSI.
length of ARSI (ima_bars) Длина ARSI — Длина периода для адаптивного RSI.
level to trigger trade. Set to 0 for ATR to trigger entry (ARSI_trigger) Уровень срабатывания ARSI — Уровень для запуска сделки. При значении 0 вход выполняется по ATR.
Helps to prevent multiple trades in Trending Market (Use_MARSI_Cross) Использовать пересечение MA с RSI — Помогает предотвратить множественные сделки на трендовом рынке.
Best Period (RSIMA_MA_Period) Период MA для RSI — Период скользящей средней для пересечения MA с RSI.
Best Period (RSIMA_RSI_Period) Период RSI для MA — Период RSI для пересечения MA с RSI.
TrendProtect Защита от тренда — Включает защиту от трендовых движений с использованием RSI и заданного окна.
Window to define ranging market (Window) Окно диапазона — Окно для определения бокового рынка.
Helps reduce draw down by stopping new entries if number of seconds not passed (Use_Entry_Delay) Использовать задержку входа — Помогает снизить просадку, запрещая новые входы до истечения заданного количества секунд.
Number of seconds to wait before re-entries (Minimum_Entry_Delay) Минимальная задержка входа — Количество секунд ожидания перед повторным входом в рынок.
Spacing will be calculated using StDev (AutoSpacing) Автоматический расчёт расстояния — Если включено, расстояние между ордерами рассчитывается с использованием стандартного отклонения.
TF for StDev (StDevTF) Таймфрейм стандартного отклонения — Таймфрейм для расчёта стандартного отклонения.
lenght of StDev (StDevPer) Период стандартного отклонения — Длина периода для расчёта стандартного отклонения.
mode of StDev - 0=SMA, 1=EMA, 2=SMMA, 3=LWMA (StDevMode) Режим стандартного отклонения — Режим расчёта стандартного отклонения: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA.
Minimum distance of orders placed against the trend of the initial order, In effect only if AutoSpac (Spacing) Расстояние между ордерами — Минимальное расстояние между ордерами, размещаемыми против тренда начального ордера. Действует только при выключенном автоматическом расчёте.
Minimum distance of orders placed with the trend of the initial order (set to 1000 to disable ) (TrendSpacing) Расстояние по тренду — Минимальное расстояние между ордерами, размещаемыми по тренду начального ордера. Установите 1000 для отключения.
_Day_Time_Set_ Настройки дней и времени — Заголовок группы настроек для выбора дней и времени торговли.
UseTradeTime Использовать время торговли — Включает ограничение торговли по времени.
TradeHourStart Час начала торговли — Час начала торговли.
TradeHourEnd Час окончания торговли — Час окончания торговли.
Sunday Торговля в воскресенье — Разрешает торговлю в воскресенье.
Monday Торговля в понедельник — Разрешает торговлю в понедельник.
Tuesday Торговля во вторник — Разрешает торговлю во вторник.
Wednesday Торговля в среду — Разрешает торговлю в среду.
Thursday Торговля в четверг — Разрешает торговлю в четверг.
Friday Торговля в пятницу — Разрешает торговлю в пятницу.
NFP_Friday Торговля в пятницу NFP — Разрешает торговлю в первую пятницу месяца, когда публикуются данные по занятости в США.
DayPeriod Период в днях — Период в днях для дополнительных расчётов.
hedgecarpan Множитель хеджа — Множитель для хеджирования.
StopLoss Стоп-лосс — Размер стоп-лосса в пунктах.
Получить полный код

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

#include <stdlib.mqh>
#include <stderror.mqh>
#define  NL    "\n"

extern string  _Account_Settings_      = "Set your Account info";
extern int     InitialAccount          = 50; 
extern int     GMTOffset               = 0;    //0=Broker GMT.
extern string  TradeComment            = "";
extern string  MoneyManagementset      = "Set your trading tolerance";
extern double  Portion                 = 1;      // Portion of account you want to trade on this pair
extern bool    UseEquityProtection     = false;   // Close all orders when negative Float is excessive.
extern double  FloatPercent            = 100;     // Percent of portion for max Float level.
extern bool    UsePowerOutSL           = true;   // Set to protect from internet loss
extern bool    MoneyMangement          = false;   // will autocalculate lot size, lot increment and profit target
extern double  MaximumRisk             = 5;    // equals 4% or .04 of account balance for base lot
extern double  LotSize                 = 0.1;
extern double  LotIncrement            = 0;   // must be set to .01 or greater
extern int     Slippage                = 5;      // Tolerance for opening and closing of orders
extern string  _Piplite_EA_Set_        = "Set trade parameters";
extern double  ProfitTarget            = 1;      // All orders closed when this profit target amount (in dollars) is reached
extern double  ProfitSkew              = 50;      // Increase/decrease ProfitTarget when MoneyMangement=true
extern int     ProfitMode              = 1;      // 1= mixed mode, 2= global mode, 3= split mode, 1 is best
extern bool    ProfitTrailing          = true;   // Will try to allow profit grow beyond ProfitTarget
extern double  MaxRetrace              = 2;      // Maximum percent of MaxProfit allowed to decrease before close all orders
extern bool    ReverseDirection        = false;   // true = will trade long when price is low and short and price is high. false = will trade long when price is high and short when price is low
extern bool    UseARSI                 = false;   // Adaptive RSI For Trade Entry
extern int     RSI_period              = 30;     // TF for ARSI
extern int     ima_bars                = 10;     // length of ARSI
extern double  ARSI_trigger            = 0.008;  // level to trigger trade.  Set to 0 for ATR to trigger entry
extern bool    Use_MARSI_Cross         = true;  // Helps to prevent multiple trades in Trending Market
extern double  RSIMA_MA_Period         = 10;     // Best Period
extern double  RSIMA_RSI_Period        = 14;     // Best Period
extern bool    TrendProtect            = false;
extern double  Window                  = 40.0;   // Window to define ranging market  
extern bool    Use_Entry_Delay         = true;  // Helps reduce draw down by stopping new entries if number of seconds not passed
extern double  Minimum_Entry_Delay     = 300;   // Number of seconds to wait before re-entries
extern bool    AutoSpacing             = true;   // Spacing will be calculated using StDev
extern int     StDevTF                 = 60;     // TF for StDev
extern int     StDevPer                = 12;     // lenght of StDev
extern int     StDevMode               = 3;      // mode of StDev - 0=SMA, 1=EMA, 2=SMMA, 3=LWMA 
extern int     Spacing                 = 60;     // Minimum distance of orders placed against the trend of the initial order, In effect only if AutoSpacing=false
extern int     TrendSpacing            = 1;   // Minimum distance of orders placed with the trend of the initial order (set to 1000 to disable )
extern string  _Day_Time_Set_          = "Set days and time to trade";
extern bool    UseTradeTime            = false;
extern int     TradeHourStart          = 0;
extern int     TradeHourEnd            = 24;
extern bool    Sunday                  = true;
extern bool    Monday                  = true;
extern bool    Tuesday                 = true;
extern bool    Wednesday               = true;
extern bool    Thursday                = true;
extern bool    Friday                  = true;
extern bool    NFP_Friday              = false;
extern double  DayPeriod               = 5;
extern double  hedgecarpan             =1.5;
extern double  StopLoss                =20;
extern double Baccount                 =100000000;

int            Accounttype             = 0;
int            TradeStart;
int            TradeEnd;
double         stoploss                = 0;
int            slip                    = 0;
int            Error                   = 0;
int            Order                   = 0;
int            Reference               = 0;
double         TickPrice               = 0;
bool           TradeShort              = true;           //Allow placing of sell ordes
bool           TradeLong               = true;           //Allow placing of buy orders
int            OpenOnTick              = 0;
int            MaxBuys                 = 0;
int            MaxSells                = 0;
double         MaxProfit               = 0;
int            lotPrecision;
double         POSL;
int            count;
bool           TradeAllowed            = true;
double         PortionBalance, PortionEquity;
int            BrokerDecimal           = 1;
string         POSL_On                 = "No";
double         buysl, sellsl;      
int            MaximumBuyOrders        = 3;
int            MaximumSellOrders       = 3;
double         SL                      = 20;     // Performs better with no initial stoploss. 
double GECAL=1;
double GECSAT;
double LastProfit=0,LastProfit1=0;
double LotFactor=1;
double LProfitTarget =50;

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

int deinit(){
   Comment("Waiting for data tick.......................... ");
   ObjectsDeleteAll(0, OBJ_LABEL);   
   return (0);
}

void CalculateLotPrecision(){
   double lotstep=MarketInfo(Symbol(),MODE_LOTSTEP);
   if(lotstep==1) lotPrecision=0;
   if(lotstep==0.1) lotPrecision=1;
   if(lotstep==0.01) lotPrecision=2;
   if(lotstep==0.001) lotPrecision=3;
}

double AutoLot()
  {
   double lot;

   lot=NormalizeDouble(Accounttype*((AccountBalance()/10000)*(MaximumRisk/100))/Portion,lotPrecision);

   if(lot<0.01) lot=0.01;
   if(lot < MarketInfo(Symbol(),MODE_MINLOT)) lot = MarketInfo(Symbol(),MODE_MINLOT);
   if(lot>5.88 && Accounttype == 1) lot=5.88;
   if(lot>2.94 && Accounttype == 10) lot=2.94;

   return(lot);
  }

void PlaceBuyOrder()
{
   double BuyOrders, Lots;
   double LowestBuy = 1000, HighestBuy;

   TickPrice = 0;

   RefreshRates();

   for (Order = OrdersTotal() - 1; Order >= 0; Order--)
   {
      if (OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_BUY)
         {
            if (OrderOpenPrice() < LowestBuy) LowestBuy = OrderOpenPrice();
            if (OrderOpenPrice() > HighestBuy) HighestBuy = OrderOpenPrice();
            BuyOrders++;
         }
      }
   }

   Lots = NormalizeDouble(LotSize + (LotIncrement * BuyOrders * LotFactor), lotPrecision);

   if(BuyOrders==0) Lots = NormalizeDouble(LotSize, lotPrecision);

   if (Lots == 0) Lots = NormalizeDouble(LotSize, lotPrecision);

   if(IsTradeAllowed()==true  && (BuyOrders < MaximumBuyOrders))
   {
      if (SL == 0) stoploss = 0; 
      else stoploss = Ask - ((SL*BrokerDecimal) * Point);

			if(-1 == OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, stoploss, 0, TradeComment, Reference, 0, Green))
				Print("Error opening BUY order: " + ErrorDescription(GetLastError()) + " (C" + GetLastError() + ")  Ask:" + Ask + "  Slippage:" + Slippage);
			else TickPrice = Close[0];
   }
/*
   Error = GetLastError();
   if (Error != 0)
      Print("Error opening BUY order: " + ErrorDescription(Error) + " (C" + Error + ")  Ask:" + Ask + "  Slippage:" + Slippage);
   else
   {
      TickPrice = Close[0];
   }
*/
}

void PlaceSellOrder()
{
   double SellOrders, Lots;
   double HighestSell, LowestSell = 1000;

   TickPrice = 0;

   RefreshRates();

   for (Order = OrdersTotal() - 1; Order >= 0; Order--)
   {
      if (OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_SELL)
         {
            if (OrderOpenPrice() > HighestSell) HighestSell = OrderOpenPrice();
            if (OrderOpenPrice() < LowestSell) LowestSell = OrderOpenPrice();
            SellOrders++;
         }
      }
   }

   Lots = NormalizeDouble(LotSize + (LotIncrement * SellOrders*LotFactor), lotPrecision);

   if(SellOrders==0) Lots = NormalizeDouble(LotSize, lotPrecision);

   if (Lots == 0) Lots = NormalizeDouble(LotSize, lotPrecision);

   if(IsTradeAllowed()==true && (SellOrders < MaximumSellOrders))
   {  
      if (SL == 0) stoploss = 0; 
      else stoploss = Bid + ((SL*BrokerDecimal) * Point); 

			if(-1 == OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, stoploss, 0, TradeComment, Reference, 0, Red))
				Print("Error opening SELL order: " + ErrorDescription(GetLastError()) + " (D" + GetLastError() + ")  Bid:" + Bid + "  Slippage:" + Slippage);
			else TickPrice = Close[0];
   }
/*  
   Error = GetLastError();
   if (Error != 0)
      Print("Error opening SELL order: " + ErrorDescription(Error) + " (D" + Error + ")  Bid:" + Bid + "  Slippage:" + Slippage);
   else
   {
      TickPrice = Close[0];
   }
*/
}

void CloseAllBuyProfit()
{
int spread=MarketInfo(Symbol(),MODE_SPREAD);
   for(int i = OrdersTotal()-1; i >=0; i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       bool result = false;
       if (OrderSymbol()==Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_BUY)  
         {

           if (TimeCurrent()-OrderOpenTime() >=20) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Aqua );
         }
       }

  return; 
}

void CloseAllSellProfit()
{
int spread=MarketInfo(Symbol(),MODE_SPREAD);
   for(int i = OrdersTotal()-1; i >=0; i--)
      {
      OrderSelect(i, SELECT_BY_POS);
      bool result = false;
      if (OrderSymbol()==Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_SELL) 
       {

         if (TimeCurrent()-OrderOpenTime() >=20) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Lime );
       }
     }

  return; 
}

int start()
{
      // код доступен только после оплаты
   }
   if(MoneyMangement){LotSize=AutoLot();
      if(LotIncrement>0) LotIncrement=LotSize;}
   int            Session = 1;
   double         TotalProfit=0; 
   double         TotalOrders=0;
   double         TotalLots=0; 
   double         MarginPercent;
   static double  LowMarginPercent = 10000000, LowEquity = 10000000;
   double         BuyPipTarget, SellPipTarget;
   int            SellOrders, BuyOrders;
   double         BuyPips, SellPips, BuyLots, SellLots;
   double         LowestBuy = 999, HighestBuy = 0.0001, LowestSell = 999, HighestSell = 0.0001, HighPoint, MidPoint, LowPoint;
   double         Profit = 0, BuyProfit = 0, SellProfit = 0, PosBuyProfit = 0, PosSellProfit = 0;
   int            HighestBuyTicket, LowestBuyTicket, HighestSellTicket, LowestSellTicket;
   double         HighestBuyProfit, LowestBuyProfit, HighestSellProfit, LowestSellProfit;
   bool           SELLme = false;
   bool           BUYme = false;
   double         Margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   string         Message;
   bool           ProfitTargetReached = false; 
   datetime       LastOrderDateTime = 0;
   bool           EntryAllowed = true;  // can be used anywhere in start code to disable new entries for any reason
   int timehr,timemin;      

   for (Order = OrdersTotal() - 1; Order >= 0; Order--)
   {
      if (OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Reference)
         {

            if (OrderOpenTime() > LastOrderDateTime)
               LastOrderDateTime= OrderOpenTime();

            Profit = OrderProfit() + OrderSwap() + OrderCommission();

            if (OrderType() == OP_BUY)
            {
               if (OrderOpenPrice() >= HighestBuy)
               {
                  HighestBuy = OrderOpenPrice();
                  HighestBuyTicket = OrderTicket();
                  HighestBuyProfit = Profit;
               }

               if (OrderOpenPrice() <= LowestBuy)
               {
                  LowestBuy = OrderOpenPrice();
                  LowestBuyTicket = OrderTicket();
                  LowestBuyProfit = Profit;
               }

               BuyOrders++;
               if (BuyOrders > MaxBuys) MaxBuys = B

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

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

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

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

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

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

Стоимость полного кода
2 016,70₽ ≈ $24.65