public void run_tick(Stock stock, TickData tickData) { stock.trend_30m.PreProcessData(tickData); Deal deal = stock.mStrategy.CalcDeal(stock, tickData); //sell while (deal.eType == Deal.ESell) { if (!isTradeTime(tickData.dt)) { break; } deal.sell_dt = new DateTime(tickData.dt.Ticks); deal.backtest_sell(deal.sell_price, deal.sell_shares, ESR.EPR_Normal); stock.position.AddDeal(deal); stock.mStrategy.ProcessDeal(stock, deal); deal.copy_position = Utility.Clone(stock.position); stock.position.Clear(); DataMining.DealList.Add(deal); TradingStrategy.AddCash(deal.sell_total_money); break; } FinalDateCloseTrading(stock, tickData); //buy while (deal.eType == Deal.EBuy) { if (!isTradeTime(tickData.dt)) { break; } if (isEndDate()) { break; } deal.buy_dt = new DateTime(tickData.dt.Ticks); if (!deal.canAfford()) { return; } deal.backtest_buy(deal.buy_price, deal.buy_shares); stock.position.AddDeal(deal); stock.mStrategy.ProcessDeal(stock, deal); deal.copy_position = Utility.Clone(stock.position); DataMining.DealList.Add(deal); TradingStrategy.AddCash(deal.buy_total_money * -1); break; } stock.trend_day.AddTickData(tickData); stock.trend_day.mStrategyData.ProcessData(stock.trend_day); stock.trend_30m.AddTickData(tickData); stock.trend_30m.mStrategyData.ProcessData(stock.trend_30m); }