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

forex gold investor mt4.mq4

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

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

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

О программе

Данный исходник представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Советник автоматически анализирует рынок и совершает сделки на основании сигналов индикатора Parabolic SAR, рассчитанного на нескольких таймфреймах одновременно.

В продукте реализована поддержка двух независимых торговых систем с раздельными параметрами риск-менеджмента, магическими числами, стоп-лоссами и тейк-профитами. Каждая система может быть включена или отключена отдельно, а также настроен режим работы только в длинную или короткую сторону.

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

Входные параметры покрывают все ключевые аспекты работы: размер лота, управление рисками, торговые часы, настройки стопов и профитов, магические числа и параметры защиты. Торговые операции выполняются через стандартные API MetaTrader 4 (OrderSend, OrderClose, OrderModify).

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

НастройкаОписание
WinLargeFonts Крупные шрифты — Переключатель использования крупных шрифтов в интерфейсе.
UseSystem1 Использовать систему 1 — Переключатель включения/отключения торговой системы 1.
UseSystem2 Использовать систему 2 — Переключатель включения/отключения торговой системы 2.
EA_Comment Комментарий к ордерам — Текстовый комментарий, добавляемый к ордерам советника.
MaxSpread Максимальный спред — Максимально допустимый спред в пунктах для открытия позиций.
Slippage Проскальзывание — Допустимое проскальзывание в пунктах при открытии и закрытии ордеров.
BR Заголовок базовых правил — Строковый параметр — заголовок раздела базовых правил.
LongTrades Разрешить длинные позиции — Переключатель разрешения открытия длинных позиций.
ShortTrades Разрешить короткие позиции — Переключатель разрешения открытия коротких позиций.
AutoGMT_Offset Автоматическое смещение GMT — Переключатель автоматического определения смещения часового пояса GMT.
ManualGMT_Offset Ручное смещение GMT — Вручную заданное смещение часового пояса GMT (часы).
DST_Usage Использование DST — Переключатель использования летнего/зимнего времени (DST).
NFA Режим NFA — Переключатель режима NFA (регулирование рисков).
No_Hedge Запрет хеджирования — Переключатель запрета хеджирования (открытия позиций в обоих направлениях).
StealthMode Скрытый режим — Переключатель скрытого режима работы советника.
PendingOrderDist Расстояние отложенных ордеров — Расстояние в пунктах для размещения отложенных ордеров.
StopLimitExpire Время жизни StopLimit — Время жизни StopLimit ордера в минутах.
ER Заголовок дополнительных правил — Строковый параметр — заголовок раздела дополнительных правил.
MondayStartHour Час начала торговли в понедельник — Час начала торговли в понедельник.
FridayExit Закрытие в пятницу — Переключатель принудительного закрытия позиций в пятницу.
LastTradeHour Последний час торговли — Последний допустимый час для открытия новых позиций.
ExitHour Час закрытия позиций — Час, к которому закрываются все позиции в конце торговой сессии.
MM1 Заголовок риск-менеджмента системы 1 — Строковый параметр — заголовок раздела управления рисками системы 1.
RecoveryMode1 Режим восстановления системы 1 — Переключатель режима восстановления для системы 1.
FixedLots1 Фиксированный лот для системы 1 — Фиксированный размер лота для системы 1.
AutoMM1 Автоматический лот для системы 1 — Параметр автоматического управления размером лота для системы 1.
AutoMM_Max1 Максимальный автоматический лот для системы 1 — Максимально допустимый автоматический лот для системы 1.
MM2 Заголовок риск-менеджмента системы 2 — Строковый параметр — заголовок раздела управления рисками системы 2.
RecoveryMode2 Режим восстановления системы 2 — Переключатель режима восстановления для системы 2.
FixedLots2 Фиксированный лот для системы 2 — Фиксированный размер лота для системы 2.
AutoMM2 Автоматический лот для системы 2 — Параметр автоматического управления размером лота для системы 2.
AutoMM_Max2 Максимальный автоматический лот для системы 2 — Максимально допустимый автоматический лот для системы 2.
Add_Lot_Multiplier Множитель добавления лота — Множитель для добавления к объёму лота.
SYS1 Заголовок настроек системы 1 — Строковый параметр — заголовок раздела настроек системы 1.
Sys1_LongOnly Только длинные для системы 1 — Переключатель работы системы 1 только в длинную сторону.
Magic1 Магическое число системы 1 — Магическое число для идентификации ордеров системы 1.
StopLoss1 Стоп-лосс системы 1 — Стоп-лосс в пунктах для системы 1.
TakeProfit1 Тейк-профит системы 1 — Тейк-профит в пунктах для системы 1.
SYS2 Заголовок настроек системы 2 — Строковый параметр — заголовок раздела настроек системы 2.
Magic2 Магическое число системы 2 — Магическое число для идентификации ордеров системы 2.
StopLoss2 Стоп-лосс системы 2 — Стоп-лосс в пунктах для системы 2.
TakeProfit2 Тейк-профит системы 2 — Тейк-профит в пунктах для системы 2.
Sys2MaxOrders Максимум ордеров системы 2 — Максимальное количество одновременных ордеров для системы 2.
TurboMode2 Ускоренный режим системы 2 — Переключатель ускоренного режима для системы 2.
NF Заголовок настроек новостей — Строковый параметр — заголовок раздела настроек фильтра новостей.
Avoid_News Избегать новостей — Переключатель избегания торговли в период новостей.
Include_Medium_News Включать новости среднего уровня — Переключатель включения новостей среднего уровня в фильтр.
Wait_Before_News Ожидание перед новостями — Время ожидания в минутах до выхода новостей.
Wait_After_News Ожидание после новостей — Время ожидания в минутах после выхода новостей перед возобновлением торговли.
TM Заголовок управления временем — Строковый параметр — заголовок раздела управления временем.
AllowedHour_ForBacktest Разрешённые часы для бэктеста — Строковый параметр, задающий разрешённые часы для бэктеста.
MondayTrading Торговля в понедельник — Переключатель торговли в понедельник.
MondayTradingHours Часы торговли в понедельник — Строковый параметр — разрешённые часы торговли в понедельник.
TuesdayTrading Торговля во вторник — Переключатель торговли во вторник.
TuesdayTradingHours Часы торговли во вторник — Строковый параметр — разрешённые часы торговли во вторник.
WednesdayTrading Торговля в среду — Переключатель торговли в среду.
WednesdayTradingHours Часы торговли в среду — Строковый параметр — разрешённые часы торговли в среду.
ThursdayTrading Торговля в четверг — Переключатель торговли в четверг.
ThursdayTradingHours Часы торговли в четверг — Строковый параметр — разрешённые часы торговли в четверг.
FridayTrading Торговля в пятницу — Переключатель торговли в пятницу.
FridayTradingHours Часы торговли в пятницу — Строковый параметр — разрешённые часы торговли в пятницу.
SaturdayTrading Торговля в субботу — Переключатель торговли в субботу.
SundayTrading Торговля в воскресенье — Переключатель торговли в воскресенье.
BS Заголовок настроек Broker Spy — Строковый параметр — заголовок раздела настроек Broker Spy.
BSM_Alerts Оповещения Broker Spy — Переключатель включения/отключения оповещений Broker Spy.
BSM_Alert_Open_Delay Задержка оповещения открытия — Задержка в миллисекундах для оповещения об открытии ордера (Broker Spy).
BSM_Alert_Open_Slippage Проскальзывание открытия — Допустимое проскальзывание для оповещения об открытии ордера (Broker Spy).
BSM_Alert_StopLimit_Delay Задержка оповещения StopLimit — Задержка в миллисекундах для оповещения об StopLimit ордере (Broker Spy).
BSM_Alert_StopLimit_Slippage Проскальзывание StopLimit — Допустимое проскальзывание для оповещения об StopLimit ордере (Broker Spy).
BSM_Alert_Close_Delay Задержка оповещения закрытия — Задержка в миллисекундах для оповещения о закрытии ордера (Broker Spy).
BSM_Alert_Close_Slippage Проскальзывание закрытия — Допустимое проскальзывание для оповещения о закрытии ордера (Broker Spy).
ProtectionPanel Панель защиты — Переключатель включения/отключения панели защиты.
m_maxlot Максимальный лот — Максимально допустимый размер лота.
cd0 Заголовок ежедневных защит — Строковый параметр — заголовок раздела ежедневных защит.
m_maxdloss Максимальный убыток в день — Максимальный допустимый убыток в день.
m_maxd_DD_p Процент максимальной просадки — Процент максимальной допустимой просадки.
m_resethr Час сброса лимитов — Час сброса ежедневных лимитов.
cd1 Заголовок защит счёта — Строковый параметр — заголовок раздела защит счёта.
m_minEquity Минимальный капитал — Минимально допустимый уровень собственного капитала (equity).
m_maxEquity_DD_p Процент просадки от капитала — Процент просадки от максимального капитала для срабатывания защиты.
m_maxEquity Максимальный капитал — Максимальный допустимый уровень собственного капитала (equity).
m_lossPause Пауза после лимита убытка — Пауза в секундах после срабатывания лимита убытка перед следующей попыткой.
Получить полный код

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

