65 lines
2.5 KiB
MQL5
65 lines
2.5 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| UseWPR2.mq5 |
|
||
|
//| Copyright 2021, MetaQuotes Ltd. |
|
||
|
//| https://www.mql5.com |
|
||
|
//+------------------------------------------------------------------+
|
||
|
#property indicator_separate_window
|
||
|
#property indicator_buffers 0
|
||
|
#property indicator_plots 0
|
||
|
|
||
|
#include "..\..\Include\PRTF.mqh"
|
||
|
|
||
|
// parameter to pass into subordinate indicator (0 is deliberately incorrect for IndWPR)
|
||
|
input int WPRPeriod = 0;
|
||
|
|
||
|
// global variable for subordinate indicator
|
||
|
int handle;
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Custom indicator initialization function |
|
||
|
//+------------------------------------------------------------------+
|
||
|
int OnInit()
|
||
|
{
|
||
|
// use most simple way of creation with the name only, and the parameter
|
||
|
handle = PRTF(iCustom(_Symbol, _Period, "IndWPR", WPRPeriod));
|
||
|
// the next check should not be done here normally, because we need to wait
|
||
|
// when the indicator is get executed and calculated (only for demo purpose)
|
||
|
PRTF(BarsCalculated(handle));
|
||
|
return handle == INVALID_HANDLE ? INIT_FAILED : INIT_SUCCEEDED;
|
||
|
}
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Custom indicator iteration function |
|
||
|
//+------------------------------------------------------------------+
|
||
|
int OnCalculate(const int rates_total,
|
||
|
const int prev_calculated,
|
||
|
const int begin,
|
||
|
const double &data[])
|
||
|
{
|
||
|
// wait until the subindicator is calculated for all bars
|
||
|
if(PRTF(BarsCalculated(handle)) != PRTF(rates_total))
|
||
|
{
|
||
|
return prev_calculated;
|
||
|
}
|
||
|
|
||
|
// ... here will go normal processing relying on the handle
|
||
|
|
||
|
return rates_total;
|
||
|
}
|
||
|
//+------------------------------------------------------------------+
|
||
|
/*
|
||
|
example output 1 (for WPRPeriod = 0):
|
||
|
|
||
|
iCustom(_Symbol,_Period,IndWPR,WPRPeriod)=10 / ok
|
||
|
BarsCalculated(handle)=-1 / INDICATOR_DATA_NOT_FOUND(4806)
|
||
|
Alert: Incorrect Period value (0). Should be 1 or larger
|
||
|
BarsCalculated(handle)=0 / ok
|
||
|
rates_total=20000 / ok
|
||
|
|
||
|
example output 2:
|
||
|
iCustom(_Symbol,_Period,IndWPR,WPRPeriod)=10 / ok
|
||
|
BarsCalculated(handle)=-1 / INDICATOR_DATA_NOT_FOUND(4806)
|
||
|
BarsCalculated(handle)=20000 / ok
|
||
|
rates_total=20000 / ok
|
||
|
|
||
|
*/
|