Squeeze Momentum Indicator [LazyBear]

MQL5 Asesores Expertos

Trabajo finalizado

Plazo de ejecución 31 minutos
Comentario del Cliente
absolutely brilliant everything i ask for and more, and all done within a couple of hours. I would use again without hesitation
Comentario del Ejecutor
Very thanks for order! Please let me know if you need programmer!

Tarea técnica

I would like someone who could change this indicator onto an expert adviser.

i want it to buy when the red histogram changes to green and see when green changes to red. i know that this is not a great strategy but i can add other indicators later.

I want the mql5 an ex5 files please

//+------------------------------------------------------------------+
//|                                     SqueezeMomentumIndicator.mq5 |
//|                                Copyright 2020, Andrei Novichkov. |
//|                                               http://fxstill.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Andrei Novichkov."
#property description "Translate from Pine: Squeeze Momentum Indicator [LazyBear]"
/*********************************************************************************************************
This is a derivative of John Carter's 
"TTM Squeeze" volatility indicator, as discussed in his book "Mastering the Trade" (chapter 11).

Black crosses on the midline show that the market just entered a squeeze 
( Bollinger Bands are with in Keltner Channel).
This signifies low volatility , market preparing itself for an explosive move (up or down).
Gray crosses signify "Squeeze release".

Mr.Carter suggests waiting till the first gray after a black cross, and taking a position in the 
direction of the momentum (for ex., if momentum value is above zero, go long).
Exit the position when the momentum changes (increase or decrease - signified by a color change).

Mr.Carter uses simple momentum indicator , while I have used a different method (linreg based)
to plot the histogram.

More info:
- Book: Mastering The Trade by John F Carter 
*********************************************************************************************************/
#property link      "http://fxstill.com"
#property version   "1.00"


#property indicator_separate_window

#property indicator_buffers 5
#property indicator_plots   2

#property indicator_label1  "SqueezeMomentum"
#property indicator_type1   DRAW_COLOR_HISTOGRAM
#property indicator_color1  clrLimeGreen, clrGreen, clrRed, clrMaroon
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3

#property indicator_label2  "SqueezeMomentumLine"
#property indicator_type2   DRAW_COLOR_LINE
#property indicator_color2  clrDodgerBlue, clrBlack, clrGray
#property indicator_style2  STYLE_SOLID
#property indicator_width2  5

//--- input parameters
input int      lengthBB                 = 20;          // Bollinger Bands Period
input double   multBB                   = 2.0;         // Bollinger Bands MultFactor
input int      lengthKC                 = 20;          // Keltner Channel Period
input double   multKC                   = 1.5;         // Keltner Channel MultFactor
input ENUM_APPLIED_PRICE  applied_price = PRICE_CLOSE; // type of price or handle 


double iB[], iC[], lB[], lC[];
double srce[];
int kc, bb;

static int MINBAR = MathMax(lengthBB, lengthKC) + 1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {

   SetIndexBuffer(0, iB,    INDICATOR_DATA);
   SetIndexBuffer(1, iC,    INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2, lB,    INDICATOR_DATA);
   SetIndexBuffer(3, lC,    INDICATOR_COLOR_INDEX);   
   SetIndexBuffer(4, srce,  INDICATOR_CALCULATIONS);
   
   ArraySetAsSeries(iB,    true);
   ArraySetAsSeries(iC,    true);
   ArraySetAsSeries(srce,   true);
   ArraySetAsSeries(lB, true);
   ArraySetAsSeries(lC,   true);   

   IndicatorSetString(INDICATOR_SHORTNAME,"SQZMOM");
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
   
   kc = iCustom(NULL, 0, "KeltnerChannel", lengthKC, multKC, false, MODE_SMA, applied_price);
   if (kc == INVALID_HANDLE) {
      Print("Error while open KeltnerChannel");
      return(INIT_FAILED);
   }   
   bb = iBands(NULL, 0, lengthBB, 0, multBB, applied_price);
   if (bb == INVALID_HANDLE) {
      Print("Error while open BollingerBands");
      return(INIT_FAILED);
   }      
   return(INIT_SUCCEEDED);
}
  
void OnDeinit(const int reason) {

   IndicatorRelease(kc);
   IndicatorRelease(bb);     
}

