public SignalActionType GetMACross() { SignalActionType isCross = SignalActionType.Unknown; if (CrossAbove(fastEMA, slowEMA, 1)) { isCross = SignalActionType.CrossAbove; } else if (CrossBelow(fastEMA, slowEMA, 1)) { isCross = SignalActionType.CrossBelow; } return(isCross); }
public void AddIndicatorSignal(int barNo, string signame, SignalActionType saType, SupportResistanceRange <double> snr) { SignalAction sa = new SignalAction(); sa.SignalActionType = saType; sa.SnR = snr; IndicatorSignal isig = new IndicatorSignal(); isig.BarNo = barNo; isig.SignalName = signame; isig.IndicatorSignalType = SignalType.SimplePriceAction; isig.SignalAction = sa; AddIndicatorSignal(barNo, isig); }
public void CheckMACrossEvent() { IndicatorSignal isig = new IndicatorSignal(); SignalActionType isCross = GetMACross(); if (isCross != SignalActionType.Unknown) { Print(String.Format("{0}:isCross={1}, BarsSinceLastCross={2}", CurrentBar, isCross, BarsSinceLastCross[1])); BarsSinceLastCross[0] = 0; } else { BarsSinceLastCross[0] = BarsSinceLastCross[1] + 1; } return; if (isCross == SignalActionType.CrossAbove) { isig.BreakoutDir = BreakoutDirection.Up; isig.SignalName = SignalName_CrossAbove; } else if (isCross == SignalActionType.CrossBelow) { isig.BreakoutDir = BreakoutDirection.Down; isig.SignalName = SignalName_CrossBelow; } else { return; } isig.BarNo = CurrentBar; isig.IndicatorSignalType = SignalType.SimplePriceAction; IndicatorEventArgs ievt = new IndicatorEventArgs(this.GetType().Name, " CheckMACrossEvent: "); ievt.IndSignal = isig; //FireEvent(ievt); OnRaiseIndicatorEvent(ievt); }
/// <summary> /// Get the last signal before barNo by signalActionType /// </summary> /// <param name="barNo"></param> /// <param name="signalActionType"></param> /// <returns></returns> public IndicatorSignal GetLastIndicatorSignalByActionType(int barNo, SignalActionType signal_actiontype) { int k = barNo; foreach (int kk in this.indicatorSignals.Keys.Reverse()) { if (kk < k) { if (barNo < 400) { Print(String.Format("{0}: GetLastIndicatorSignalByActionType -- kk,k={1},{2}; SignalActionType={3}", CurrentBar, kk, k, signal_actiontype.ToString())); } IndicatorSignal sig = GetIndicatorSignalByActionType(k, signal_actiontype); if (sig != null) { return(sig); } k = kk; } } return(null); }
/// <summary> /// Get the signal from bar with barNo and the signalActionType /// </summary> /// <param name="barNo"></param> /// <param name="signalActionType"></param> /// <returns></returns> public IndicatorSignal GetIndicatorSignalByActionType(int barNo, SignalActionType signal_actiontype) { List <IndicatorSignal> list_signal = GetIndicatorSignals(barNo); if (list_signal != null) { foreach (IndicatorSignal sig in list_signal) { if (sig.SignalAction != null && signal_actiontype.Equals(sig.SignalAction.SignalActionType)) { if (barNo < 400) { Print(String.Format("{0}: GetIndicatorSignalByActionType -- barNo={1}, SignalActionType={2}", CurrentBar, barNo, signal_actiontype.ToString())); } return(sig); } } } return(null); }