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 — Текстовый параметр для указания адреса электронной почты. | |
| 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.