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

Dragon Expert v4.1

dragon expert advisor v4.1 updated 2019 .mq4
Вы автор или правообладатель?

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

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

О программе

Dragon Expert v4.1 — торговый советник для платформы MetaTrader 4. Советник обрабатывает рыночные события в реальном времени через OnTick, управляет открытыми позициями и размещает новые ордера с использованием торговых функций MetaTrader 4. Поддерживает сеточную торговлю с несколькими уровнями накопления позиций, расчёт размера лота с учётом риска и свободного маржи, а также фильтрацию торговли по времени.

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

НастройкаОписание
CopyRight_by Автор прав — Текстовый параметр, задающий строку авторских прав.
CopyRight Название версии — Текстовый параметр, содержащий название и версию продукта.
Website Веб-сайт — Текстовый параметр для указания адреса сайта.
email Email — Текстовый параметр для указания адреса электронной почты.
Pin Code Real Account License (notes) Примечание — Текстовый параметр, используемый для ввода PIN-кода лицензии реального счёта.
Magic Магическое число — Целочисленный идентификатор ордеров для их маркировки и фильтрации.
Lots Лот — Базовый размер лота для открытия сделок.
multiplier Множитель — Множитель, определяющий увеличение размера лота на последующих уровнях.
Distance (pips) (note) Расстояние — Расстояние в пунктах для размещения следующего ордера в сетке.
Take Profit (pips) (pairglobalprofit) Глобальная прибыль — Целевая прибыль в пунктах для закрытия всех позиций.
Max Level Martingale (tradesperday) Сделок в день — Максимальное количество сделок, разрешённых за текущий день.
Level Risk (Risk) Риск — Процент риска, используемый при автоматическом расчёте размера лота.
Target Equity for Withdraw (USD) (Target) Целевая equity — Целевое значение equity в USD, при достижении которого советник прекращает торговлю.
Use Virtual Take Profit (UseVirtual) Виртуальный стоп-лосс — Переключатель, включающий использование виртуального фиксации прибыли.
Time Filter (timefilter) Фильтр по времени — Переключатель ограничения торговли по заданному часовому диапазону.
Start Hour (Broker Time) (Start_Hour) Час начала — Начальный час торгового окна по времени брокера.
End Hour (Broker Time) (Finish_Hour) Час окончания — Конечный час торгового окна по времени брокера.
Получить полный код

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

#property version   "4.1"
#property description "DRAGONEXPERTFX.COM\n"
#property strict

extern string CopyRight_by="  ";
extern string CopyRight="Dragon Expert v4.1";
extern string Website="DRAGONEXPERTFX.COM";
extern string email="************************";
extern string notes="0"; //Pin Code Real Account License
extern int    Magic    = 102030;
extern double Lots      = 0.01;
extern double multiplier      = 1.0;  
extern double note    = 10; // Distance (pips) 
extern double pairglobalprofit= 8; //Take Profit (pips)
extern int    tradesperday    = 99; //Max Level Martingale
extern double Risk      = 2; //Level Risk
extern double Target    = 10000000.0; // Target Equity for Withdraw (USD) 
extern bool   UseVirtual        = True;// Use Virtual Take Profit
extern bool   timefilter        = false;// Time Filter
extern int    Start_Hour      = 23;// Start Hour (Broker Time)
extern int     Finish_Hour     = 8;// End Hour (Broker Time)

bool   MM        = false;                       
double LotDigits = 2;   
double profit          = 8;
double globalprofit    = 8;
double maximaloss      = 0;
bool   openonnewcandle = false;
 double spacePips       = 100;
 int    spaceOrders     = 5;
 double spaceLots       = 0.03;
 double space1Pips      = 100;
 int    space1Orders    = 1;
 double space1Lots      = 0.05;
 double space2Pips      = 100;
 int    space2Orders    = 1;
 double space2Lots      = 0.07;
 double space3Pips      = 100;
 int    space3Orders    = 99;
 double space3Lots      = 0.09;
 int     magicbuy        = 1;
 string  buycomment      = "";
 int     magicsell       = 2;
 string  sellcomment     = "";
 int     Start_Minute    = 00;
 int     Finish_Minute   = 59;
 bool    smaParabolicEntry = false;
 int     cciperiod =     0;
 double  ccimax    =   100;
 double  ccimin    =  -100;
 bool    suspendtrades     = false;
 bool    closeallsellsnow  = false;
 bool    closeallbuysnow   = false;
 bool    closeallnow       = false;
