You don't need to use 'iLowest' - you already have access to the ' low ' array in OnCalculate. You must use the ' ArrayMinimum ' function.
//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Lowest #property indicator_label1 "Lowest" #property indicator_type1 DRAW_LINE #property indicator_color1 clrYellowGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input int Input1=9; //--- indicator buffers double LowestBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,LowestBuffer,INDICATOR_DATA); //--- set accuracy IndicatorSetInteger(INDICATOR_DIGITS,Digits()); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| 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<Input1) return(0); //--- int limit=prev_calculated-1; if(prev_calculated==0) limit=Input1; for(int i=limit; i<rates_total; i++) { LowestBuffer[i]=low[ArrayMinimum(low,i-Input1,Input1)]; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Documentation on MQL5: Array Functions / ArrayMinimum
- www.mql5.com
ArrayMinimum - Array Functions - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
Files:
Test.mq5
3 kb
There is a small error in my code - but this is a task for attentiveness :)
Marbo # :
I saw the small error and corrected it. :)
Thank you very much for your help. The indicator works perfect now!
You can see the channel ( Channel N Bars ) which is built either by High Low or Close Open.
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hello guys,
can someone tell my why this code doesn't work correctly?