public override void OnInit()
 {
     //读取日线,计算持仓周期
     if (HasPosition)
     {
         DateTime     curDate   = Clock.Now.Date;
         List <Daily> dailyBars = BarUtils.GetLastNDailys(this.instrument, curDate.AddDays(-1), 40);
         BarUtils.AdjustDailys(dailyBars);            //向前复权
         int n = dailyBars.Count;
         if (n > 0)
         {
             int i;
             for (i = n - 1; i >= 0; i--)
             {
                 if (dailyBars[i].DateTime <= Position.EntryDate.Date)
                 {
                     break;
                 }
             }
             if (dailyBars[i].DateTime < Position.EntryDate.Date)
             {
                 i++;
             }
             if (i < 0)
             {
                 i = 0;
             }
             this.holdingPeriod = n - i + 1;
         }
         this.stopLossPrice = Position.EntryPrice * (1 - stopLossRate);
     }
     Console.WriteLine("投资组合中的证券 {0} 的持仓周期是 {1} ", this.instrument.Symbol, this.holdingPeriod);
 }
    //如果本地有日线,则先读取本地数据
    public static List <Daily> GetLastNDailys(string symbol, int n)
    {
        List <Daily> dailys;
        Instrument   inst = InstrumentManager.Instruments[symbol];

        if (inst != null)
        {
            dailys = BarUtils.GetLastNDailys(inst, dealDate, n);
        }
        else
        {
            dailys = provider.GetLastNDailys(symbol, n, dealDateString);
        }
        return(dailys);
    }