void GetValue(const double& h[], const double& l[], const double& c[], int shift) {
   
   double bbt[1], bbb[1], kct[1], kcb[1];
   if (CopyBuffer(bb, 1,  shift, 1, bbt) <= 0) return;
   if (CopyBuffer(bb, 2,  shift, 1, bbb) <= 0) return;
   if (CopyBuffer(kc, 0,  shift, 1, kct) <= 0) return; 
   if (CopyBuffer(kc, 2,  shift, 1, kcb) <= 0) return; 
  
   bool sqzOn  = (bbb[0] > kcb[0]) && (bbt[0] < kct[0]);
   bool sqzOff = (bbb[0] < kcb[0]) && (bbt[0] > kct[0]);
   bool noSqz  = (sqzOn == false)  && (sqzOff == false); 
   
   int indh = iHighest(NULL, 0, MODE_HIGH, lengthKC, shift); 
   if (indh == -1) return;
   int indl = iLowest(NULL, 0, MODE_LOW, lengthKC, shift);
   if (indl == -1) return;       
   double avg = (h[indh] + l[indl]) / 2;
          avg = (avg + (kct[0] + kcb[0]) / 2) / 2;
   srce[shift] = c[shift] - avg; 
     
   double error;
   iB[shift] = LinearRegression(srce, lengthKC, shift, error);
   
   if (iB[shift] > 0){
      if(iB[shift] < iB[shift + 1]) iC[shift] = 1;
   } else {
      if(iB[shift] < iB[shift + 1]) iC[shift] = 2;
      else iC[shift] = 3;
   }
   
   if (!noSqz) {
      lC[shift] = (sqzOn)? 1: 2;
   }
}

double LinearRegression(const double& array[], int period, int shift, double& error) {
  
   double sx = 0, sy = 0, sxy = 0, sxx = 0, syy = 0, y = 0;
   
   int param = (ArrayIsSeries(array) )? -1: 1;
   
   for (int x = 0; x < period; x++) {
      y    = array[shift + param * x];
      sx  += x;
      sy  += y;
      sxx += x * x;
      sxy += x * y;
      syy += y * y;
   }//for (int x = 1; x <= period; x++)
               
   double slope = (period * sxy - sx * sy) / (sx * sx - period * sxx);
   double intercept = (sy - slope * sx) / period;
   error = MathSqrt((period * syy - sy * sy - slope * slope * (period * sxx - sx*sx)) / 
                    (period * (period - 2)) );
                    
   return intercept + slope * period;
}//double LinearRegression(const double& array[], int shift)

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
      if(rates_total <= 4) return 0;
      ArraySetAsSeries(close,true);    
      ArraySetAsSeries(high,true); 
      ArraySetAsSeries(low,true); 
      int limit = rates_total - prev_calculated;
      if (limit == 0)        {   //A new tick has come
      } else if (limit == 1) {   // A new bar is formed
         GetValue(high, low, close, 1);      
      } else if (limit > 1)  {   // The first call of the indicator, changing the timeframe, loading data from history
         ArrayInitialize(iB,    EMPTY_VALUE);
         ArrayInitialize(iC,    0);
         ArrayInitialize(lB,    0);
         ArrayInitialize(lC,    0);         
         ArrayInitialize(srce,  0);
         limit = rates_total - MINBAR;
         for(int i = limit; i >= 1 && !IsStopped(); i--){
            GetValue(high, low, close, i);
         }//for(int i = limit + 1; i >= 0 && !IsStopped(); i--)
         return(rates_total);         
      }
//      GetValue(high, low, close, 0);          
   return(rates_total);
  
  
}
//+------------------------------------------------------------------+


Han respondido

