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

ForexHacked 2.5

forexhacked25-edu.mq4

Похожие материалы по тегам

#3 news panel (black) bgp.mq5MQL5 / MetaTrader 5 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговindicator marketmind for tradingview.pineTradingView · 1 общих теговmarket crusher ea guidlines.txtMQL · 1 общих теговsovetnikov_v5.mq4MQL4 / MetaTrader 4 · 1 общих теговunlocker manual.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

«ForexHacked 2.5» — это торговый советник для платформы MetaTrader 4. Экспертный советник анализирует ценовые данные с использованием индикаторов iSAR и скользящего среднего (iMA) для формирования торговых сигналов на покупку и продажу. При совпадении сигналов с допустимым временем торговли советник открывает позиции на рынке.

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

Имеется функция трейлинга для управления стоп-лоссом и тейк-профитом по ходу движения цены. Советник отслеживает соотношение баланса и эквити для защиты аккаунта от значительных просадок, автоматически закрывая все позиции при достижении заданных порогов. Вся деятельность записывается в лог-файл.

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

НастройкаОписание
_________ Предупреждение — Текстовый параметр-предупреждение о необходимости уникальности магического числа для каждого графика.
MagicNumber Магическое число — Уникальный идентификатор магического числа для ордеров данного советника.
Lots Размер лота — Начальный размер лота для открытия позиции.
TakeProfit Тейк-профит — Расстояние в пунктах до тейк-профита при открытии позиции.
Booster Бустер — Множитель увеличения размера лота при добавлении последующих позиций.
MaxBuyOrders Максимум покупательских ордеров — Максимальное количество одновременно открытых покупательских позиций.
MaxSellOrders Максимум продавательских ордеров — Максимальное количество одновременно открытых продавательских позиций.
AllowiStopLoss Разрешить стоп-лосс — Переключатель включения/отключения дополнительного стоп-лосса при открытии позиции.
iStopLoss Дополнительный стоп-лосс — Расстояние в пунктах для дополнительного стоп-лосса при его включении.
StartHour Час начала торговли — Час начала допустимого торгового окна.
StartMinute Минута начала торговли — Минута начала допустимого торгового окна.
StopHour Час окончания торговли — Час окончания допустимого торгового окна.
StopMinute Минута окончания торговли — Минута окончания допустимого торгового окна.
StartingTradeDay Начальный день торговли — Начальный день недели для торговли (0 — воскресенье).
EndingTradeDay Конечный день торговли — Конечный день недели для торговли (0 — воскресенье, 6 — суббота).
slippage Допустимый проскальзывание — Допустимое отклонение цены исполнения ордера в пунктах.
allowTrending Разрешить трейлинг — Переключатель включения/отключения функции трейлинга для управления стоп-лоссом и тейк-профитом.
trendTrigger Триггер трейлинга — Расстояние в пунктах до тейк-профита, при котором активируется трейлинг.
trendPips Пипсы трейлинга тейк-профита — Количество пипсов для добавления к тейк-профиту при трейлинге.
trendStoploss Пипсы трейлинга стоп-лосса — Количество пипсов для смещения стоп-лосса при трейлинге.
StopLossPct Процент стоп-лосса по балансу — Процентное значение от баланса, при достижении которого все позиции закрываются для защиты аккаунта.
TakeProfitPct Процент тейк-профита по балансу — Процентное значение от баланса, при достижении которого сбрасывается флаг защиты аккаунта.
PauseNewTrades Пауза новых сделок — Переключатель приостановки открытия новых позиций.
StoppedOutPause Пауза после стоп-аута — Пауза в секундах после принудительного закрытия позиций перед возобновлением торговли.
SupportECN Поддержка ECN — Переключатель поддержки режима ECN-брокера при открытии и модификации ордеров.
MassHedge Массовое хеджирование — Переключатель включения/отключения режима массового хеджирования.
MassHedgeBooster Бустер массового хеджирования — Множитель увеличения лота при массовом хеджировании.
TradesDeep Глубина торговли — Количество позиций одного направления, после которого разрешается хеджирование.
EA_Name Имя советника — Текстовый параметр, задающий имя советника, используемое в комментариях к ордерам.
PipStarter Начальные пипсы — Расстояние в пунктах от цены открытия, при котором добавляется новая позиция.
Получить полный код

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

