NinjaForex Versi AI Unlimited
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ninjaforex_versi-ai-unlimited-2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
NinjaForex Versi AI Unlimited — это торговый экспертный советник (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Советник анализирует текущие ценовые данные, используя пересечение скользящих средних (MA) по ценам Low и High для формирования торговых сигналов, и размещает отложенные ордера BUYSTOP и SELLSTOP при выполнении условий.
В работе используются фильтры: временной фильтр (задаётся диапазоном часов и минут), фильтр спреда (максимальный допустимый спред с комиссией) и ограничение количества одновременных сделок. Советник поддерживает управление рисками через параметры фиксированного и расчётного лота, а также модификацию стоп-лоссов на открытых позициях.
Программа включает визуализацию: отображение текущего спреда на графике, рисование прямоугольных зон, объектов Фибоначчи на дневном диапазоне и индикатора таймфрейма. Также реализована функция расчёта средней комиссии на основе истории сделок.
Советник предназначен для работы на различных таймфреймах и содержит множество настраиваемых параметров, связанных с торговой логикой, управлением лотами, временными фильтрами и визуальным оформлением.
Настройки программы
| Настройка | Описание |
|---|---|
| MagicNumber | Магический номер — Целочисленный идентификатор, используемый для привязки ордеров к данному советнику. |
| TradeComment | Комментарий сделки — Текстовый параметр, задающий комментарий для ордеров, размещаемых советником. |
| Range_BidAsk | Диапазон bid/ask — Числовой параметр, задающий диапазон для анализа bid/ask спреда. |
| BidAsk_High | Верхний порог bid/ask — Числовой параметр, задающий верхний пороговое значение для анализа bid/ask спреда. |
| MinLots | Минимальный лот — Числовой параметр, задающий минимальный допустимый размер лота. |
| MaxLots | Максимальный лот — Числовой параметр, задающий максимальный допустимый размер лота. |
| Risk | Риск — Числовой параметр, задающий процент риска для расчёта размера лота в системе управления рисками. |
| FixedLots | Фиксированный лот — Числовой параметр, задающий фиксированный размер лота при отключённом управлении рисками. |
| UseMM | Управление рисками — Логический переключатель, включающий или выключающий автоматическое управление рисками (money management). |
| NinjaForex_Swing | Настройка Swing — Целочисленный параметр, задающий настройку для стратегии Swing. |
| NinjaForex_scalper | Настройка Scalper — Целочисленный параметр, задающий настройку для стратегии Scalper. |
| Sett_lock | Блокировка сделок — Логический переключатель, включающий или выключающий функцию блокировки сделок. |
| ILock | Параметр блокировки IL — Числовой параметр, задающий значение для функции блокировки сделок. |
| SLock | Параметр блокировки SL — Числовой параметр, задающий значение для функции блокировки стоп-лосса. |
| Sett_BE | Брейк-эвен — Логический переключатель, включающий или выключающий функцию брейк-эвен для сделок. |
| LP | Параметр стоп-профита — Числовой параметр, задающий значение для расчёта уровня стоп-профита. |
| P_BE | Параметр брейк-эвен — Числовой параметр, задающий значение для расчёта брейк-эвен уровня. |
| TimeFilter | Временной фильтр — Текстовый параметр с заголовком для временного фильтра торговли. |
| Bar_Times | Время баров — Текстовый параметр, задающий значение времени для фильтрации баров. |
| StartHour | Начальный час — Целочисленный параметр, задающий начальный час для временного фильтра торговли. |
| StartMinute | Начальная минута — Целочисленный параметр, задающий начальную минуту для временного фильтра торговли. |
| EndHour | Конечный час — Целочисленный параметр, задающий конечный час для временного фильтра торговли. |
| EndMinute | Конечная минута — Целочисленный параметр, задающий конечную минуту для временного фильтра торговли. |
| Author | Автор — Текстовый параметр с информацией об авторе продукта и ссылками на социальные сети и сайт. |
| Coder | Автор кода — Текстовый параметр с описанием типа советника и его основных стратегий. |
| Contact_NinjaForex | Контакт NinjaForex — Текстовый параметр с разделителями и контактной информацией NinjaForex. |
| Электронная почта — Текстовый параметр с адресом электронной почты для связи. | |
| Ссылка Facebook — Текстовый параметр со ссылкой на страницу продукта в социальной сети Facebook. | |
| Costum_Indicator_2012 | Пользовательский индикатор — Текстовый параметр, содержащий разделители для пользовательского индикатора. |
| Tools | Ссылка на инструменты — Текстовый параметр со ссылкой на магазин продукта. |
| Portofolio | Портфолио — Текстовый параметр с разделителями для информации о портфолио. |
| Fx | Ссылка Fx — Текстовый параметр со ссылкой на страницу портфолио продукта. |
| Web_fx_btc_affiliate_xchanger | Ссылка на сервисы — Текстовый параметр со ссылкой на веб-дизайн и сервисы обмена на сайте продукта. |
| RealRobot_NinjaForex | Реальный робот — Текстовый параметр с разделителями для информации о реальном роботе NinjaForex. |
| EA | Ссылка EA — Текстовый параметр со ссылкой на портфолио продукта. |
| HFT_Demo | Ссылка демо HFT — Текстовый параметр со ссылкой на демо-профиль советника на платформе fxblue. |
| EA_HFT1 | Ссылка HFT1 — Текстовый параметр со ссылкой на профиль торгового робота на платформе fxblue. |
| EA_HFT2 | Ссылка HFT2 — Текстовый параметр со ссылкой на второй профиль торгового робота на платформе fxblue. |
| MultiEA_2012 | Ссылка MultiEA — Текстовый параметр со ссылкой на публичный аккаунт на платформе myfxbook. |
| CHF_CHT | Ссылка на портфолио — Текстовый параметр, содержащий ссылку или информацию, связанную с портфолио продукта. |
| Robot_NinjaForex | Робот NinjaForex — Текстовый параметр с разделителями для информации о роботе NinjaForex. |
| Hedging | Ссылка Hedging — Текстовый параметр со ссылкой на раздел роботов на сайте продукта. |
| HFT1 | Ссылка HFT1 — Текстовый параметр со ссылкой на раздел HFT на сайте продукта. |
| HFT2 | Ссылка HFT2 — Текстовый параметр со ссылкой на раздел Samurai на сайте продукта. |
| AnotherPrivate_or_Develop | Контакт для разработки — Текстовый параметр, содержащий контактную информацию для связи по вопросам разработки или частного заказа. |
| Parameter_Plus | Дополнительные параметры — Текстовый параметр с разделителями для дополнительных настроек. |
| LBL | Параметр уровня — Числовой параметр, задающий значение уровня для расчётов. |
| Bar | Количество баров — Целочисленный параметр, задающий количество баров для расчётов и анализа ценовых данных. |
| Bar1 | Количество баров 1 — Целочисленный параметр, используемый как один из параметров количества баров для анализа. |
| Bar2 | Количество баров 2 — Целочисленный параметр, используемый как один из параметров количества баров для анализа. |
| Bar3 | Количество баров 3 — Целочисленный параметр, используемый как один из параметров количества баров для анализа. |
| MaxTrades | Максимальное количество сделок — Целочисленный параметр, задающий максимальное количество одновременных сделок. |
| StopLoss | Стоп-лосс — Числовой параметр, задающий расстояние до стоп-лосса в пунктах. |
| NProfit | Тейк-профит — Числовой параметр, задающий уровень тейк-профита для ордеров. |
| ITProfit | Внутренний тейк-профит — Числовой параметр, задающий внутренний уровень тейк-профита. |
| Comm_D | Комиссия — Числовой параметр, задающий значение комиссии для расчётов. |
| NL | Параметр NL — Числовой параметр, используемый в расчётах для определения уровня цены. |
| Dn | Параметр Dn — Числовой параметр, используемый в расчётах для определения уровня цены. |
| IL | Параметр IL — Числовой параметр, используемый в расчётах для определения уровня цены. |
| NDn | Параметр NDn — Числовой параметр, используемый в расчётах для определения уровня цены. |
| IDn | Параметр IDn — Числовой параметр, используемый в расчётах для определения уровня цены. |
| Slow_P | Замедление — Целочисленный параметр, задающий замедление для расчётов. |
| BidAsk_middle | Среднее значение bid/ask — Числовой параметр, задающий среднее значение для анализа bid/ask спреда. |
| BidAsk_low | Нижняя граница bid/ask — Числовой параметр, задающий нижнюю границу диапазона bid/ask спреда. |
| BidAsk_high | Верхняя граница bid/ask — Числовой параметр, задающий верхнюю границу диапазона bid/ask спреда. |
| M_I_U_NinjaForex | Параметр индикатора U — Числовой параметр, используемый в расчётах индикатора NinjaForex. |
| M_I_V_NinjaForex | Параметр индикатора V — Числовой параметр, используемый в расчётах индикатора NinjaForex. |
| M_I_Z_NinjaForex | Параметр индикатора Z — Числовой параметр, используемый в расчётах индикатора NinjaForex. |
| BarCandle_Use | Использование свечей — Целочисленный параметр, определяющий режим использования свечных данных в расчётах. |
| Info_NinjaForex | Информация NinjaForex — Текстовый параметр с контактной информацией NinjaForex. |
Поиск по коду файла
#property description " "
#import "stdlib.ex4"
string ErrorDescription(int a0);
#import
extern int MagicNumber = 1;
extern string TradeComment = "@NinjaForex Beta memberforex.com";
extern double Range_BidAsk = 20.3;
extern double BidAsk_High = 30.3;
extern double MinLots = 0.01;
extern double MaxLots = 100000000.0;
extern double Risk = 30.0;
extern double FixedLots = 0.01;
extern bool UseMM = TRUE;
extern int NinjaForex_Swing = 3;
extern int NinjaForex_scalper = 3;
extern bool Sett_lock = TRUE;
extern double ILock = 2.9;
extern double SLock = 0.3;
extern bool Sett_BE = TRUE;
extern double LP = 0.3;
extern double P_BE = 2.0;
extern string TimeFilter = "---------- Time Filter ----------";
extern string Bar_Times = "-2";
extern int StartHour = 0;
extern int StartMinute = 0;
extern int EndHour = 23;
extern int EndMinute = 59;
extern string Author = "=== Facebook : @NinjaForex | memberforex.com ===";
extern string Coder = "EA Type : HFT, Arbi, Scalper, Swing, Costum Indi";
extern string Contact_NinjaForex = "==================";
extern string Mail = "Email : m*********x*@gmail.com";
extern string Facebook = "Facebook.com/NinjaForex";
extern string Costum_Indicator_2012 = "==================";
extern string Tools = ">> www.memberforex.com/store <<";
extern string Portofolio = "==================";
extern string Fx = "www.memberforex.com/Portofolio";
extern string Web_fx_btc_affiliate_xchanger = "www.memberforex.com/webdesign";
extern string RealRobot_NinjaForex = "==================";
extern string EA = "www.memberforex.com/Portofolio";
extern string HFT_Demo = "fxblue.com/users/ninjaforex6";
extern string EA_HFT1 = "fxblue.com/users/memberforex";
extern string EA_HFT2 = "fxblue.com/users/memberforex2";
extern string MultiEA_2012 = "www.myfxbook.com/NinjaForex public acc";
extern string CHF_CHT = "www.memberforex.com/Portofolio";
extern string Robot_NinjaForex = "==================";
extern string Hedging = "www.memberforex.com/robot";
extern string HFT1 = "www.memberforex.com/hft";
extern string HFT2 = "www.memberforex.com/samurai";
extern string AnotherPrivate_or_Develop = "Contact Our Mail/Facebook @NinjaForex";
extern string Parameter_Plus = "==================";
extern double LBL = 20.0;
extern int Bar = 150;
extern int Bar1 = 140;
extern int Bar2 = 170;
extern int Bar3 = 190;
extern int MaxTrades = 15;
extern double StopLoss = 5.0;
extern double NProfit = 30.0;
extern double ITProfit = 2.3;
extern double Comm_D = 0.05;
extern double NL = 20.0;
extern double Dn = 50.0;
extern double IL = 25.0;
extern double NDn = 20.0;
extern double IDn = 25.0;
extern int Slow_P = 10;
extern double BidAsk_middle = 20.3;
extern double BidAsk_low = 10.0;
extern double BidAsk_high = 30.6;
extern double M_I_U_NinjaForex = 100.6;
extern double M_I_V_NinjaForex = 1.0;
extern double M_I_Z_NinjaForex = 0.6;
extern int BarCandle_Use = 1;
extern string Info_NinjaForex = "Mail : m*********x*@gmail.com | Facebook : @NinjaForex";
int Filter = 140;
double MaxSpreadPlusCommission = 10000.0;
int Limit = 20;
int Distance = 21;
int MAPeriod = 3;
int MAMethod = 3;
int Gi_180 = 0;
double G_pips_184 = 0.0;
int G_digits_192 = 0;
double G_point_196 = 0.0;
int Gi_204;
double Gd_208;
double Gd_216;
double Gd_224;
double Gd_232;
double Gd_240;
double Gd_248;
double Gd_256;
int G_slippage_264 = 3;
bool Gi_268;
double Gd_272;
double Gda_280[30];
int Gi_284 = 0;
string Gs_dummy_288;
string Gs_unused_316 = "";
string Gs_unused_324 = "";
double Gd_336;
double Gd_344;
int G_time_352;
int Gi_356;
int G_datetime_360;
string Gs_364 = "000,000,000";
string Gs_372 = "000,000,255";
int Gi_380;
int Gi_384;
int Gi_388;
int Gi_392 = 40;
double G_timeframe_396 = 240.0;
bool Gi_404 = TRUE;
color G_color_408 = DimGray;
string G_name_412 = "SpreadIndikatorObj";
double Gd_420;
color G_color_428 = Red;
color G_color_432 = DarkGray;
color G_color_436 = SpringGreen;
bool Gi_440 = TRUE;
double G_ihigh_444;
double G_ilow_452;
double Gd_460;
int G_datetime_468;
int init() {
// код доступен только после оплаты
}
int deinit() {
if (!IsTesting()) {
for (int Li_0 = 1; Li_0 <= Gi_392; Li_0++) ObjectDelete("Padding_rect" + Li_0);
for (int count_4 = 0; count_4 < 10; count_4++) {
ObjectDelete("BD" + count_4);
ObjectDelete("SD" + count_4);
}
ObjectDelete("time");
ObjectDelete(G_name_412);
}
Comment("");
ObjectDelete("B3LLogo");
ObjectDelete("B3LCopy");
ObjectDelete("FiboUp");
ObjectDelete("FiboDn");
ObjectDelete("FiboIn");
return (0);
}
int start() {
// код доступен только после оплаты
}
int error_8;
string Ls_12;
int ticket_20;
double price_24;
bool bool_32;
double Ld_36;
double Ld_44;
double price_60;
double Ld_112;
int Li_180;
int cmd_188;
double Ld_196;
double Ld_204;
double ihigh_68 = iHigh(NULL, 0, 0);
double ilow_76 = iLow(NULL, 0, 0);
double ima_84 = iMA(NULL, 0, MAPeriod, Gi_180, MAMethod, PRICE_LOW, 0);
double ima_92 = iMA(NULL, 0, MAPeriod, Gi_180, MAMethod, PRICE_HIGH, 0);
double Ld_100 = ima_84 - ima_92;
if (!Gi_268) {
for (int pos_108 = OrdersHistoryTotal() - 1; pos_108 >= 0; pos_108--) {
if (OrderSelect(pos_108, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderProfit() != 0.0) {
if (OrderClosePrice() != OrderOpenPrice()) {
if (OrderSymbol() == Symbol()) {
Gi_268 = TRUE;
Ld_112 = MathAbs(OrderProfit() / (OrderClosePrice() - OrderOpenPrice()));
Gd_272 = (-OrderCommission()) / Ld_112;
break;
}
}
}
}
}
}
double Ld_120 = Ask - Bid;
ArrayCopy(Gda_280, Gda_280, 0, 1, 29);
Gda_280[29] = Ld_120;
if (Gi_284 < 30) Gi_284++;
double Ld_128 = 0;
pos_108 = 29;
for (int count_136 = 0; count_136 < Gi_284; count_136++) {
Ld_128 += Gda_280[pos_108];
pos_108--;
}
double Ld_140 = Ld_128 / Gi_284;
double Ld_148 = NormalizeDouble(Ask + Gd_272, G_digits_192);
double Ld_156 = NormalizeDouble(Bid - Gd_272, G_digits_192);
double Ld_164 = NormalizeDouble(Ld_140 + Gd_272, G_digits_192 + 1);
double Ld_172 = ihigh_68 - ilow_76;
if (Ld_172 > Gd_256) {
if (Bid < ima_84) Li_180 = -1;
else
if (Bid > ima_92) Li_180 = 1;
}
int count_184 = 0;
for (pos_108 = 0; pos_108 < OrdersTotal(); pos_108++) {
if (OrderSelect(pos_108, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber() == MagicNumber) {
cmd_188 = OrderType();
if (cmd_188 == OP_BUYLIMIT || cmd_188 == OP_SELLLIMIT) continue;
if (OrderSymbol() == Symbol()) {
count_184++;
switch (cmd_188) {
case OP_BUY:
if (Distance < 0) break;
Ld_44 = NormalizeDouble(OrderStopLoss(), G_digits_192);
price_60 = NormalizeDouble(Bid - Gd_248, G_digits_192);
if (!((Ld_44 == 0.0 || price_60 > Ld_44))) break;
bool_32 = OrderModify(OrderTicket(), OrderOpenPrice(), price_60, OrderTakeProfit(), 0, Lime);
if (!(!bool_32)) break;
error_8 = GetLastError();
Ls_12 = ErrorDescription(error_8);
Print("BUY Modify Error Code: " + error_8 + " Message: " + Ls_12 + " OP: " + DoubleToStr(price_24, G_digits_192) + " SL: " + DoubleToStr(price_60, G_digits_192) +
" Bid: " + DoubleToStr(Bid, G_digits_192) + " Ask: " + DoubleToStr(Ask, G_digits_192));
break;
case OP_SELL:
if (Distance < 0) break;
Ld_44 = NormalizeDouble(OrderStopLoss(), G_digits_192);
price_60 = NormalizeDouble(Ask + Gd_248, G_digits_192);
if (!((Ld_44 == 0.0 || price_60 < Ld_44))) break;
bool_32 = OrderModify(OrderTicket(), OrderOpenPrice(), price_60, OrderTakeProfit(), 0, Orange);
if (!(!bool_32)) break;
error_8 = GetLastError();
Ls_12 = ErrorDescription(error_8);
Print("SELL Modify Error Code: " + error_8 + " Message: " + Ls_12 + " OP: " + DoubleToStr(price_24, G_digits_192) + " SL: " + DoubleToStr(price_60, G_digits_192) +
" Bid: " + DoubleToStr(Bid, G_digits_192) + " Ask: " + DoubleToStr(Ask, G_digits_192));
break;
case OP_BUYSTOP:
Ld_36 = NormalizeDouble(OrderOpenPrice(), G_digits_192);
price_24 = NormalizeDouble(Ask + Gd_240, G_digits_192);
if (!((price_24 < Ld_36))) break;
price_60 = NormalizeDouble(price_24 - StopLoss * Point, G_digits_192);
bool_32 = OrderModify(OrderTicket(), price_24, price_60, OrderTakeProfit(), 0, Lime);
if (!(!bool_32)) break;
error_8 = GetLastError();
Ls_12 = ErrorDescription(error_8);
Print("BUYSTOP Modify Error Code: " + error_8 + " Message: " + Ls_12 + " OP: " + DoubleToStr(price_24, G_digits_192) + " SL: " + DoubleToStr(price_60, G_digits_192) +
" Bid: " + DoubleToStr(Bid, G_digits_192) + " Ask: " + DoubleToStr(Ask, G_digits_192));
break;
case OP_SELLSTOP:
Ld_36 = NormalizeDouble(OrderOpenPrice(), G_digits_192);
price_24 = NormalizeDouble(Bid - Gd_240, G_digits_192);
if (!((price_24 > Ld_36))) break;
price_60 = NormalizeDouble(price_24 + StopLoss * Point, G_digits_192);
bool_32 = OrderModify(OrderTicket(), price_24, price_60, OrderTakeProfit(), 0, Orange);
if (!(!bool_32)) break;
error_8 = GetLastError();
Ls_12 = ErrorDescription(error_8);
Print("SELLSTOP Modify Error Code: " + error_8 + " Message: " + Ls_12 + " OP: " + DoubleToStr(price_24, G_digits_192) + " SL: " + DoubleToStr(price_60, G_digits_192) +
" Bid: " + DoubleToStr(Bid, G_digits_192) + " Ask: " + DoubleToStr(Ask, G_digits_192));
}
}
}
}
}
if (count_184 == 0 && Li_180 != 0 && Ld_164 <= Gd_232 && f0_4()) {
Ld_196 = AccountBalance() * AccountLeverage() * Gd_224;
if (!UseMM) Ld_196 = FixedLots;
Ld_204 = NormalizeDouble(Ld_196 / MarketInfo(Symbol(), MODE_LOTSIZE), Gi_204);
Ld_204 = MathMax(Gd_208, Ld_204);
Ld_204 = MathMin(Gd_216, Ld_204);
if (Li_180 < 0) {
price_24 = NormalizeDouble(Ask + Gd_240, G_digits_192);
price_60 = NormalizeDouble(price_24 - StopLoss * Point, G_digits_192);
ticket_20 = OrderSend(Symbol(), OP_BUYSTOP, Ld_204, price_24, G_slippage_264, price_60, 0, TradeComment, MagicNumber, 0, Lime);
if (ticket_20 <= 0) {
error_8 = GetLastError();
Ls_12 = ErrorDescription(error_8);
Print("BUYSTOP Send Error Code: " + error_8 + " Message: " + Ls_12 + " LT: " + DoubleToStr(Ld_204, Gi_204) + " OP: " + DoubleToStr(price_24, G_digits_192) + " SL: " +
DoubleToStr(price_60, G_digits_192) + " Bid: " + DoubleToStr(Bid, G_digits_192) + " Ask: " + DoubleToStr(Ask, G_digits_192));
}
} else {
price_24 = NormalizeDouble(Bid - Gd_240, G_digits_192);
price_60 = NormalizeDouble(price_24 + StopLoss * Point, G_digits_192);
ticket_20 = OrderSend(Symbol(), OP_SELLSTOP, Ld_204, price_24, G_slippage_264, price_60, 0, TradeComment, MagicNumber, 0, Orange);
if (ticket_20 <= 0) {
error_8 = GetLastError();
Ls_12 = ErroПоказано первые 50% кода (символов: 20754)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.