???#include <stdlib.mqh>
#include <stderror.mqh> 

extern bool WinLargeFonts = FALSE;
extern bool UseSystem1 = TRUE;
extern bool UseSystem2 = TRUE;
extern string EA_Comment = "";
extern double MaxSpread = 40.0;
extern int Slippage = 20;
extern string BR = "==== Basic Rules ====";
extern bool LongTrades = TRUE;
extern bool ShortTrades = TRUE;
extern bool AutoGMT_Offset = TRUE;
extern int ManualGMT_Offset = 2;
extern bool DST_Usage = TRUE;
extern bool NFA = FALSE;
extern bool No_Hedge = FALSE;
extern bool StealthMode = FALSE;
extern int PendingOrderDist = 0;
extern int StopLimitExpire = 15;
extern string ER = "==== Extra Rules ====";
extern int MondayStartHour = 0;
extern bool FridayExit = FALSE;
extern int LastTradeHour = 19;
extern int ExitHour = 20;
extern string MM1 = "==== System 1 Risk Management ====";
extern bool RecoveryMode1 = FALSE;
extern double FixedLots1 = 0.01;
extern double AutoMM1 = 0.0;
extern double AutoMM_Max1 = 10.0;
extern string MM2 = "==== System 2 Risk Management ====";
extern bool RecoveryMode2 = FALSE;
extern double FixedLots2 = 0.01;
extern double AutoMM2 = 0.0;
extern double AutoMM_Max2 = 10.0;
extern double Add_Lot_Multiplier = 1.0;
extern string SYS1 = "==== System 1 Settings ====";
extern bool Sys1_LongOnly = FALSE;
extern int Magic1 = 30001;
extern int StopLoss1 = 1500;
extern int TakeProfit1 = 1300;
extern string SYS2 = "==== System 2 Settings ====";
extern int Magic2 = 30002;
extern int StopLoss2 = 1700;
extern int TakeProfit2 = 0;
extern int Sys2MaxOrders = 2;
extern bool TurboMode2 = TRUE;
extern string NF = "==== News Filter Settings ====";
extern bool Avoid_News = FALSE;
extern bool Include_Medium_News = TRUE;
extern int Wait_Before_News = 30;
extern int Wait_After_News = 30;
extern string TM = "==== Time Management System ====";
extern string AllowedHour_ForBacktest = "-1";
extern bool MondayTrading = TRUE;
extern string MondayTradingHours = "all";
extern bool TuesdayTrading = TRUE;
extern string TuesdayTradingHours = "all";
extern bool WednesdayTrading = TRUE;
extern string WednesdayTradingHours = "all";
extern bool ThursdayTrading = TRUE;
extern string ThursdayTradingHours = "all";
extern bool FridayTrading = TRUE;
extern string FridayTradingHours = "all";
extern bool SaturdayTrading = TRUE;
extern bool SundayTrading = TRUE;
extern string BS = "==== Broker Spy Settings ====";
extern bool BSM_Alerts = TRUE;
extern int BSM_Alert_Open_Delay = 500;
extern double BSM_Alert_Open_Slippage = 20.0;
extern int BSM_Alert_StopLimit_Delay = 500;
extern double BSM_Alert_StopLimit_Slippage = 20.0;
extern int BSM_Alert_Close_Delay = 500;
extern double BSM_Alert_Close_Slippage = 20.0;
extern bool ProtectionPanel = TRUE;
extern double m_maxlot = 0.0;
extern string cd0 = "--- Daily Protections ---";
extern double m_maxdloss = 0.0;
extern double m_maxd_DD_p = 0.0;
extern int m_resethr = 0;
extern string cd1 = "--- Account Protections ---";
extern double m_minEquity = 0.0;
extern double m_maxEquity_DD_p = 0.0;
extern double m_maxEquity = 0.0;
extern int m_lossPause = 0;

 string  Expert_Name    = "";
 int     MagicNumberBase = 10000;

 double  Lots=0.1;

 string  ps1 = "--pSAR inputs--";
 int     pSAR_Step = 0.01;
 double  pSAR_Max = 0.1;
 int     pSAR1_TimeFrame = 60;
 int     pSAR2_TimeFrame = 15;
 int     pSAR3_TimeFrame = 1;

 string  st6 = "--Profit Controls--";
 double  StopLoss=15;
 double  TakeProfit=0;

 int     MaxTrades = 1;