extern string _________ = "Magic Number Must be UNIQUE for each chart!";
extern int MagicNumber = 133714;
extern double Lots = 0.01;
extern double TakeProfit = 45.0;
extern double Booster = 1.7;
extern int MaxBuyOrders = 9;
extern int MaxSellOrders = 9;
extern bool AllowiStopLoss = FALSE;
extern int iStopLoss = 300;
extern int StartHour = 0;
extern int StartMinute = 0;
extern int StopHour = 23;
extern int StopMinute = 55;
extern int StartingTradeDay = 0;
extern int EndingTradeDay = 7;
extern int slippage = 3;
extern bool allowTrending = FALSE;
extern int trendTrigger = 3;
extern int trendPips = 5;
extern int trendStoploss = 5;
extern double StopLossPct = 100.0;
extern double TakeProfitPct = 100.0;
extern bool PauseNewTrades = FALSE;
extern int StoppedOutPause = 600;
extern bool SupportECN = TRUE;
extern bool MassHedge = FALSE;
extern double MassHedgeBooster = 1.01;
extern int TradesDeep = 5;
extern string EA_Name = "ForexHacked 2.5";
extern int PipStarter = 31;
bool UseNewsFilter = FALSE;
int MinsBeforeNews = 60; 
int MinsAfterNews  = 60;
int NewsImpact = 3;

double earnings = 0.0;
double priceadd = 0.0;
int stoploss = 0;
int gi_208 = 5000;
double gd_244;
bool gi_260;
int imaaverage = 7;
int imamashift = 0;
int imamamethod = MODE_LWMA;
int imaappliedprice = PRICE_WEIGHTED;
double isarstep = 0.25;
double isarmax = 0.2;
int previoustime;
double point;
int lotround;
bool gi_384;
bool gi_388;
bool gi_392;
bool gi_396;
int ticket;
int command;
string hedgetext = " hedged";
int filename;

void Log(string as_0) 
{
   if (filename >= 0) 
		FileWrite(filename, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + ": " + as_0);
}

double CalcLots(double a_minlot_0) 
{
   double minlot_32;
   double ld_8 = AccountEquity() - gi_208;
   double ld_16 = 0;
   double ld_24 = 0;
   minlot_32 = a_minlot_0;
   if (minlot_32 < 0.0) 
		Print("ERROR tmp=" + ld_8 + ",a=" + ld_16 + ",b=" + ld_24 + ",AccountEquity()=" + AccountEquity());
   Log("Equity=" + AccountEquity() + ",lots=" + minlot_32);
   return (minlot_32);
}

int deinit() 
{
   FileClose(filename);
   return (0);
}

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

int IsTradeTime() 
{
   int li_8;
   if (DayOfWeek() < StartingTradeDay || DayOfWeek() > EndingTradeDay) 
		return (0);
   int li_0 = 60 * TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent());
   int li_4 = 60 * StartHour + StartMinute;
   li_8 = 60 * StopHour + li_8;
   if (li_4 == li_8) 
		return (1);
   if (li_4 < li_8) {
      if (!(li_0 >= li_4 && li_0 < li_8)) 
			return (0);
      return (1);
   }
   if (li_4 > li_8) 
	{
      if (li_0 >= li_4 || li_0 < li_8) 
			return (1);
   } 
	else 
		return (0);
   return (0);
}

double GetLastLotSize(int ai_0) 
{
   for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) 
	{
      if (OrderSelect(pos_4, SELECT_BY_POS)) 
		{
         if (OrderMagicNumber() == MagicNumber) 
			{
            if (StringFind(OrderComment(), hedgetext) == -1) 
				{
               Log("GetLastLotSize " + ai_0 + ",OrderLots()=" + OrderLots());
               return (OrderLots());
            }
         }
      }
   }
   Log("GetLastLotSize " + ai_0 + " wasnt found");
   return (0);
}

int OpenBuy(bool ai_0 = FALSE) 
{
   int ticket_4;
   double lots_40;
   double price_8 = 0;
   double price_16 = 0;
   string ls_24 = "";
   bool li_ret_32 = TRUE;
   if (TimeCurrent() - previoustime < 60) 
		return (0);
   if (ai_0 && (!gi_392)) 
		return (0);
   if (!GlobalVariableCheck("PERMISSION")) 
	{
      GlobalVariableSet("PERMISSION", TimeCurrent());
      if (!SupportECN) 
		{
         if (ai_0) 
			{
            if (OrderSelect(ticket, SELECT_BY_TICKET)) 
					price_16 = OrderTakeProfit() - MarketInfo(Symbol(), MODE_SPREAD) * Point;
         } 
			else 
				price_8 = Ask + priceadd * Point;
      }
      if (ai_0) 
			ls_24 = hedgetext;
      if (AllowiStopLoss == TRUE) 
			price_16 = Ask - stoploss * Point;
      if (ai_0) 
			lots_40 = NormalizeDouble(GetLastLotSize(1) * MassHedgeBooster, 2);
      else 
			lots_40 = CalcLots(gd_244);
      if (!SupportECN) 
			ticket_4 = OrderSend(Symbol(), OP_BUY, lots_40, Ask, slippage, price_16, price_8, EA_Name + ls_24, MagicNumber, 0, Green);
      else {
         ticket_4 = OrderSend(Symbol(), OP_BUY, lots_40, Ask, slippage, 0, 0, EA_Name + ls_24, MagicNumber, 0, Green);
         Sleep(1000);
         OrderModify(ticket_4, OrderOpenPrice(), price_16, price_8, 0, Black);
      }
      previoustime = TimeCurrent();
      if (ticket_4 != -1) 
		{
         if (!ai_0) 
			{
            ticket = ticket_4;
            Log("BUY hedgedTicket=" + ticket);
         } 
			else 
			{
            Log("BUY Hacked_ticket=" + ticket_4);
            command = 0;
         }
      } 
		else 
		{
         Log("failed sell");
         li_ret_32 = FALSE;
      }
   }
   GlobalVariableDel("PERMISSION");
   return (li_ret_32);
}

