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

MegaBuxPips2

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

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

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

О программе

MegaBuxPips2 — торговый советник для MetaTrader 4, написанный на MQL4. Советник работает по текущему символу и текущему таймфрейму, использует индикатор скользящей средней и данные текущего бара для оценки рыночной ситуации. В коде присутствуют обработчики init() и start(), а также вспомогательные функции для нормализации цен и анализа движения цены.

Советник поддерживает выставление рыночных и отложенных ордеров (OP_BUY, OP_SELL, OP_BUYSTOP, OP_SELLSTOP) через OrderSend, а также модификацию и удаление ордеров через OrderModify и OrderDelete. Реализовано сопровождение позиций: трейлинг-стоп и перенос стоп-лосса/тейк-профита для открытых ордеров. Размер торгового лота может рассчитываться автоматически в зависимости от свободной маржи и заданных параметров риска, либо задаваться вручную.

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

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

НастройкаОписание
?????????? ??? ??? ???? ???? =0 ? ??? ??? ??? ???? ???? ???????? ?? 0 (Lots) Размер лота — Размер торгового лота. Если параметр Ddep больше нуля, значение может быть скорректировано автоматическим расчётом.
Ddep Доля депозита — Доля свободной маржи, используемая для автоматического расчёта торгового лота. При значении 0 лот задаётся вручную.
Dmargin Маржинальный порог — Порог маржи, при котором разрешается выставление ордеров; используется в проверке достаточности свободных средств.
Configuration Конфигурация — Строковый параметр-разделитель для группировки настроек конфигурации; не влияет на торговую логику.
Mode_HighSpeed Режим высокой скорости — Переключатель высокоскоростного режима работы советника; влияет на выбор параметров сопровождения ордеров.
Mode_Safe Безопасный режим — Числовой параметр безопасного режима, используемый при оценке волатильности рынка.
Username Имя пользователя — Имя пользователя, отображаемое в настройках советника; не влияет на торговые операции.
Pma Период скользящей средней — Период скользящей средней, применяемой для анализа ценовых уровней.
OrderCmt Комментарий к ордерам — Текстовый комментарий, добавляемый к торговым ордерам советника.
TakeProfit Тейк-профит — Размер тейк-профита в пунктах, используемый при выставлении ордеров.
StopLoss Стоп-лосс — Размер стоп-лосса в пунктах, используемый при выставлении ордеров.
distance Расстояние — Расстояние в пунктах от текущей цены до цены выставления отложенного ордера.
SL_TP_Trailing Стоп-лосс / тейк-профит / трейлинг — Строковый параметр-разделитель для группировки настроек стоп-лосса, тейк-профита и трейлинга.
Trailing_Resolution Шаг трейлинга — Шаг трейлинга в пунктах, определяющий минимальное изменение уровня стоп-лосса.
Trailing_Stop Трейлинг-стоп — Переключатель, включающий или отключающий функцию трейлинг-стопа.
Magic Магическое число — Уникальный идентификатор ордеров советника, позволяющий отличать их от ордеров других экспертов.
Получить полный код

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

#include <stdlib.mqh>
extern double Lots = 0.01; //?????????? ??? ??? ???? ???? =0 ? ??? ??? ??? ???? ???? ???????? ?? 0
extern double Ddep = 0.2;//
extern double Dmargin =1;
extern string Configuration = "================ Configuration";
extern bool Mode_HighSpeed = TRUE;
extern double Mode_Safe = 0.002;
extern string Username = "************";
extern int Pma=39;
extern string OrderCmt = "X";
extern double TakeProfit = 50.0;
extern double StopLoss = 60.0;
extern double distance = 30.0;
double gd_136 = 0.1;

double gd_196 = 40.0;
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;
extern int Magic = 7777;
bool gi_280 = TRUE;
int gi_312 = 0;
double gd_316 = 0.0;
int g_slippage_324 = 3;
double gda_328;
double gda_332;
int gia_336;
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;
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;
int gia_492 = 0;

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;

   bool li_116;
   double ld_120;
   double ld_136;
   double ld_220;
   int datetime_236;

   double order_stoploss_260;
   double order_takeprofit_268;
   double ld_276;
   int li_292;
   int li_296;

   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, Pma, 0, MODE_LWMA, PRICE_LOW, 0);
   double icustom_40 =  iMA(NULL, a_timeframe_0, Pma, 0, MODE_LWMA, PRICE_HIGH, 0);
   double ld_80 = icustom_32 - icustom_40;
   bool li_88 = Bid >= icustom_40 + ld_80 / 2.0;

   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;
      }
   }

   double ld_unused_144 = gda_400;
   if (gi_404 < 30) gi_404++;
   double ld_152 = 0;

   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_200;
   double ld_208 = ihigh_64 - ilow_72;

   double limitTe = Mode_Safe ;

   ld_200=0.0022;
   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;
   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() + 660.0 ;//* MathMax(10 * a_timeframe_0, 60);
   else datetime_236 = 0;

        int m;
        double MG;

        if(AccountFreeMargin()>Dmargin*AccountMargin()&&Lots>0)
        {
        MG=AccountFreeMargin();
        double Min = MarketInfo(Symbol(), MODE_LOTSTEP);

        if(Ddep>0)
        {
        m=MG/MarketInfo (Symbol(), MODE_MARGINREQUIRED)*Ddep/Min;
        gd_136 = m*Min;
        if(gd_136 > MarketInfo (Symbol(), MODE_MAXLOT))
        gd_136 = MarketInfo (Symbol(), MODE_MAXLOT);             
        if(gd_136 < Lots)
        gd_136 = Lots; 
        if(gd_136< MarketInfo(Symbol(), MODE_MINLOT)) 
        gd_136 =  MarketInfo(Symbol(), MODE_MINLOT);    
        }
        }
        if(Ddep==0)gd_136 = Lots;

   int count_252 = 0;
   int count_256 = 0;
   for (int pos_4 = 0; pos_4 < OrdersTotal(); pos_4++) {
      bool sel=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);
            

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

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

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

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

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

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

Стоимость полного кода
770,30₽ ≈ $9.41