Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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);
        }