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); } //+------------------------------------------------------------------+
Files:
Apply_To.mq4
5 kb
Ernst Van Der Merwe #:
Hi, thank you for sharing your codes. I manage to replicate my manual indicator setup. I have been trying to change the source price in RSI function for the past 3 days with the help of chatgpt but it all fail to show any value.Chatgpt never recommend me to use iRSIOnArray so I able to use any variable for storing source price i want instead of fixed double.
It was fun journey tho 😂
beee:i've searched in the forum and still not finding the sample code that will enable me to do the above for my indicator.
Use the format of OnCalculate as defined in MT5 documentation containing price.
@William Roeder #: Use the format of OnCalculate as defined in MT5 documentation containing price.
This is the MQL4 section. It does not support the second format using "price", as defined in the MQL5 documentation.
@hundredX #: Hi, thank you for sharing your codes. I manage to replicate my manual indicator setup. I have been trying to change the source price in RSI function for the past 3 days with the help of chatgpt but it all fail to show any value. Chatgpt never recommend me to use iRSIOnArray so I able to use any variable for storing source price i want instead of fixed double. It was fun journey tho 😂
Please stop using ChatGPT AI to generate MQL code. It produces horrible results. Learn to code it properly yourself.
Ernst Van Der Merwe #:
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 !
Files:
ADMA.mq4
3 kb
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
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?