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