1
Desarrollador 1
Evaluación
(1156)
Proyectos
1462
63%
Arbitraje
21
57% / 10%
Caducado
43
3%
Libre
2
Desarrollador 2
Evaluación
(8)
Proyectos
16
0%
Arbitraje
8
13% / 75%
Caducado
3
19%
Libre
3
Desarrollador 3
Evaluación
(361)
Proyectos
643
26%
Arbitraje
92
72% / 14%
Caducado
12
2%
Trabaja
Ha publicado: 1 ejemplo
4
Desarrollador 4
Evaluación
(87)
Proyectos
114
26%
Arbitraje
7
29% / 57%
Caducado
5
4%
Libre
5
Desarrollador 5
Evaluación
(54)
Proyectos
53
17%
Arbitraje
7
0% / 100%
Caducado
5
9%
Libre
Solicitudes similares
hello great developer I’m looking for an experienced developer to build a high-speed trade copier that works both ways between MT4 and MT5 . The copier must support: MT4 → MT5 MT5 → MT4 MT5 → MT5 (example: Blueberry MT5 → FTMO MT5) The system will run on my own VPS (local copier, not cloud-based). Key Requirements Real-time / fast execution (low latency) Two-way copying (MT4 ↔ MT5) Support for multiple brokers
European Central Bank (ECB) Interest Rate Decision The European Central Bank left interest rates unchanged at its first policy meeting of 2026, in line with expectations. source: https://www.mql5.com/en/economic-calendar/european-union/ecb-interest-rate-decision '407332776' : added order #481999464 sell 0.01 BTCUSDm at market
I’m looking for developer to build an AI-assisted trading system for Metatader 5 . You to deliver, working MT5 module, AI module (Python or compatible), source codes for both This phase is focused strictly on core logic and AI integration , not UI or dashboards. Kindly reach out only if you have experience on AI integration and prove of past work
EA Expert MTA 4 30+ USD
I have my own indicator and needs to create EA expert working smoothly with it to hit the targets as defined in indicator: Technical approach: - The EA will read the indicator signals using Copy Buffer on the selected timeframe - The EA should hit indicator variable targets factor -​Auto-Entry: Instant execution when the signal appears. ​-Alerts: Mobile Push Notifications + Pop-up alerts. -​Money Management Auto-lot
저는 20 년 경력 의 나스닥 트레이더입니다 . 리스크 관리 규칙을 자동화해 줄 전문 MT5 Expert Advisor가 필요합니다. 요구 사항 은 다음과 같습니다. 1. 종목: 나스닥(US100/NAS100)만 지원 2. 최대 총 거래량: 0.20랏 (보통 0.02랏씩 여러 번 진입) 3. 자동 손절매: 신규 포지션 진입 시 $75 USD 손절매 자동 설정 4. 일일 손실 제한 : 일일 손익 이 - $ 150 USD 이하일 경우 모든 포지션 청산 및 당일 거래 차단 5. 안티 마틴 게일 : 기존 순 포지션이 손실 상태일 경우 신규 진입 차단 6. 피라미 딩 허용 : 기존 포지션 이 수익 상태 일 경우 추가 포지션 진입 허용 (최대 총 0.20 랏) 7. 손익분기점 기능 : 총 수익이 $100 USD 이상일 경우 모든 손절매 를 ( 평균 가격
I am in search of a profitable bot for scalping Gold. The bot should be ready as at now to trade in a live market with good consistency. It should have a low drawdown. No martingale or grid system. The developer should be able to send a demo so I can test. If you have any profitable EA, pls
Основной стандартный и единственный индикатор Параболическая SAR. Непосредственно работа робота. 1. Производится 1 сделка при начале нового тренда, тренд определяется индикатором Parabolic SAR. Пример: если точки расположены ниже цены - значит тренд восходящий, открывается покупка (по рынку), при смене тренда на снижение - точки становятся выше цены, происходит закрытие предыдущей сделки (если она была открыта), и
Hi, I’m looking to build an automated backtest for an ORB breakout strategy on NQ using 1-second data. Every trading day the opening range is built from 09:25:00 to 09:29:49 (New York time). At 09:29:50 two stop orders are placed: buy stop at OR high + offset points sell stop at OR low − offset points. Whichever triggers first becomes the trade and the other order is cancelled. The trade is managed with stop loss
I am in search of a profitable bot for scalping Gold. The bot should be ready as at now to trade in a live market with good consistency. It should have a low drawdown. No martingale or grid system. The developer should be able to send a demo so I can test. If you have any profitable EA, pls holla
Hello everyone, I am looking for an expert who is experienced with the Matriks IQ platform for the Turkish stock market. The project requires proficiency in C# coding within this environment. If you have prior experience or have developed algorithms on this platform, please reach out to me so we can discuss the details. Regards

Información sobre el proyecto

Presupuesto
30+ USD