override protected void StrategyExecute() { BasicSARRule sarRule = new BasicSARRule(data.Bars, parameters[0], parameters[1]); TwoEMARule emaRule = new TwoEMARule(data.Close, parameters[2], parameters[3]); int cutlosslevel = (int)parameters[4]; int takeprofitlevel = (int)parameters[5]; for (int idx = 0; idx < data.Close.Count - 1; idx++) { if ((!is_bought) && ((sarRule.isValid_forBuy(idx) && emaRule.UpTrend(idx)))) { BusinessInfo info = new BusinessInfo(); info.SetTrend(AppTypes.MarketTrend.Upward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified); BuyAtClose(idx, info); } if (is_bought && (sarRule.isValid_forSell(idx) || emaRule.isValid_forSell(idx))) //if (dmiRule.isValid_forSell(idx)) { BusinessInfo info = new BusinessInfo(); info.SetTrend(AppTypes.MarketTrend.Downward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified); 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); } } }
override protected void StrategyExecute() { BasicSARRule sarRule = new BasicSARRule(data.Bars, parameters[0], parameters[1]); TwoEMARule emaRule = new TwoEMARule(data.Close, parameters[2], parameters[3]); int cutlosslevel = (int)parameters[4]; int takeprofitlevel = (int)parameters[5]; for (int idx = 0; idx < data.Close.Count; idx++) { if ((!is_bought) && ((sarRule.isValid_forBuy(idx) && emaRule.UpTrend(idx)))) { BusinessInfo info = new BusinessInfo(); info.SetTrend(AppTypes.MarketTrend.Upward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified); BuyAtClose(idx, info); } if (is_bought && (sarRule.isValid_forSell(idx) || emaRule.isValid_forSell(idx))) //if (dmiRule.isValid_forSell(idx)) { BusinessInfo info = new BusinessInfo(); info.SetTrend(AppTypes.MarketTrend.Downward, AppTypes.MarketTrend.Unspecified, AppTypes.MarketTrend.Unspecified); 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); } }
override protected void StrategyExecute() { BasicATRRule rule = new BasicATRRule(data.Bars, parameters[0], "atr"); TwoEMARule emaRule = new TwoEMARule(data.Close, parameters[1], parameters[2]); int cutlosslevel = (int)parameters[3]; int trailingstoplevel = (int)parameters[4]; int takeprofitlevel = (int)parameters[5]; 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 = 0; idx < data.Close.Count - 1; idx++) { if (rule.isValid_forBuy(idx) && emaRule.UpTrend(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); } else if (rule.isValid_forSell(idx) || emaRule.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); } } }
override protected void StrategyExecute() { BasicATRRule rule = new BasicATRRule(data.Bars, parameters[0], "atr"); TwoEMARule emaRule = new TwoEMARule(data.Close, parameters[1], parameters[2]); int cutlosslevel = (int)parameters[3]; int trailingstoplevel = (int)parameters[4]; int takeprofitlevel = (int)parameters[5]; 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 = 0; idx < data.Close.Count - 1; idx++) { if (rule.isValid_forBuy(idx) && emaRule.UpTrend(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); } else if (rule.isValid_forSell(idx) || emaRule.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); } }
public BollingerKeltnerEMARule(DataBars db, double BolligerPeriod, double kUp, double kDn, double EmaPeriod, double AtrMult, double AtrPeriod, double emaShortPeriod, double emaLongPeriod) { bolliger = Indicators.BBANDS.Series(db.Close, BolligerPeriod, kUp, kDn, "bolliger"); keltner = Indicators.KELTNER.Series(db, EmaPeriod, AtrMult, AtrPeriod, "keltner"); emaRule = new TwoEMARule(db.Close, emaShortPeriod, emaLongPeriod); }
public BollingerKeltnerEMARule(DataBars db,double BolligerPeriod,double kUp,double kDn,double EmaPeriod,double AtrMult,double AtrPeriod,double emaShortPeriod,double emaLongPeriod) { bolliger=Indicators.BBANDS.Series(db.Close,BolligerPeriod,kUp,kDn,"bolliger"); keltner=Indicators.KELTNER.Series(db,EmaPeriod,AtrMult,AtrPeriod,"keltner"); emaRule = new TwoEMARule(db.Close, emaShortPeriod, emaLongPeriod); }