internal TradeService() { __cQueue = new Queue<ResponseEvent>(64); __cCloses = new SimpleBoundList<_TradeInfo>(512); __cOpens = new TradeBoundList(64); __cTrusts = new TradeBoundList(32); __cTimer = new Timer(); __cTimer.Elapsed += Timer_onElapsed; __cTimer.AutoReset = false; __cTimer.Interval = 500; }
internal static void Save(TradeBoundList openTrades, HistoryBoundList history, string file) { int iIndex = file.LastIndexOf("."); if (iIndex > -1) { string sOpenFile = file.Substring(0, iIndex) + "_open.csv"; string sCloseFile = file.Substring(0, iIndex) + "_close.csv"; File.WriteAllText(sOpenFile, ProcessOpenTrades(openTrades), Encoding.UTF8); File.WriteAllText(sCloseFile, ProcessHistorys(history), Encoding.UTF8); } }
private static string ProcessOpenTrades(TradeBoundList trades) { StringBuilder cBuilder = new StringBuilder(1024 * 1024); cBuilder.Append("NO.").Append(',').Append("SymbolID").Append(',').Append("Category").Append(',').Append("Action").Append(',').Append("Volume").Append(',').Append("Price").Append(',').Append("Profit").Append(',').Append("Fee").Append(',').Append("Tax").Append(',').Append("Trading time").Append(',').AppendLine("Description"); int iCount = trades.Count - 1; //開倉資料用來小計總合放在最後一筆 for (int i = 0; i < iCount; i++) { _TradeInfo cTrade = trades.GetItemAt(i); cBuilder.Append(cTrade.Ticket).Append(',').Append(cTrade.SymbolId).Append(',').Append(cTrade.Category).Append(',').Append(cTrade.Action).Append(',').Append(cTrade.Contracts).Append(',').Append(cTrade.Price).Append(',').Append(cTrade.Profit).Append(',').Append(cTrade.Fee).Append(',').Append(cTrade.Tax).Append(',').Append(cTrade.Time).Append(',').AppendLine(cTrade.Comment); } return(cBuilder.ToString()); }
private static string ProcessOpenTrades(TradeBoundList trades) { int iCount = trades.Count - 1; //開倉資料用來小計總合放在最後一筆 if (iCount > 0) { _TradeInfo[] cItems = new _TradeInfo[iCount]; for (int i = 0; i < iCount; i++) { cItems[i] = trades.GetItemAt(i); } return(JsonConvert.SerializeObject(cItems, Formatting.Indented)); } return("[]"); }
internal TradeService() { __cQueue = new Queue <ResponseEvent>(64); __cCloses = new HistoryBoundList(512); __cOpens = new TradeBoundList(64, true); __cTrusts = new TradeBoundList(32); __cTradeTimer = new Timer(); __cTradeTimer.Elapsed += TradeTimer_onElapsed; __cTradeTimer.AutoReset = false; __cTradeTimer.Interval = 500; __cUpdateTimer = new Timer(); __cUpdateTimer.Elapsed += UpdateTimer_onElapsed; __cUpdateTimer.AutoReset = false; __cUpdateTimer.Interval = 500; }