int     DisplayX          = 0;
int     DisplayY          = 0;
int     fontSise          = 0;
string  fontName          = "";
color   colour            = Yellow;

double totalprofit; 
bool   sellallowed=true;
bool   buyallowed=true;
bool   firebuy=true;
bool   firesell=true;
string stoptrading="0"; 
bool   validSetup=true;
string error;
int    DisplayCount      = 0;
bool    KeepTextOnTop     = False;
string    txt,txt1;
string    txt2="";
string    txt3="";
color col = ForestGreen;

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

void OnDeinit(const int reason)
{
}

void RemoveAllObjects()
{
   for(int i = ObjectsTotal() - 1; i >= 0; i--)
   {
      if (StringFind(ObjectName(i),"EA-",0) > -1)  ObjectDelete(ObjectName(i));
   }
}

void Display(string text)
{
  string lab_str = "EA-" + IntegerToString(DisplayCount);  
  double ofset = 0;  

  ObjectCreate("EA-BG",OBJ_RECTANGLE_LABEL,0,0,0);
  ObjectSet("EA-BG", OBJPROP_XDISTANCE, DisplayX-20);
  ObjectSet("EA-BG", OBJPROP_YDISTANCE, DisplayY-20);
  ObjectSet("EA-BG", OBJPROP_XSIZE,1);
  ObjectSet("EA-BG", OBJPROP_YSIZE,1);
  ObjectSet("EA-BG", OBJPROP_BGCOLOR,C'0,0,0');
  ObjectSet("EA-BG", OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
  ObjectSet("EA-BG", OBJPROP_CORNER,CORNER_LEFT_UPPER);
  ObjectSet("EA-BG", OBJPROP_STYLE,STYLE_SOLID);
  ObjectSet("EA-BG", OBJPROP_COLOR,clrWhite);
  ObjectSet("EA-BG", OBJPROP_WIDTH,1);
  ObjectSet("EA-BG", OBJPROP_BACK,false);

  ObjectCreate(lab_str, OBJ_LABEL, 0, 0, 0);
  ObjectSet(lab_str, OBJPROP_CORNER, 0);
  ObjectSet(lab_str, OBJPROP_XDISTANCE, DisplayX + ofset);
  ObjectSet(lab_str, OBJPROP_YDISTANCE, DisplayY+DisplayCount*(fontSise+9));
  ObjectSet(lab_str, OBJPROP_BACK, false);
  ObjectSetText(lab_str, text, fontSise, fontName, colour);

}

void SM(string message)
{
   DisplayCount++;
   Display(message);

}//End void SM()

void DisplayErrors()
{
   DisplayCount=0;
   colour=Red;
   SM("Trading turned OFF");
   SM("");
   SM("Invalid settings:");
   SM(error);
}

void ShowStatus()
{
   if(IsOptimization()) return;

   DisplayCount=0;

   double lotsTrading=0;
   int openTrades=0;
   double profitLoss=0; 
   for (int k = OrdersTotal();k >=0 ;k--)
   {  
      if (OrderSelect(k, SELECT_BY_POS))
      {
          if ( OrderSymbol() == Symbol() )
          {
               if (OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell) 
               {
                  lotsTrading+=OrderLots();
                  openTrades=openTrades+1;
                  profitLoss += (OrderProfit() + OrderSwap() + OrderCommission());
               }
          }
      }
   }

   int wonTrades=0;
   int lostTrades=0;
   double profitToday=0;
   double profitYesterday=0;   
   double profitTotal=0;  
   double totalLotsTraded=0;
   double maxLotsizeUsed=0;
   double profitFactor=-1;
   double totalAmountWon=0;
   double totalAmountLost=0;
   datetime today     = TimeCurrent() ;
   datetime yesterday = TimeCurrent() - (60 * 60 * 24);
   for (int l=OrdersHistoryTotal();l >= 0;l--)
   {
      if(OrderSelect(l, SELECT_BY_POS,MODE_HISTORY))
      {
        if ( OrderSymbol() == Symbol() )
        {
           if ( OrderMagicNumber() == magicbuy || OrderMagicNumber() == magicsell )
           {
               totalLotsTraded += OrderLots();
               maxLotsizeUsed   = MathMax(maxLotsizeUsed, OrderLots());
               if (OrderProfit() > 0) wonTrades++;
               else lostTrades++;

               double orderProfit = (OrderProfit() + OrderSwap() + OrderCommission());
               if (orderProfit<0) totalAmountLost += orderProfit;
               else totalAmountWon += orderProfit;

               profitTotal += orderProfit;

               if( TimeDay   (OrderCloseTime()) == TimeDay(today) &&
                   TimeMonth (OrderCloseTime()) == TimeMonth(today) &&
                   TimeYear  (OrderCloseTime()) == TimeYear(today) )
               {
                  profitToday += orderProfit;
               }

               if( TimeDay  (OrderCloseTime()) == TimeDay(yesterday) &&
                   TimeMonth(OrderCloseTime()) == TimeMonth(yesterday) &&
                   TimeYear (OrderCloseTime()) == TimeYear(yesterday) )
               {
                  profitYesterday += orderProfit;
               }
            }
        }
      }
   }
   if (totalAmountWon!=0 && totalAmountLost!=0)
   {
      profitFactor=MathAbs(totalAmountWon / totalAmountLost);
   }

   double totalTradeCount=(wonTrades+lostTrades);

}

double GetLotSize()
{
   double minlot    = MarketInfo(Symbol(), MODE_MINLOT);
   double maxlot    = MarketInfo(Symbol(), MODE_MAXLOT);
   double leverage  = AccountLeverage();
   double lotsize   = MarketInfo(Symbol(), MODE_LOTSIZE);
   double stoplevel = MarketInfo(Symbol(), MODE_STOPLEVEL);
   double MinLots = 0.01; 
   double MaximalLots = 50.0;
   double lots = Lots;

   if(MM)
   {
      lots = NormalizeDouble(AccountFreeMargin() * Risk/100 / 1000.0, LotDigits);
      if(lots < minlot) lots = minlot;
      if (lots > MaximalLots) lots = MaximalLots;
      if (AccountFreeMargin() < Ask * lots * lotsize / leverage) 
      {
         Print("We have no money. Lots = ", lots, " , Free Margin = ", AccountFreeMargin());
         Comment("We have no money. Lots = ", lots, " , Free Margin = ", AccountFreeMargin());
      }
   }
   else lots=NormalizeDouble(Lots, Digits);
   return(lots);
}

void OnTick()
{
      // код доступен только после оплаты
   }
   if (!validSetup) 
   {
      DisplayErrors();
      return;
   }

   int  ticketBuyOrder       =  GetTicketOfLargestBuyOrder();
   int  ticketSellOrder      =  GetTicketOfLargestSellOrder();
   bool isNewBar             =  IsNewBar();
   int  totalTradesDoneToday =  TradesToday();
   int  index;

   ShowStatus();

   if (GlobalVariableGet(stoptrading) == 1 && OrdersTotal() == 0 && CheckTradingTime() == true)
   {
      GlobalVariableSet(stoptrading,0);  
   }

   if (!smaParabolicEntry)
   {
      if (cciperiod == 0)
      {
         firesell = true;
         firebuy  = true;  
      } 
   }

   if (smaParabolicEntry)
   {
      if (isNewBar==true)
      {
         firebuy  = true;
         firesell = true; 
         double ima  = iMA(NULL, 0, 0, 0, MODE_LWMA, PRICE_WEIGHTED, 0);
         double isar = iMA(NULL, 0, 0, 0, MODE_LWMA, PRICE_WEIGHTED, 0);
         if(isar < ima)
         {
            firesell = true;
            firebuy = true;
         }

         if( isar > ima) 
         {
            firesell = true;
            firebuy = true;
         }
      }
   }

   if (cciperiod > 0 && isNewBar == true)
   {
      firebuy  = true;
      firesell = true;
      double cci = iCCI(Symbol(), 0, cciperiod, PRICE_TYPICAL, 0);

      if(sellallowed && cci < ccimin) 
      {
         firesell = true;
         sellallowed = true; 

      }
      if(buyallowed  && cci > ccimax) 
      {
         firebuy = true;
         buyallowed = true; 
      }

      if (cci < ccimax && cci > ccimin)
      {
         buyallowed  = true;
         sellallowed = true;
      }
   }

   if 

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

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

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

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

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

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

Стоимость полного кода
1 659₽ ≈ $20.28