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