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

milliondollarpips_(any_pair_+_no_dll)(bullforyou.com).mq4

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

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

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

О программе

Данный продукт представляет собой автоматического торгового эксперта (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Он анализирует направление цены с помощью взвешенных скользящих средних, рассчитанных по данным HIGH и LOW, и формирует торговые сигналы на основе соотношения текущей цены с этими значениями.

Робот размещает рыночные ордера и отложенные стоп-ордера (BUYSTOP/SELLSTOP) с настраиваемыми уровнями тейк-профита и стоп-лосса. Поддерживается функция трейлинг-стопа для активных позиций, а также несколько режимов работы (High Speed, Safe, Max Orders), влияющих на параметры входа в сделку.

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

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

НастройкаОписание
Configuration Конфигурация — Разделитель/заголовок для группы параметров конфигурации
Show_Debug Показывать отладку — Включает отображение отладочной информации в комментариях на графике
Verbose Подробный вывод — Включает подробный вывод информации в журнал торгового сервера
Mode_HighSpeed Режим высокой скорости — Включает режим быстрой торговли, изменяющий параметры размещения ордеров
Mode_Safe Безопасный режим — Включает безопасный режим торговли с консервативными параметрами
Mode_MaxOrders Режим максимальных ордеров — Включает режим максимального количества одновременных ордеров
Username Имя пользователя — Текстовый параметр для указания имени пользователя
Magic Магический номер — Магический номер для идентификации ордеров, размещённых роботом
OrderCmt Комментарий к ордеру — Комментарий, присваиваемый размещаемым ордерам
TakeProfit Тейк-профит — Значение тейк-профита в пунктах для ордеров
StopLoss Стоп-лосс — Значение стоп-лосса в пунктах для ордеров
distance Расстояние до стоп-ордера — Расстояние от текущей цены до размещения отложенного стоп-ордера в пунктах
Money_Management Управление капиталом — Разделитель/заголовок для группы параметров управления рисками и размером лота
Min_Lots Минимальный лот — Минимально допустимый размер лота для расчёта объёма сделки
Max_Lots Максимальный лот — Максимально допустимый размер лота для расчёта объёма сделки
Risk Процент риска — Процент риска, используемый для автоматического расчёта размера лота
SL_TP_Trailing Стоп-лосс / Тейк-профит / Трейлинг — Разделитель/заголовок для параметров стоп-лосса, тейк-профита и трейлинг-стопа
Trailing_Resolution Разрешение трейлинга — Шаг (разрешение) для перемещения трейлинг-стопа
Trailing_Stop Трейлинг-стоп — Включает или выключает функцию автоматического трейлинг-стопа для активных позиций
Получить полный код

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

#include <stdlib.mqh>

extern string Configuration = "================ Configuration";
extern bool Show_Debug = FALSE;
extern bool Verbose = FALSE;
extern bool Mode_HighSpeed = TRUE;
extern bool Mode_Safe = FALSE;
extern bool Mode_MaxOrders = TRUE;
bool gi_104 = TRUE;
extern string Username = "************";
extern int Magic = 112226;
extern string OrderCmt = "MDP_2";
extern double TakeProfit = 10.0;
extern double StopLoss = 60.0;
extern double distance = 30.0;
extern string Money_Management = "---------------- Money Management";
double gd_136 = 0.1;
bool gi_144 = TRUE;
extern double Min_Lots = 0.01;
extern double Max_Lots = 1000.0;
extern double Risk = 1000.0;
double gd_172 = 0.0;
string gs_unused_180 = "---------------- Scalping Factors";
double gd_188 = 15.0;
double gd_196 = 40.0;
double gd_204 = 145.0;
double gd_212 = 270.0;
double gd_220 = 0.4;
double gd_228 = 0.3333333333;
double gd_236 = 0.0;
extern string SL_TP_Trailing = "---------------- SL / TP / Trailing";
extern double Trailing_Resolution = 0.0;
double gd_260 = 0.0;
double gd_268 = 20.0;
extern bool Trailing_Stop = TRUE;
bool gi_280 = TRUE;
string gs_304;
int gi_312 = 0;
double gd_316 = 0.0;
int g_slippage_324 = 3;
double gda_328[30];
double gda_332[30];
int gia_336[30];
double gd_340 = 1.0;
double gd_348;
bool gi_356;
double gd_360;
bool gi_368 = FALSE;
double gd_372 = 1.0;
double gd_380 = 0.0;
int gi_388 = 0;
int g_time_392 = 0;
int g_count_396 = 0;
double gda_400[30];
int gi_404 = 0;
bool gi_408 = TRUE;
double gd_412 = 5.0;
double gd_420 = 10.0;
double gd_428 = 40.0;
bool gi_436 = FALSE;
double gd_440 = 5.0;
double gd_448 = 10.0;
double gd_456 = 40.0;
bool gi_464 = FALSE;
bool gi_unused_468 = FALSE;
string gs_472 = "Valid user";
string gs_480;
int gia_488[] = {0};
int gia_492[] = {0};
int AccNum;

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

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

void f0_0(int a_timeframe_0) {
   int ticket_16;
   int li_24;
   double ld_28;
   double ld_30;
   bool bool_28;
   double ld_92;
   bool li_116;
   double ld_120;
   double ld_136;
   double ld_220;
   int datetime_236;
   int li_240;
   double ld_244;
   double order_stoploss_260;
   double order_takeprofit_268;
   double ld_276;
   int li_292;
   int li_296;
   string ls_300;
   bool li_308;
   if (g_time_392 < Time[0]) {
      g_time_392 = Time[0];
      g_count_396 = 0;
   } else g_count_396++;
   double ihigh_64 = iHigh(Symbol(), a_timeframe_0, 0);
   double ilow_72 = iLow(Symbol(), a_timeframe_0, 0);
   double icustom_32 =  iMA(NULL, a_timeframe_0, 3, 0, MODE_LWMA, PRICE_LOW, 0);
   double icustom_40 =  iMA(NULL, a_timeframe_0, 3, 0, MODE_LWMA, PRICE_HIGH, 0);
   double ld_80 = icustom_32 - icustom_40;
   bool li_88 = Bid >= icustom_40 + ld_80 / 2.0;
   if (!gi_368) {
      for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {
         OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() && OrderCloseTime() != 0 && OrderClosePrice() != OrderOpenPrice() && OrderProfit() != 0.0 && OrderComment() != "partial close" && StringFind(OrderComment(), "[sl]from #") == -1 &&
            StringFind(OrderComment(), "[tp]from #") == -1) {
            gi_368 = TRUE;
            ld_92 = MathAbs(OrderProfit() / (OrderClosePrice() - OrderOpenPrice()));
            gd_372 = ld_92 / OrderLots() / MarketInfo(Symbol(), MODE_LOTSIZE);
            gd_380 = (-OrderCommission()) / ld_92;
            Print("Commission_Rate : " + f0_3(gd_380));
            break;
         }
      }
   }
   if (!gi_368) {
      for (pos_4 = OrdersHistoryTotal() - 1; pos_4 >= 0; pos_4--) {
         OrderSelect(pos_4, SELECT_BY_POS, MODE_HISTORY);
         if (OrderSymbol() == Symbol() && OrderCloseTime() != 0 && OrderClosePrice() != OrderOpenPrice() && OrderProfit() != 0.0 && OrderComment() != "partial close" && StringFind(OrderComment(), "[sl]from #") == -1 &&
            StringFind(OrderComment(), "[tp]from #") == -1) {
            gi_368 = TRUE;
            ld_92 = MathAbs(OrderProfit() / (OrderClosePrice() - OrderOpenPrice()));
            gd_372 = ld_92 / OrderLots() / MarketInfo(Symbol(), MODE_LOTSIZE);
            gd_380 = (-OrderCommission()) / ld_92;
            Print("Commission_Rate : " + f0_3(gd_380));
            break;
         }
      }
   }
   double ld_100 = MarketInfo(Symbol(), MODE_STOPLEVEL) * Point;
   double ld_108 = Ask - Bid;
   double ld_128 = 0.5;
   if (ld_128 < ld_100 - 5.0 * gd_316) {
      li_116 = gi_436;
      ld_120 = gd_428 * gd_316;
      ld_128 = gd_420 * gd_316;
      ld_136 = gd_412 * gd_316;
   } else {
      if (!Mode_HighSpeed) {
         li_116 = gi_464;
         ld_120 = gd_456 * gd_316;
         ld_128 = gd_448 * gd_316;
         ld_136 = gd_440 * gd_316;
      } else {
         li_116 = gi_280;
         ld_120 = gd_268 * gd_316;
         ld_128 = gd_260 * gd_316;
         ld_136 = Trailing_Resolution * gd_316;
      }
   }
   ld_120 = MathMax(ld_120, ld_100);
   if (li_116) ld_128 = MathMax(ld_128, ld_100);
   double ld_unused_144 = gda_400[0];
   ArrayCopy(gda_400, gda_400, 0, 1, 29);
   gda_400[29] = ld_108;
   if (gi_404 < 30) gi_404++;
   double ld_152 = 0;
   pos_4 = 29;
   for (int count_8 = 0; count_8 < gi_404; count_8++) {
      ld_152 += gda_400[pos_4];
      pos_4--;
   }
   double ld_160 = ld_152 / gi_404;
   if (!gi_368 && ld_160 < 15.0 * gd_316) gd_380 = 15.0 * gd_316 - ld_160;
   double ld_168 = f0_5(Ask + gd_380);
   double ld_176 = f0_5(Bid - gd_380);
   double ld_184 = ld_160 + gd_380;

   double ld_192;
   double ld_200;
   double ld_208 = ihigh_64 - ilow_72;

   double limitTe;
   string mode=Mode_HighSpeed+"-"+Mode_Safe+"-0"; 
        if(mode=="0-0-0") { ld_192=0.24; ld_200=0.0018; limitTe=0.00250; }
   else if(mode=="0-1-0") { ld_192=0.68; ld_200=0.0023; limitTe=0.00300; }
   else if(mode=="1-0-0") { ld_192=0.28; ld_200=0.0018; limitTe=0.00100; }
   else if(mode=="1-1-0") { ld_192=0.56; ld_200=0.0022; limitTe=0.00250; }

   if(ld_208>limitTe) { 
   if (Bid < icustom_40)   int li_216=-1; 
   else if (Bid > icustom_32) li_216=1;
    }    
   if (gd_236 == 0.0) ld_220 = gd_228 * ld_200;
   else ld_220 = gd_236 * gd_316;
   ld_220 = MathMax(ld_100, ld_220);
   if (Bid == 0.0 || MarketInfo(Symbol(), MODE_LOTSIZE) == 0.0) ld_220 = 0;
   double ld_228 = ld_220 + ld_160 + gd_380;
   if (gi_408) datetime_236 = TimeCurrent() + 60.0 * MathMax(10 * a_timeframe_0, 60);
   else datetime_236 = 0;
   if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.0) li_240 = 5;
   else li_240 = f0_7(0.1, MarketInfo(Symbol(), MODE_LOTSTEP));
   if (gi_144) {
      if (Risk < 0.001 || Risk > 1000.0) {
         Comment("ERROR -- Invalid Risk Value.");
         return;
      }
      if (AccountBalance() <= 0.0) {
         Comment("ERROR -- Account Balance is " + DoubleToStr(MathRound(AccountBalance()), 0));
         return;
      }
      if (ld_220 != 0.0) {
         gd_172 = MathMax(AccountBalance(), gd_172);
         ld_244 = MathMin(AccountFreeMargin() * AccountLeverage() / 2.0, gd_172 * Risk / 100.0 * Bid / ld_228);
         gd_136 = ld_244 / MarketInfo(Symbol(), MODE_LOTSIZE);
         gd_136 = NormalizeDouble(gd_136, li_240);
         gd_136 = MathMax(Min_Lots, gd_136);
         gd_136 = MathMax(MarketInfo(Symbol(), MODE_MINLOT), gd_136);
         gd_136 = MathMin(Max_Lots, gd_136);
         gd_136 = MathMin(MarketInfo(Symbol(), MODE_MAXLOT), gd_136);
      }
   }
   int count_252 = 0;
   int count_256 = 0;
   for (pos_4 = 0; pos_4 < OrdersTotal(); pos_4++) {
      OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber() == Magic && OrderCloseTime() == 0) {
         if (OrderSymbol() != Symbol()) {
            count_256++;
            continue;
         }
         switch (OrderType()) {
         case OP_BUY:
            while (Trailing_Stop) {
               order_stoploss_260 = OrderStopLoss();
               order_takeprofit_268 = OrderTakeProfit();
               if (!(order_takeprofit_268 < f0_5(ld_168 + ld_120) && ld_168 + ld_120 - order_takeprofit_268 > ld_136)) break;
               order_stoploss_260 = f0_5(Bid - ld_120);
               order_takeprofit_268 = f0_5(ld_168 + ld_120);
               bool_28 = OrderModify(OrderTicket(), 0, order_stoploss_260, order_takeprofit_268, datetime_236, Lime);
               if (bool_28) break;
               li_24 = f0_1();
               if (!(li_24)) break;
            }
            count_252++;
            break;
         case OP_SELL:
            while (Trailing_Stop) {
               order_stoploss_260 = OrderStopLoss();
               order_takeprofit_268 = OrderTakeProfit();
               if (!(order_takeprofit_268 > f0_5(ld_176 - ld_120) && order_takeprofit_268 - ld_176 + ld_120 > ld_136)) break;
               order_stoploss_260 = f0_5(Ask + ld_120);
               order_takeprofit_268 = f0_5(ld_176 - ld_120);
               bool_28 = OrderModify(OrderTicket(), 0, order_stoploss_260, order_takeprofit_268, datetime_236, Orange);
               if (bool_28) break;
               li_24 = f0_1();

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

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

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

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

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

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

Стоимость полного кода
1 270,40₽ ≈ $15.53