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

price action scalping.mq4

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торгового советника для платформы MetaTrader 4, написанного на языке MQL4. Советник предназначен для скальпинговой торговли и анализирует ценовые данные с использованием индикаторов Bollinger Bands и RSI для формирования торговых сигналов.

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

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

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

НастройкаОписание
INFO1 Заголовок группы объёма — Заголовок текстовой группы настроек, разделяющий блок параметров объёма.
LotsSize Фиксированный размер лота — Фиксированный размер лота для торговли. При значении 0.0 используется автоматический расчёт через систему управления денежными средствами.
INFO_ Разделитель блоков — Текстовый разделитель между блоками настроек.
LotsPer1000 Лотов на 1000 (риск-менеджмент) — Параметр расчёта размера лота на основе риска, используемый в системе управления денежными средствами.
MinLots Минимальный лот — Минимально допустимый размер лота, ограничивающий нижнюю границу расчёта объёма позиции.
MaxLots Максимальный лот — Максимально допустимый размер лота, ограничивающий результат расчёта объёма позиции.
INFO2 Заголовок группы защиты — Заголовок текстовой группы настроек, разделяющий блок параметров защиты.
def_MaxSpread Максимальный допустимый спред — Пороговое значение максимального спреда, при превышении которого торговля блокируется.
INFO3 Заголовок группы подтверждения — Заголовок текстовой группы настроек, разделяющий блок параметров подтверждения.
BB_PARAM Период Bollinger Bands — Параметр периода индикатора Bollinger Bands, используемый для определения границ ценового канала и генерации торговых сигналов.
RSI_PARAM Период RSI — Параметр периода индикатора RSI, используемый для оценки силы ценового движения и формирования торговых сигналов.
def_SL Расстояние стоп-лосса — Параметр, определяющий расстояние стоп-лосса в пунктах для новых ордеров.
INFO4 Заголовок дополнительных параметров — Заголовок текстовой группы настроек, разделяющий блок дополнительных параметров.
MyMagicNumber Магическое число — Числовой идентификатор (магическое число), используемый для фильтрации ордеров, отправленных данным советником.
Comment_ Комментарий ордера — Текстовый комментарий, присваиваемый отправляемым ордерам для идентификации в истории торгов.
Получить полный код

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

extern string INFO1="===== Volume ==============================";
extern double LotsSize=0.0;
extern string INFO_="----------------------------------------------";
extern double LotsPer1000=0.3;
extern double MinLots = 0.01;
extern double MaxLots = 60.0;
extern string INFO2="===== Protection ============================";
extern double def_MaxSpread=1.3;
extern string INFO3 = "===== Confirmation ==========================";
extern int BB_PARAM = 23;
extern int RSI_PARAM = 18;
extern double def_SL = 3.0;
extern string INFO4="===== More ===============================";
extern int MyMagicNumber=68000;
extern string Comment_="Price Action Scalping v1.68";

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 Filter=185;
int StopLoss;
double Risk;
bool UseMM;
double MaxSpreadPlusCommission=10000.0;
int Limit=20;
int Distance = 21;
int MAPeriod = 3;
int MAMethod = 3;
string TimeFilter="----------Time Filter";
int StartHour=0;
int StartMinute=0;
int EndHour=23;
int EndMinute=59;
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 ibands_84=iBands(Symbol(),Period(),BB_PARAM,2.0,0,PRICE_CLOSE,MODE_UPPER,0);
   double ibands_92=iBands(Symbol(),Period(),BB_PARAM,2.0,0,PRICE_CLOSE,MODE_LOWER,0);

   double irsi_96=iRSI(Symbol(),Period(),RSI_PARAM,PRICE_CLOSE,0);

   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<ibands_92 && irsi_96<50.0) Li_180=-1;
      else
         if(Bid>ibands_84 && irsi_96>50.0) 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()==MyMagicNumber)
           {
            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();
                     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();
                     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+MarketInfo(Symbol(),MODE_SPREAD)) * Point,G_digits_192);
                     bool_32 = OrderModify(OrderTicket(),price_24,price_60,OrderTakeProfit(),0,Lime);
                     if(!(!bool_32)) break;
                     error_8=GetLastError();
                     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+MarketInfo(Symbol(),MODE_SPREAD)) * Point,G_digits_192);
                     bool_32 = OrderModify(OrderTicket(),price_24,price_60,OrderTakeProfit(),0,Orange);
                     if(!(!bool_32)) break;
                     error_8=GetLastError();
                     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=LotsSize;
      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+ MarketInfo(Symbol(),MODE_SPREAD)) * Point, G_digits_192);

         if(MarketInfo(Symbol(),MODE_SPREAD)<def_MaxSpread) ticket_20=OrderSend(Symbol(),OP_BUYSTOP,Ld_204,price_24,G_slippage_264,price_60,0,Comment_,MyMagicNumber,0,Lime);
         if(ticket_20<=0)
           {
            error_8=GetLastError();
            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+ MarketInfo(Symbol(),MODE_SPREAD)) * Point, G_digits_192);
         if(MarketInfo(Symbol(),MODE_SPREAD)<def_MaxSpread) ticket_20=OrderSend(Symbol(),OP_SELLSTOP,Ld_204,price_24,G_slippage_264,price_60,0,Comment_,MyMagicNumber,0,Orange);
         if(ticket_20<=0)
           {
            error_8=GetLastError();
            Print("BUYSELL 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));
           }
        }
     }
   string Ls_212="AvgSpread:"+DoubleToStr(Ld_140,G_digits_192)+"  Commission rate:"+DoubleToStr(Gd_272,G_digits_192+1)+"  Real avg. spread:"+DoubleToStr(Ld_164,
                                          G_digits_192+1);
   if(Ld_164>Gd_232)
     {
      Ls_212=Ls_212
             +"\n"
             +"The EA can not run with this spread ( "+Do

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

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

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

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

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

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

Стоимость полного кода
1 919,90₽ ≈ $23.46