public void PlotProfitChart() { string saveSort = tradeEstimateSource.Sort; tradeEstimateSource.Sort = ""; databases.tmpDS.tradeEstimateDataTable tbl = tradeEstimateSource.DataSource as databases.tmpDS.tradeEstimateDataTable; chartPnl.ResetGraph(); chartPnl.RemoveAllCurves(); DataSeries xSeries = new DataSeries(); DataSeries ySeries = new DataSeries(); for (int idx = 0; idx < tbl.Count; idx++) { if (!allTransactionMenuItem.Checked && tbl[idx].ignored) { continue; } ySeries.Add((double)tbl[idx].profit); xSeries.Add(tbl[idx].onDate.ToOADate()); } //Handle bug in graph for curve with only on point ???? if (ySeries.Count > 1) { chartPnl.myGraphObj.SetSeriesX(xSeries.Values, Charts.AxisType.DateAsOrdinal); chartPnl.myGraphObj.SetFont(Settings.sysChartFontSize); chartPnl.myGraphObj.ChartMarginTOP = constProfitChartMarginTOP; chartPnl.myGraphObj.ChartMarginBOTTOM = constProfitChartMarginBOTTOM; CurveItem curveItem = chartPnl.myGraphObj.AddCurveBar("profit", ySeries.Values, Settings.sysChartVolumesColor, Settings.sysChartVolumesColor, 1); chartPnl.myGraphObj.DefaultViewport(); chartPnl.PlotGraph(); } tradeEstimateSource.Sort = saveSort; }
public void ReLoad() { databases.tmpDS.tradeEstimateDataTable dataTbl = new databases.tmpDS.tradeEstimateDataTable(); DataAccess.Libs.GetTradePointWithEstimationDetail(this.myDataParam, this.myStockCode, this.myStrategyCode, this.myOptions, out dataTbl); tradeEstimateSource.DataSource = dataTbl; DoFilter(); PlotProfitChart(); }
public void PlotStrategyTradepoints(application.Strategy.StrategyMeta meta, bool showEstimation, EstimateTradePointFunc estimateFunc) { ShowMessage(""); EstimateOptions estOption = new EstimateOptions(); databases.tmpDS.tradeEstimateDataTable tbl = new databases.tmpDS.tradeEstimateDataTable(); TradePointInfo[] tradePoints = DataAccess.Libs.GetTradePointWithEstimationDetail(myData.myDataParam, myData.DataStockCode, meta.Code, estOption, out tbl); /// Estimate trade points and set tradepoint's [isValid] property to mark whether a tradepoint is valid or not. for (int idx = 0; idx < tradePoints.Length; idx++) { tradePoints[idx].isValid = !tbl[idx].ignored; } PlotStrategyTradepoints(application.Strategy.StrategyLibs.ToTradePoints(tradePoints), pricePanel); //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); } }
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) { ShowMessage(""); EstimateOptions estOption = new EstimateOptions(); databases.tmpDS.tradeEstimateDataTable tbl = new databases.tmpDS.tradeEstimateDataTable(); TradePointInfo[] tradePoints = DataAccess.Libs.GetTradePointWithEstimationDetail(myData.myDataParam,myData.DataStockCode,meta.Code, estOption, out tbl); /// Estimate trade points and set tradepoint's [isValid] property to mark whether a tradepoint is valid or not. for (int idx = 0; idx < tradePoints.Length; idx++) { tradePoints[idx].isValid = !tbl[idx].ignored; } PlotStrategyTradepoints(application.Strategy.StrategyLibs.ToTradePoints(tradePoints), pricePanel); //Call estimation handler if any. if (showEstimation && estimateFunc != null) estimateFunc(this, meta.Code, estOption, tbl); }
public void ReLoad() { databases.tmpDS.tradeEstimateDataTable dataTbl = new databases.tmpDS.tradeEstimateDataTable(); application.StrategyStatistics statistics; DataAccess.Libs.GetTradePointWithEstimationDetail(this.myDataParam, this.myStockCode, this.myStrategyCode, this.myOptions,out dataTbl, out statistics); tradeEstimateSource.DataSource = dataTbl; DoFilter(); PlotProfitChart(); }
public void SetData(databases.tmpDS.tradeEstimateDataTable dataTbl) { tradeEstimateSource.Sort = dataTbl.onDateColumn.ColumnName + " DESC"; tradeEstimateSource.DataSource = dataTbl; DoFilter(); }
public commonClass.TradePointInfo[] GetTradePointWithEstimationDetail(out databases.tmpDS.tradeEstimateDataTable toTbl, commonClass.DataParams dataParam, string stockCode, string strategyCode, commonClass.EstimateOptions options) { return(base.Channel.GetTradePointWithEstimationDetail(out toTbl, dataParam, stockCode, strategyCode, options)); }
/// <summary> /// Get the estimation detail from adviced trade point /// </summary> /// <param name="data"></param> /// <param name="tradePoints"></param> /// <param name="options"></param> /// <param name="toTbl"> Table of assumed transactions. Each row procides detail information of a transcation and it's profit</param> public static databases.tmpDS.tradeEstimateDataTable EstimateTrading_Details(AnalysisData data, TradePointInfo[] tradePoints, EstimateOptions options) { databases.tmpDS.tradeEstimateDataTable toTbl = new databases.tmpDS.tradeEstimateDataTable(); EstimateTrading(data, tradePoints, options, toTbl, AfterEachEstimation_AddToTable, null); return(toTbl); }