示例#1
0
        override protected void StrategyExecute()
        {
            BasicTRIXRule rule              = new BasicTRIXRule(data.Close, parameters[0], "TRIX");
            int           cutlosslevel      = (int)parameters[1];
            int           trailingstoplevel = (int)parameters[2];
            int           takeprofitlevel   = (int)parameters[3];

            Indicators.MIN min = Indicators.MIN.Series(data.Close, parameters[0], "min");
            Indicators.MAX max = Indicators.MAX.Series(data.Close, parameters[0], "max");


            for (int idx = rule.trix.FirstValidValue; idx < data.Close.Count - 1; idx++)
            {
                if (rule.isValid_forBuy(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Upward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = max[idx];
                    info.Stop_Loss    = min[idx];
                    BuyAtClose(idx, info);
                }
                if (rule.isValid_forSell(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Downward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = min[idx];
                    info.Stop_Loss    = max[idx];
                    SellAtClose(idx, info);
                }

                if (is_bought && CutLossCondition(data.Close[idx], buy_price, cutlosslevel))
                {
                    SellCutLoss(idx);
                }

                if (is_bought && TakeProfitCondition(data.Close[idx], buy_price, takeprofitlevel))
                {
                    SellTakeProfit(idx);
                }

                if (trailingstoplevel > 0)
                {
                    TrailingStopWithBuyBack(rule, data.Close[idx], trailingstoplevel, idx);
                }
                //Trailing stop strategtest
                //new_trailing_stop = data.Close[idx] * (1 - trailingstoplevel / 100);
                //if (new_trailing_stop > trailing_stop)
                //{
                //    trailing_stop = new_trailing_stop;
                //    //Buy back share if
                //    if ((!is_bought) && rule.UpTrend(idx)) BuyAtClose(idx);
                //}
                //else
                //    if (data.Close[idx]<trailing_stop)
                //    {
                //        SellTakeProfit(idx);
                //        trailing_stop = -1;
                //    }
            }
        }
示例#2
0
        override protected void StrategyExecute()
        {
            BasicTRIXRule rule = new BasicTRIXRule(data.Close, parameters[0], "TRIX");
            int cutlosslevel = (int)parameters[1];
            int trailingstoplevel = (int)parameters[2];
            int takeprofitlevel = (int)parameters[3];

            Indicators.MIN min = Indicators.MIN.Series(data.Close, parameters[0], "min");
            Indicators.MAX max = Indicators.MAX.Series(data.Close, parameters[0], "max");


            for (int idx = rule.trix.FirstValidValue; idx < data.Close.Count - 1; idx++)
            {
                if (rule.isValid_forBuy(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Upward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = max[idx];
                    info.Stop_Loss = min[idx];
                    BuyAtClose(idx, info);
                }
                if (rule.isValid_forSell(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Downward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = min[idx];
                    info.Stop_Loss = max[idx];
                    SellAtClose(idx, info);
                }

                if (is_bought && CutLossCondition(data.Close[idx], buy_price, cutlosslevel))
                    SellCutLoss(idx);

                if (is_bought && TakeProfitCondition(data.Close[idx], buy_price, takeprofitlevel))
                    SellTakeProfit(idx);

                if (trailingstoplevel>0) 
                    TrailingStopWithBuyBack(rule,data.Close[idx],trailingstoplevel,idx);
                //Trailing stop strategtest
                //new_trailing_stop = data.Close[idx] * (1 - trailingstoplevel / 100);
                //if (new_trailing_stop > trailing_stop)
                //{
                //    trailing_stop = new_trailing_stop;
                //    //Buy back share if 
                //    if ((!is_bought) && rule.UpTrend(idx)) BuyAtClose(idx);
                //}
                //else
                //    if (data.Close[idx]<trailing_stop)
                //    {
                //        SellTakeProfit(idx);
                //        trailing_stop = -1;
                //    }
            }
        }
示例#3
0
        override protected void StrategyExecute()
        {
            BasicTRIXRule rule            = new BasicTRIXRule(data.Close, parameters[0], "TRIX");
            int           cutlosslevel    = (int)parameters[1];
            int           takeprofitlevel = (int)parameters[2];

            Indicators.MIN min = Indicators.MIN.Series(data.Close, parameters[0], "min");
            Indicators.MAX max = Indicators.MAX.Series(data.Close, parameters[0], "max");

            for (int idx = rule.trix.FirstValidValue; idx < data.Close.Count - 1; idx++)
            {
                if (rule.isValid_forBuy(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Upward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = max[idx];
                    info.Stop_Loss    = min[idx];
                    BuyAtClose(idx, info);
                }
                if (rule.isValid_forSell(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Downward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = min[idx];
                    info.Stop_Loss    = max[idx];
                    SellAtClose(idx, info);
                }

                if (is_bought && CutLossCondition(data.Close[idx], buy_price, cutlosslevel))
                {
                    SellCutLoss(idx);
                }

                if (is_bought && TakeProfitCondition(data.Close[idx], buy_price, takeprofitlevel))
                {
                    SellTakeProfit(idx);
                }

                //Trailing stop strategy test
                //new_trailing_stop = price * 0.85;
                //if new_trailing_stop>trailing_stop trailing_stop=new_trailing_stop;
                //else if new_trailing_stop<trailing_stop SellTakeProfit(idx)
            }
        }
示例#4
0
        override protected void StrategyExecute()
        {
            BasicTRIXRule rule = new BasicTRIXRule(data.Close, parameters[0],"TRIX");
            int cutlosslevel = (int)parameters[1];
            int takeprofitlevel = (int)parameters[2];

            Indicators.MIN min = Indicators.MIN.Series(data.Close, parameters[0], "min");
            Indicators.MAX max = Indicators.MAX.Series(data.Close, parameters[0], "max");

            for (int idx = rule.trix.FirstValidValue; idx < data.Close.Count - 1; idx++)
            {
                if (rule.isValid_forBuy(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Upward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = max[idx];
                    info.Stop_Loss = min[idx];
                    BuyAtClose(idx, info);
                }
                if (rule.isValid_forSell(idx))
                {
                    BusinessInfo info = new BusinessInfo();
                    info.SetTrend(AppTypes.MarketTrend.Downward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified);
                    info.Short_Target = min[idx];
                    info.Stop_Loss = max[idx];
                    SellAtClose(idx, info);
                }

                if (is_bought && CutLossCondition(data.Close[idx], buy_price, cutlosslevel))
                    SellCutLoss(idx);

                if (is_bought && TakeProfitCondition(data.Close[idx], buy_price, takeprofitlevel))
                    SellTakeProfit(idx);

                //Trailing stop strategy test
                //new_trailing_stop = price * 0.85;
                //if new_trailing_stop>trailing_stop trailing_stop=new_trailing_stop;
                //else if new_trailing_stop<trailing_stop SellTakeProfit(idx)
            }
        }