Squeeze Momentum Indicator [LazyBear]

MQL5 Esperti

Lavoro terminato

Tempo di esecuzione 31 minuti
Feedback del cliente
absolutely brilliant everything i ask for and more, and all done within a couple of hours. I would use again without hesitation
Feedback del dipendente
Very thanks for order! Please let me know if you need programmer!

Specifiche

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);
  
  
}
//+------------------------------------------------------------------+


Con risposta

1
Sviluppatore 1
Valutazioni
(1156)
Progetti
1462
63%
Arbitraggio
21
57% / 10%
In ritardo
43
3%
Gratuito
2
Sviluppatore 2
Valutazioni
(8)
Progetti
16
0%
Arbitraggio
8
13% / 75%
In ritardo
3
19%
Gratuito
3
Sviluppatore 3
Valutazioni
(361)
Progetti
643
26%
Arbitraggio
92
72% / 14%
In ritardo
12
2%
In elaborazione
Pubblicati: 1 codice
4
Sviluppatore 4
Valutazioni
(87)
Progetti
114
26%
Arbitraggio
7
29% / 57%
In ritardo
5
4%
Gratuito
5
Sviluppatore 5
Valutazioni
(54)
Progetti
53
17%
Arbitraggio
7
0% / 100%
In ritardo
5
9%
Gratuito
Ordini simili
I am looking to hire a senior MQL5 developer for a serious AI-driven trading system . This project is NOT indicator-based, grid-based, or martingale-based. 👉 All trade decisions (ENTRY & EXIT) will be generated 100% by Claude AI 👉 The MT5 EA will act strictly as an execution, risk-control, and trade-management layer 🧠 System Overview Claude AI generates: BUY / SELL / CLOSE / HOLD signals Timing and direction
Expert Advisor not taking trades automatically as expected Need to make sure logic is sound and effective Make sure it is optimized to trade crash and boom only Modify if necessary so that the EA can perform at its best It should provide 1 notification per trade/signal found
I need a scalping-specific logic MT5 trading bot with a Donchian-channel–based dynamic stop-loss and take-profit system, applies RSI volatility filtering to avoid low-quality setups, and allows asset-specific adjustable parameters for fine-tuning performance Trading details: - Symbol: Any Forex EUR/USD - Platform: MT5 - Strategy type: Scalping (fast trades) - Timeframes: 5sec/ M1 / M5 - Fixed Stop Loss and Take
MT5 EA 30 - 60 USD
Hi i want a professional developer who can create me Ea based on candle sticks and high and lows , i have full specifications what exactly i want to be in my Ea , the inputs and how it should work and i will also tell u what type of panel i want for proper detailed specifications message me only professional developers
I have funds in my MQL5 account that I need to withdraw directly to a Visa card (not WebMoney or other methods). I am located in East Africa (Tanzania), and my previous attempts to withdraw to Visa have failed multiple times with decline errors. I am looking for an experienced MQL5 user who can provide step-by-step instructions or guidance (e.g., via chat, screenshots, or screen share) to successfully complete a Visa
Please apply ONLY if you clearly understand and can implement ALL conditions below. ============================== 1) ZigZag (MOST IMPORTANT) ============================== - ZigZag must be CUSTOM and OBJECT-BASED. - DO NOT use built-in ZigZag indicator. - EA itself must draw ZigZag lines on the chart using chart objects. - User must NOT apply any indicator manually. - When EA is attached → ZigZag must appear
Mt5 Ea 40+ USD
I’m looking for an experienced MetaTrader 5 (MQL5) developer to convert a specific trading strategy into a fully automated EA. Strategy Requirements: Trend (H1): EMA50 > EMA200 → BUY only; EMA50 < EMA200 → SELL only Entry (M15): Wait for price to touch/approach EMA50, then enter on bullish/bearish candlestick pullback Risk Management: Stop Loss = last high/low of pullback candle Take Profit = 2× SL distance (RR 1:2)
I am looking for an experienced MQL4 / MQL5 developer to create a custom Expert Advisor (EA). Trading details: - Symbol: XAUUSD (Gold) only - Platform: MT4 or MT5 - Strategy type: Scalping (fast trades) - Timeframes: M1 / M5 - Fixed Stop Loss and Take Profit - Risk management: - Lot size based on balance OR fixed lot (user configurable) - Maximum trades per day (user configurable) - Spread and slippage filter -
PROJECT DESCRIPTION: Looking for Pro-level MQL5 developer or Pro Team to develop 2 Expert Advisors for MetaTrader 5: EA 1: Grid Martingale Pro Classic Grid Martingale (one-way: Buy or Sell) Custom Lot Sequence and Distance Sequence Multiple TP/SL modes: Points, USD, Trailing Filters: Strong Trend Filter (StochRSI + SuperTrend + ADX), ATO Filter, Time Filter News Filter from Forex Factory (stop trading 1h before news)
1. I will pay 3000+ USD (negotiable) for an EA for existing MT4/5 that generates a minimum of 15-20% or higher a month consistently (provide source code after final deal) 2. Looking for a highly profitable EA 3. Please send demo version directly subject (Buying profitable EA Budget up to $ 3000 USD), past results and optimal settings so I can test, if it performs in a strategy tester i will also need option to

Informazioni sul progetto

Budget
30+ USD