override public TradePoints Execute(application.Data data, int[] parameters) { //application.Data vnidxData1 = data.New("^VNINDEX"); adviceInfo = new TradePoints(); DataSeries minusDmi_14 = new Indicators.MinusDI(data.Bars, parameters[0], ""); DataSeries plusDmi_14 = new Indicators.PlusDI(data.Bars, parameters[1], ""); AppTypes.MarketTrend lastTrend = AppTypes.MarketTrend.Unspecified; AppTypes.MarketTrend currentTrend = AppTypes.MarketTrend.Unspecified; for (int idx = 0; idx < minusDmi_14.Count; idx++) { currentTrend = ((plusDmi_14[idx] > minusDmi_14[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; } return(adviceInfo); }
override public TradePoints Execute(application.Data data, int[] parameters) { //application.Data vnidxData1 = data.New("^VNINDEX"); adviceInfo = new TradePoints(); DataSeries minusDmi_14 = new Indicators.MinusDI(data.Bars, parameters[0], ""); DataSeries plusDmi_14 = new Indicators.PlusDI(data.Bars, parameters[1], ""); AppTypes.MarketTrend lastTrend = AppTypes.MarketTrend.Unspecified; AppTypes.MarketTrend currentTrend = AppTypes.MarketTrend.Unspecified; for (int idx = 0; idx < minusDmi_14.Count; idx++) { currentTrend = ((plusDmi_14[idx] > minusDmi_14[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; } return adviceInfo; }