int OpenSell(bool ai_0 = FALSE) 
{
   int ticket_4;
   double lots_36;
   double price_8 = 0;
   double price_16 = 0;
   string ls_24 = "";
   bool li_ret_32 = TRUE;
   if (TimeCurrent() - previoustime < 60) 
		return (0);
   if (ai_0 && (!gi_396)) 
	return (0);
   if (!GlobalVariableCheck("PERMISSION")) 
	{
      GlobalVariableSet("PERMISSION", TimeCurrent());
      if (!SupportECN) 
		{
         if (ai_0) 
			{
            if (OrderSelect(ticket, SELECT_BY_TICKET)) 
					price_16 = OrderTakeProfit() + MarketInfo(Symbol(), MODE_SPREAD) * Point;
         } 
			else 
				price_8 = Bid - priceadd * Point;
      }
      if (ai_0) 
			ls_24 = hedgetext;
      if (AllowiStopLoss == TRUE) 
			price_16 = Bid + stoploss * Point;
      if (ai_0) 
			lots_36 = NormalizeDouble(GetLastLotSize(0) * MassHedgeBooster, 2);
      else 
			lots_36 = CalcLots(gd_244);
      if (!SupportECN) 
			ticket_4 = OrderSend(Symbol(), OP_SELL, lots_36, Bid, slippage, price_16, price_8, EA_Name + ls_24, MagicNumber, 0, Pink);
      else 
		{
         ticket_4 = OrderSend(Symbol(), OP_SELL, lots_36, Bid, slippage, 0, 0, EA_Name + ls_24, MagicNumber, 0, Pink);
         Sleep(1000);
         OrderModify(ticket_4, OrderOpenPrice(), price_16, price_8, 0, Black);
      }
      previoustime = TimeCurrent();
      if (ticket_4 != -1) 
		{
         if (!ai_0) 
			{
            ticket = ticket_4;
            Log("SELL hedgedTicket=" + ticket);
         } 
			else 
			{
            Log("SELL Hacked_ticket=" + ticket_4);
            command = 1;
         }
      } 
		else 
		{
         Log("failed sell");
         li_ret_32 = FALSE;
      }
   }
   GlobalVariableDel("PERMISSION");
   return (li_ret_32);
}

void ManageBuy() 
{
   int datetime_0 = 0;
   double order_open_price_4 = 0;
   double order_lots_12 = 0;
   double order_takeprofit_20 = 0;
   int cmd_28 = -1;
   int ticket_32 = 0;
   int pos_36 = 0;
   int count_40 = 0;
   for (pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) 
	{
      if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) 
		{
         if (OrderMagicNumber() == MagicNumber && OrderType() == OP_BUY) 
			{
            count_40++;
            if (OrderOpenTime() > datetime_0) 
				{
               datetime_0 = OrderOpenTime();
               order_open_price_4 = OrderOpenPrice();
               cmd_28 = OrderType();
               ticket_32 = OrderTicket();
               order_takeprofit_20 = OrderTakeProfit();
            }
            if (OrderLots() > order_lots_12) 
					order_lots_12 = OrderLots();
         }
      }
   }
   int li_44 = MathRound(MathLog(order_lots_12 / Lots) / MathLog(Booster)) + 1.0;
   if (li_44 < 0) 
		li_44 = 0;
   gd_244 = NormalizeDouble(Lots * MathPow(Booster, li_44), lotround);
   if (li_44 == 0 && StrategySignal() == 1 && IsTradeTime() && !(UseNewsFilter && NewsTime())) 
	{
      if (OpenBuy() == TRUE)
         if (MassHedge) 
				gi_384 = TRUE;
   } 
	else 
	{
      if (order_open_price_4 - Ask > PipStarter * point && order_open_price_4 > 0.0 && count_40 < MaxBuyOrders) 
		{
         if (!(OpenBuy())) 
				return;
         if (!(MassHedge)) 
				return;
         gi_384 = TRUE;
         return;
      }
   }
   for (pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) 
	{
      OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber() != MagicNumber || OrderType() != OP_BUY || OrderTakeProfit() == order_

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

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

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

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

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

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

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