コード例 #1
0
ファイル: TradingStrategy.cs プロジェクト: CharlexDF/Hunter
        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);
        }