コード例 #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);
        }
コード例 #2
0
ファイル: DataMining.cs プロジェクト: CharlexDF/Hunter
        public static void ProcessDay()
        {
            TickData tickData = new TickData();

            tickData.dt = new DateTime(Utility.GetYear(TradingStrategy.RunData.cur_date),
                                       Utility.GetMonth(TradingStrategy.RunData.cur_date),
                                       Utility.GetDay(TradingStrategy.RunData.cur_date));
            tickData.price = TradingStrategy.GetCurCapital();
            MonthlyData.AddTickData(tickData);
        }
コード例 #3
0
        public int Calc(Stock stock)
        {
            double     sum    = 0;
            List <int> ls_key = new List <int>(stock.sdata.Keys);

            int index = stock.sdata.IndexOfKey(stock.runData.cur_date);

            if (index < CountNum)
            {
                return(EST.EST_SKIP);
            }

            high = stock.sdata[ls_key[index - CountNum]].high;
            low  = stock.sdata[ls_key[index - CountNum]].low;
            for (int i = index - CountNum; i < index; i++)
            {
                if (stock.sdata[ls_key[i]].high > high)
                {
                    high = stock.sdata[ls_key[i]].high;
                }
                if (stock.sdata[ls_key[i]].low < low)
                {
                    low = stock.sdata[ls_key[i]].low;
                }
                sum += stock.sdata[ls_key[i]].close;
            }

            TR = Math.Max(Math.Max(stock.sdata[ls_key[index]].high - stock.sdata[ls_key[index]].low,
                                   stock.sdata[ls_key[index]].high - stock.sdata[ls_key[index - 1]].close),
                          stock.sdata[ls_key[index - 1]].close - stock.sdata[ls_key[index]].low);

            if (PDN == 0)
            {
                PDN = TR;
            }

            N = ((CountNum - 1) * PDN + TR) / CountNum;

            PDN = N;
            if (N == 0)
            {
                //Debug.Assert(N != 0);
                Unit = int.MaxValue;
            }
            else
            {
                Unit = Convert.ToInt32(TradingStrategy.GetCurCash() * 0.01 * 0.01 / N) * 100;
            }
            //DollarPerPoint 100*0.01 = OneHand*BasePoint

            return(EST.EST_OK);
        }
コード例 #4
0
        public static void Start()
        {
            Init();

            TradingStrategy TDStrategy = new TradingStrategy();

            if (Config.bTrue)
            {
                TDStrategy.run_back_test();
            }
            else
            {
                TDStrategy.pick_stock();
            }
        }