|
public class iMACD { int pSlowEMA, pFastEMA, pSignalEMA; iEMA slowEMA, fastEMA, signalEMA;
// restriction: pPFastEMA < pPSlowEMA public iMACD(int pPFastEMA, int pPSlowEMA, int pPSignalEMA) { pFastEMA = pPFastEMA; pSlowEMA = pPSlowEMA; pSignalEMA = pPSignalEMA;
slowEMA = new iEMA(pSlowEMA); fastEMA = new iEMA(pFastEMA); signalEMA = new iEMA(pSignalEMA); }
public void ReceiveTick(double Val) { slowEMA.ReceiveTick(Val); fastEMA.ReceiveTick(Val); if (slowEMA.isPrimed() && fastEMA.isPrimed()) { signalEMA.ReceiveTick(fastEMA.Value()-slowEMA.Value()); } }
public void Value(out double MACD, out double signal, out double hist) { if (signalEMA.isPrimed()) { MACD = fastEMA.Value() - slowEMA.Value(); signal = signalEMA.Value(); hist = MACD - signal; } else { MACD = 0; signal = 0; hist = 0; } }
public bool isPrimed() { bool v = false; if (signalEMA.isPrimed()) { v = true; } return v; } }
|