int            MagicNumber=0;
string         setup;
int            TradesInThisSymbol = 0;
datetime       timeprev = 0;

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

int deinit()
{
 return(0);
}

int CheckExitCondition(int cmd)
{

   return (false);
}

bool CheckEntryCondition(int cmd)
{
   double pSAR_H1, pSAR_M15, pSAR_M1, pSAR_M1Prev;

   pSAR_H1 = iSAR(Symbol(), pSAR1_TimeFrame, pSAR_Step, pSAR_Max, 1);
   pSAR_M15 = iSAR(Symbol(), pSAR2_TimeFrame, pSAR_Step, pSAR_Max, 1);
   pSAR_M1 = iSAR(Symbol(), pSAR3_TimeFrame, pSAR_Step, pSAR_Max, 1);
   pSAR_M1Prev = iSAR(Symbol(), pSAR3_TimeFrame, pSAR_Step, pSAR_Max, 2);

   switch (cmd)
   {
     case OP_BUY  : if (pSAR_H1 < Bid)
                    {
                       if (pSAR_M15 < Bid)
                       {
                          if (pSAR_M1 < Bid && pSAR_M1Prev > Bid) return (true);
                       }
                    }
                    break;
     case OP_SELL : if (pSAR_H1 > Bid)
                    {
                       if (pSAR_M15 > Bid)
                       {
                          if (pSAR_M1 > Bid && pSAR_M1Prev < Bid) return (true);
                       }
                    }   }

   return (false);
}

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

