Пример #1
0
        protected override void StrategyExecute()
        {
            DataSeries sma20 = Indicators.SMA.Series(data.Close, parameters[0], "");

            Indicators.MACD macd = Indicators.MACD.Series(data.Close, parameters[1], parameters[2],
                                                          parameters[3], "");

            Indicators.Stoch stoch = Indicators.Stoch.Series(data.Bars, parameters[4], parameters[5],
                                                             parameters[6], "");

            DataSeries line1 = stoch.SlowKSeries;
            DataSeries line2 = stoch.SlowDSeries;

            double delta = 0, lastDelta = 0;
            bool   upTrend = false;

            AppTypes.MarketTrend stochasticTrend = AppTypes.MarketTrend.Unspecified;

            for (int idx = 1; idx < macd.Values.Length; idx++)
            {
                delta           = (macd.HistSeries[idx] - macd.HistSeries[idx - 1]);
                stochasticTrend = ((line1[idx] > line2[idx]) ? AppTypes.MarketTrend.Upward : AppTypes.MarketTrend.Downward);
                upTrend         = (data.Close[idx] > sma20[idx] ? true : false);
                if (upTrend && delta > 0 && lastDelta < 0 && stochasticTrend == AppTypes.MarketTrend.Upward)
                {
                    BuyAtClose(idx);
                }

                if (is_bought && stochasticTrend == AppTypes.MarketTrend.Downward)
                {
                    SellAtClose(idx);
                }
                lastDelta = delta;
            }
        }
        override protected void StrategyExecute()
        {
            DataSeries sma20 = Indicators.SMA.Series(data.Close, parameters[0], "");

            Indicators.MACD macd = Indicators.MACD.Series(data.Close, parameters[1], parameters[2],
                                                          parameters[3], "");
            DataSeries hist = macd.HistSeries;

            Indicators.Stoch stoch = Indicators.Stoch.Series(data.Bars, parameters[4], parameters[5],
                                                             parameters[6], "");

            DataSeries line1 = stoch.SlowKSeries;
            DataSeries line2 = stoch.SlowDSeries;

            double delta = 0, lastDelta = 0;
            bool   macd_swicth_to_up_trend = false, macd_swicth_to_down_trend = false, sto_switch_to_up_trend = false, sto_switch_to_down_trend = false;


            AppTypes.MarketTrend stochasticTrend = AppTypes.MarketTrend.Unspecified;

            for (int idx = 1; idx < macd.Count; idx++)
            {
                delta = (hist[idx] - hist[idx - 1]);
                macd_swicth_to_up_trend   = (delta > 0 && lastDelta < 0 ? true : false);
                macd_swicth_to_down_trend = (delta < 0 && lastDelta > 0 ? true : false);
                stochasticTrend           = (line1[idx] > line2[idx] ? AppTypes.MarketTrend.Upward : AppTypes.MarketTrend.Downward);
                sto_switch_to_up_trend    = (line1[idx] > line2[idx]) && (line1[idx - 1] < line2[idx - 1]) ? true : false;
                sto_switch_to_down_trend  = (line1[idx] < line2[idx]) && (line1[idx - 1] > line2[idx - 1]) ? true : false;


                if (!is_bought && data.Close[idx] > sma20[idx])
                {
                    if (macd_swicth_to_up_trend && stochasticTrend == AppTypes.MarketTrend.Downward)
                    {
                        BuyAtClose(idx);
                    }
                }

                if (is_bought)
                {
                    if (sto_switch_to_down_trend || macd_swicth_to_down_trend)
                    {
                        SellAtClose(idx);
                    }
                }
                lastDelta = delta;
            }
        }
Пример #3
0
        override protected void StrategyExecute()
        {
            Indicators.MACD macd = Indicators.MACD.Series(data.Close, parameters[0], parameters[1], parameters[2], "");
            DataSeries      ema  = macd.SignalSeries;

            AppTypes.MarketTrend lastTrend    = AppTypes.MarketTrend.Unspecified;
            AppTypes.MarketTrend currentTrend = AppTypes.MarketTrend.Unspecified;

            for (int idx = 0; idx < macd.Count; idx++)
            {
                currentTrend = (macd[idx] > ema[idx]) ? AppTypes.MarketTrend.Upward : AppTypes.MarketTrend.Downward;
                if (lastTrend == AppTypes.MarketTrend.Downward && currentTrend == AppTypes.MarketTrend.Upward)
                {
                    BuyAtClose(idx);
                }
                if (lastTrend == AppTypes.MarketTrend.Upward && currentTrend == AppTypes.MarketTrend.Downward)
                {
                    SellAtClose(idx);
                }
                lastTrend = currentTrend;
            }
        }
Пример #4
0
 public MACD_HistogramRule(DataSeries ds, double fast, double slow, double signal)
 {
     macd = Indicators.MACD.Series(ds, fast, slow, signal, "macd");
     ema = macd.SignalSeries;
     hist = macd.HistSeries;
 }
Пример #5
0
 public MACD_HistogramRule(DataSeries ds, double fast, double slow, double signal)
 {
     macd = Indicators.MACD.Series(ds, fast, slow, signal, "macd");
     ema  = macd.SignalSeries;
     hist = macd.HistSeries;
 }
Пример #6
0
 public BasicMACDRule(DataSeries ds, int fast, int slow, int signal)
 {
     macd = Indicators.MACD.Series(ds, fast, slow, signal, "macd");
     ema  = macd.SignalSeries;
 }
Пример #7
0
 public BasicMACDRule(DataSeries ds, int fast, int slow, int signal)
 {
     macd = Indicators.MACD.Series(ds, fast, slow, signal, "macd");
     ema = macd.SignalSeries;
 }