iMACD

 
if I want the signal to be the EMA instead of the SMA for the signal, how can it be done with the iMACD function?
 
Simple Moving Average:
double sma21 = iMA(NULL,Period(),21,0,MODE_SMA,PRICE_CLOSE,0);

Exponential Moving Average:
double ema21 = iMA(NULL,Period(),21,0,MODE_EMA,PRICE_CLOSE,0);

- Vooch

EDIT: ooopss... this is for iMA
 
for(int i=0; i<limit; i++)
ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_EMA,i);

or

for(int i=0; i<limit; i++)
MACD[i]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
MACDSignal[i]=iMAOnArray(MACD,Bars,SignalSMA,0,MODE_EMA,i);
 
for(int i=0; i<limit; i++)
ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_EMA,i);

or

for(int i=0; i<limit; i++)
MACD[i]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
MACDSignal[i]=iMAOnArray(MACD,Bars,SignalSMA,0,MODE_EMA,i);



Yes What would SignalSMA be?
 
for(int i=0; i<limit; i++)
ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_EMA,i);

or

for(int i=0; i<limit; i++)
MACD[i]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
MACDSignal[i]=iMAOnArray(MACD,Bars,SignalSMA,0,MODE_EMA,i);



I mean to ask the following

I want to use the iOsMA(NULL,0,12,26,9,PRICE_CLOSE,0) but with the EMA instead of the SMA in generating such function
 
for(int i=0; i<limit; i++)
MACD[i]=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
//---- signal line counted in the 2-nd buffer
for(i=0; i<limit; i++)
MACDSignal[i]=iMAOnArray(MACD,Bars,SignalEMA,0,MODE_EMA,i);
for(i=0; i<limit; i++)
OsMA[i]=MACD[i]-MACDSignal[i];