コード例 #1
0
 protected override void OnTick()
 {
     if (RunInfo.Active)
     {
         RunInfo.EnsureAllClosed();
     }
     //Put your core logic here
     if (c.EntryParameters.EntryMode == EntryMode.Continuous)
     {
     }
     else if (c.EntryParameters.EntryMode == EntryMode.Volume)
     {
         if (!RunInfo.Active && LastTempValue != Bars.TickVolumes.Last(1))
         {
             LastTempValue = Bars.TickVolumes.Last(1);
             Print("TickVolume.Last(1): {0} - VolumeThreshold.Max: {1}", LastTempValue.ToString(), c.EntryParameters.TickVolumeThreshold.Max.ToString());
         }
         if (!RunInfo.Active && Bars.TickVolumes.Maximum(3) <= c.EntryParameters.TickVolumeThreshold.Max.FallbackIfZero(TickVolumeThresholdMax))
         {
             RunInfo.InitializeGrids();
             Print("Grids: {0}", String.Join("-", RunInfo.Grids.Select(x => x.EstimatedPricing.ToString()).ToArray()));
             Print("OriginalAsk: {0}", RunInfo.OriginalAsk.ToString());
             Print("UpperGroundStartingPoint: {0}", RunInfo.UpperGroundStartingPoint.ToString());
             Print("OriginalBid: {0}", RunInfo.OriginalBid.ToString());
             Print("UnderGroundStartingPoint: {0}", RunInfo.UnderGroundStartingPoint.ToString());
             RunInfo.PlaceGridOrders();
         }
         else if (RunInfo.Active)
         {
             if (TextTotalNetProfit == null)
             {
                 TextTotalNetProfit = Chart.DrawText("TotalNetProfit", "Total Net Profit: " + RunInfo.TotalNetProfit.ToString("#0.00"), Bars.OpenTimes.LastValue, Bars.HighPrices.LastValue, Color.White);
             }
             else
             {
                 TextTotalNetProfit.Text = "Total Net Profit: " + RunInfo.TotalNetProfit.ToString("#0.00");
             }
             RunInfo.AnalyzeConditionalClosure();
         }
     }
     else if (c.EntryParameters.EntryMode == EntryMode.BollingerBandsDistance && RunInfo.Active)
     {
         if (TextTotalNetProfit == null)
         {
             TextTotalNetProfit = Chart.DrawText("TotalNetProfit", "Total Net Profit: " + RunInfo.TotalNetProfit.ToString("#0.00"), Bars.OpenTimes.LastValue, Bars.HighPrices.LastValue, Color.White);
         }
         else
         {
             TextTotalNetProfit.Text = "Total Net Profit: " + RunInfo.TotalNetProfit.ToString("#0.00");
         }
         RunInfo.AnalyzeConditionalClosure();
     }
     else if (c.EntryParameters.EntryMode == EntryMode.TimeRangeOfTheDay)
     {
         var CurrentTime = c.EntryParameters.TimeOfTheDay.TimeMode == DateTimeMode.Local ? Time.ToLocalTime() : Time;
         var IsCycleOkay = c.EntryParameters.TimeOfTheDay.MaximumCycle <= 0 || RunInfo.RunningCycle < c.EntryParameters.TimeOfTheDay.MaximumCycle;
         if (!RunInfo.Active)
         {
             if (CurrentTime > CurrentTime.Date.Add(c.EntryParameters.TimeOfTheDay.StartTimeSpan) && CurrentTime < CurrentTime.Date.Add(c.EntryParameters.TimeOfTheDay.EndTimeSpan))
             {
                 RunInfo.InitializeCycle();
                 RunInfo.InitializeGrids();
                 Print("Grids: {0}", String.Join("-", RunInfo.Grids.Select(x => x.EstimatedPricing.ToString()).ToArray()));
                 Print("OriginalAsk: {0}", RunInfo.OriginalAsk.ToString());
                 Print("UpperGroundStartingPoint: {0}", RunInfo.UpperGroundStartingPoint.ToString());
                 Print("OriginalBid: {0}", RunInfo.OriginalBid.ToString());
                 Print("UnderGroundStartingPoint: {0}", RunInfo.UnderGroundStartingPoint.ToString());
                 RunInfo.PlaceGridOrders();
             }
         }
         else
         {
             if (TextTotalNetProfit == null)
             {
                 TextTotalNetProfit = Chart.DrawText("TotalNetProfit", "Total Net Profit: " + RunInfo.TotalNetProfit.ToString("#0.00"), Bars.OpenTimes.LastValue, Bars.HighPrices.LastValue, Color.White);
             }
             else
             {
                 TextTotalNetProfit.Text = "Total Net Profit: " + RunInfo.TotalNetProfit.ToString("#0.00");
             }
             RunInfo.AnalyzeConditionalClosure();
         }
     }
 }