how to code "first indicator's data" into your indicator
Do not double post!!
I have deleted your duplicate topic.
//--- input parameters input int MAPeriod=9; input int MAShift=0; input ENUM_MA_METHOD MAMethod=MODE_SMA; input int CCIPeriod=14; input ENUM_APPLIED_PRICE CCIPrice=PRICE_TYPICAL; input int RSIPeriod=14; input ENUM_APPLIED_PRICE RSIPrice=PRICE_CLOSE; enum APPLY_TO { APPLY_TO_Close=PRICE_CLOSE, //Close APPLY_TO_Open=PRICE_OPEN, //Open APPLY_TO_High=PRICE_HIGH, //High APPLY_TO_Low=PRICE_LOW, //Low APPLY_TO_Median=PRICE_MEDIAN, //Median APPLY_TO_Typical=PRICE_TYPICAL, //Typical APPLY_TO_Weighted=PRICE_WEIGHTED, //Weighted APPLY_TO_CCI, //Commodity Channel Index APPLY_TO_RSI //Relative Strength Index }; input APPLY_TO ApplyTo=APPLY_TO_Close; //--- indicator buffers double MABuffer[]; double IndBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- string name=StringFormat(" %s(%d)",StringSubstr(EnumToString(MAMethod),5),MAPeriod); //--- indicator buffers mapping SetIndexBuffer(0,MABuffer); SetIndexShift(0,MAShift); SetIndexLabel(0,name); SetIndexDrawBegin(0,MAPeriod); SetIndexBuffer(1,IndBuffer); string name1=StringFormat("%s",StringSubstr(EnumToString(ApplyTo),9)); SetIndexLabel(1,name1); IndicatorSetInteger(INDICATOR_DIGITS,_Digits); if(ApplyTo==APPLY_TO_CCI) { name1+=StringFormat("(%d)",CCIPeriod); SetIndexLabel(1,name1); IndicatorSetInteger(INDICATOR_DIGITS,0); } if(ApplyTo==APPLY_TO_RSI) { name1+=StringFormat("(%d)",RSIPeriod); SetIndexLabel(1,name1); IndicatorSetInteger(INDICATOR_DIGITS,1); } IndicatorSetString(INDICATOR_SHORTNAME,name1+name); //--- 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[]) { //--- int begin=(rates_total!=prev_calculated)?rates_total-prev_calculated-1:0; //--- apply to CCI if(ApplyTo==APPLY_TO_CCI) { for(int i=begin;i>=0;i--) IndBuffer[i]=iCCI(_Symbol,_Period,CCIPeriod,CCIPrice,i); for(int i=begin;i>=0;i--) MABuffer[i]=iMAOnArray(IndBuffer,rates_total,MAPeriod,0,MAMethod,i); } //--- apply to RSI else if(ApplyTo==APPLY_TO_RSI) { for(int i=begin;i>=0;i--) IndBuffer[i]=iRSI(_Symbol,_Period,RSIPeriod,RSIPrice,i); for(int i=begin;i>=0;i--) MABuffer[i]=iMAOnArray(IndBuffer,rates_total,MAPeriod,0,MAMethod,i); } //--- apply to price else for(int i=begin;i>=0;i--) { IndBuffer[i]=iMA(_Symbol,_Period,1,0,MODE_SMA,(ENUM_APPLIED_PRICE)ApplyTo,i); MABuffer[i]=iMA(_Symbol,_Period,MAPeriod,0,MAMethod,(ENUM_APPLIED_PRICE)ApplyTo,i); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
This is the MQL4 section. It does not support the second format using "price", as defined in the MQL5 documentation.
Help me!
I want to code a hybrid indicator for an mt4 application. I will use the Accumulation/Distribution indicator as the main indicator, then I will add 3 Moving Averages with 3 different periods to the Accumulation/Distribution indicator, the data of the Moving Average indicator will take data of the Accumulation/distribution indicator as input in the form of "first indicator's data"
I have the file thanks to "chat box" write the help code below
Thanks !
let me explain my question that i think is different from others', or not?
1 i wanted to make my indicator shows the parameter tab
2 in that parameter tab it shows "apply to" option with the drop-down menu offering various ENUM_MA_METHOD including the previous and first indicator's data
similar to the attached pic
i've searched in the forum and still not finding the sample code that will enable me to do the above for my indicator. and indicators come with mt4 don't include
the source code that i can use as an example to do so. can someone please give me some sample code for me to solve my problem?