public void PlotStrategyTradepoints(application.Strategy.StrategyMeta meta, bool showEstimation, EstimateTradePointFunc estimateFunc) { int idx; ShowMessage(""); EstimateOptions estOption = new EstimateOptions(); databases.tmpDS.tradeEstimateDataTable tbl = new databases.tmpDS.tradeEstimateDataTable(); application.StrategyStatistics statistics=new StrategyStatistics(); //TradePointInfo[] tradePoints = DataAccess.Libs.GetTradePointWithEstimationDetail(myData.myDataParam,myData.DataStockCode,meta.Code, estOption, out tbl,out statistics); /// Estimate trade points and set tradepoint's [isValid] property to mark whether a tradepoint is valid or not. for (idx = 0; idx < tradePoints.Length; idx++) { tradePoints[idx].isValid = !tbl[idx].ignored; } for (idx = tradePoints.Length - 1; idx > 0; idx--) if (tradePoints[idx].isValid) break; TradePointInfo tpiTradePointInfo = (TradePointInfo)tradePoints[idx]; BusinessInfo biLastTrade = tpiTradePointInfo.BusinessInfo; BusinessInfo biLastPoint=tradePoints[tradePoints.Length-1].BusinessInfo; double price= myData.Close[myData.Close.Count-1]; double risk = (biLastPoint.Short_Resistance - price) / (price - biLastPoint.Short_Support); //string sResult = "Close price=" + price+ // "Target="+biLastTrade.Short_Target+ // "Resistance=" + biLastPoint.Short_Resistance + // " Support=" + biLastPoint.Short_Support + // " Risk return=" +risk+ // " Winning Percentage:"+ String.Format("{0:P2}",statistics.dWinningPercentagePerTrade)+ // " Max %Win Per Trade:" + String.Format("{0:P2}",statistics.dMaxWinningPercentage)+ // " Max %Lose Per Trade" + String.Format("{0:P2}", statistics.dMaxLosingPercentage)+ // " Average %Win Per Trade" + String.Format("{0:P2}", statistics.dAverageWinningPercentage)+ // " Average %Lose Per Trade" + String.Format("{0:P2}", statistics.dAverageLosingPercentage); ; PlotStrategyTradepoints(application.Strategy.StrategyLibs.ToTradePoints(tradePoints), pricePanel); //MessageBox.Show(sResult); //Show form //Tools.Forms.TradeStatistics formStatistic = (client.main)this.ParentForm; if (formStatistic == null) { formStatistic = new Tools.Forms.TradeStatistics(); formStatistic.AddStatisticInfo("Close price", price); formStatistic.AddStatisticInfo("Target", biLastTrade.Short_Target); formStatistic.AddStatisticInfo("Resistance", biLastPoint.Short_Resistance); formStatistic.AddStatisticInfo("Support", biLastPoint.Short_Support); formStatistic.AddStatisticInfo("Risk return", String.Format("{0:0.0%}", risk)); formStatistic.AddStatisticInfo("Winning Percentage", String.Format("{0:0.0%}", statistics.dWinningPercentagePerTrade)); formStatistic.AddStatisticInfo("Max %Win Per Trade", String.Format("{0:0.0%}", statistics.dMaxWinningPercentage)); formStatistic.AddStatisticInfo("Max %Lose Per Trade", String.Format("{0:0.0%}", statistics.dMaxLosingPercentage)); formStatistic.AddStatisticInfo("Average %Win Per Trade", String.Format("{0:0.0%}", statistics.dAverageWinningPercentage)); formStatistic.AddStatisticInfo("Average %Lose Per Trade", String.Format("{0:0.0%}", statistics.dAverageLosingPercentage)); formStatistic.Show(this.DockPanel, DockState.DockRight); } else { formStatistic.ReAssignInfo(0,price); formStatistic.ReAssignInfo(1, biLastTrade.Short_Target); formStatistic.ReAssignInfo(2, biLastPoint.Short_Resistance); formStatistic.ReAssignInfo(3, biLastPoint.Short_Support); formStatistic.ReAssignInfo(4, String.Format("{0:0.0%}", risk)); formStatistic.ReAssignInfo(5, String.Format("{0:0.0%}", statistics.dWinningPercentagePerTrade)); formStatistic.ReAssignInfo(6, String.Format("{0:0.0%}", statistics.dMaxWinningPercentage)); formStatistic.ReAssignInfo(7, String.Format("{0:0.0%}", statistics.dMaxLosingPercentage)); formStatistic.ReAssignInfo(8, String.Format("{0:0.0%}", statistics.dAverageWinningPercentage)); formStatistic.ReAssignInfo(9, String.Format("{0:0.0%}", statistics.dAverageLosingPercentage)); formStatistic.Refresh(); } //Call estimation handler if any. if (showEstimation && estimateFunc != null) estimateFunc(this, meta.Code, estOption, tbl); }
public void PlotStrategyTradepoints(application.Strategy.StrategyMeta meta, bool showEstimation, EstimateTradePointFunc estimateFunc) { int idx; ShowMessage(""); EstimateOptions estOption = new EstimateOptions(); databases.tmpDS.tradeEstimateDataTable tbl = new databases.tmpDS.tradeEstimateDataTable(); application.StrategyStatistics statistics = new StrategyStatistics(); //TradePointInfo[] tradePoints = DataAccess.Libs.GetTradePointWithEstimationDetail(myData.myDataParam, myData.DataStockCode, meta.Code, estOption, out tbl, out statistics); /// Estimate trade points and set tradepoint's [isValid] property to mark whether a tradepoint is valid or not. for (idx = 0; idx < tradePoints.Length; idx++) { tradePoints[idx].isValid = !tbl[idx].ignored; } for (idx = tradePoints.Length - 1; idx > 0; idx--) { if (tradePoints[idx].isValid) { break; } } TradePointInfo tpiTradePointInfo = (TradePointInfo)tradePoints[idx]; BusinessInfo biLastTrade = tpiTradePointInfo.BusinessInfo; BusinessInfo biLastPoint = tradePoints[tradePoints.Length - 1].BusinessInfo; double price = myData.Close[myData.Close.Count - 1]; double risk = (biLastPoint.Short_Resistance - price) / (price - biLastPoint.Short_Support); //string sResult = "Close price=" + price+ // "Target="+biLastTrade.Short_Target+ // "Resistance=" + biLastPoint.Short_Resistance + // " Support=" + biLastPoint.Short_Support + // " Risk return=" +risk+ // " Winning Percentage:"+ String.Format("{0:P2}",statistics.dWinningPercentagePerTrade)+ // " Max %Win Per Trade:" + String.Format("{0:P2}",statistics.dMaxWinningPercentage)+ // " Max %Lose Per Trade" + String.Format("{0:P2}", statistics.dMaxLosingPercentage)+ // " Average %Win Per Trade" + String.Format("{0:P2}", statistics.dAverageWinningPercentage)+ // " Average %Lose Per Trade" + String.Format("{0:P2}", statistics.dAverageLosingPercentage); ; PlotStrategyTradepoints(application.Strategy.StrategyLibs.ToTradePoints(tradePoints), pricePanel); //MessageBox.Show(sResult); //Show form Tools.Forms.TradeStatistics formStatistic = new Tools.Forms.TradeStatistics(); formStatistic.AddStatisticInfo("Close price", price); formStatistic.AddStatisticInfo("Target", biLastTrade.Short_Target); formStatistic.AddStatisticInfo("Resistance", biLastPoint.Short_Resistance); formStatistic.AddStatisticInfo("Support", biLastPoint.Short_Support); formStatistic.AddStatisticInfo("Risk return", risk); formStatistic.AddStatisticInfo("Winning Percentage", String.Format("{0:P2}", statistics.dWinningPercentagePerTrade)); formStatistic.AddStatisticInfo("Max %Win Per Trade", String.Format("{0:P2}", statistics.dMaxWinningPercentage)); formStatistic.AddStatisticInfo("Max %Lose Per Trade", String.Format("{0:P2}", statistics.dMaxLosingPercentage)); formStatistic.AddStatisticInfo("Average %Win Per Trade", String.Format("{0:P2}", statistics.dAverageWinningPercentage)); formStatistic.AddStatisticInfo("Average %Lose Per Trade", String.Format("{0:P2}", statistics.dAverageLosingPercentage)); formStatistic.Show(this.DockPanel, DockState.DockRightAutoHide); //Call estimation handler if any. if (showEstimation && estimateFunc != null) { estimateFunc(this, meta.Code, estOption, tbl); } }
/// <summary> /// Return Statistics Form /// </summary> /// <param name="createIfNotFound"></param> /// <returns></returns> private Tools.Forms.TradeStatistics GetStatisticForm(bool createIfNotFound) { string formName = constFormNameWatchList + "Statistic"; Tools.Forms.TradeStatistics myForm = (Tools.Forms.TradeStatistics)cachedForms.Find(formName); if (myForm == null || myForm.IsDisposed) { if (!createIfNotFound) return null; myForm = new Tools.Forms.TradeStatistics(); myForm.Name = formName; cachedForms.Add(formName, myForm); MapForm(myForm, marketWatchMenuItem); } return myForm; }