int OpenBuyOrder(double mLots, double mStopLoss, double mTakeProfit, int mSlippage, string mComment, int mMagic, color mColor)
{
   int err,ticket;
   double myStopLoss = 0, myTakeProfit = 0;

   RefreshRates();
   myStopLoss = StopLong(Bid,mStopLoss);
   myTakeProfit = TakeLong(Bid,mTakeProfit);

   if (Digits > 0) 
   {
     myStopLoss = NormalizeDouble( myStopLoss, Digits);
     myTakeProfit = NormalizeDouble( myTakeProfit, Digits); 
   }
   ticket=OrderSend(Symbol(),OP_BUY,mLots,Ask,mSlippage,myStopLoss,myTakeProfit,mComment,mMagic,0,mColor); 
   if (ticket > 0)
   {
    if (OrderSelect( ticket,SELECT_BY_TICKET, MODE_TRADES) ) 
     {
      Print("BUY order opened : ", OrderOpenPrice( ));

     }
   }
   else
   {
      err = GetLastError();
      Print("Error opening BUY order [" + setup + "]: (" + err + ") " + ErrorDescription(err)); 
   }

   return(ticket);
}

int OpenSellOrder(double mLots, double mStopLoss, double mTakeProfit, int mSlippage, string mComment, int mMagic, color mColor)
{
   int err, ticket;
   double myBid, myAsk, myStopLoss = 0, myTakeProfit = 0;

   myStopLoss = StopShort(Ask,mStopLoss);
   myTakeProfit = TakeShort(Ask,mTakeProfit);

   if (Digits > 0) 
   {
     myStopLoss = NormalizeDouble( myStopLoss, Digits);
     myTakeProfit = NormalizeDouble( myTakeProfit, Digits); 
   }
   ticket=OrderSend(Symbol(),OP_SELL,mLots,Bid,mSlippage,myStopLoss,myTakeProfit,mComment,mMagic,0,mColor); 
   if (ticket > 0)
   {
     if (OrderSelect( ticket,SELECT_BY_TICKET, MODE_TRADES) ) 
     {
      Print("Sell order opened : ", OrderOpenPrice());

     }
   }
   else
  

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

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

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

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

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

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

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