コード例 #1
0
 public void OnHaveTurnOff()
 {
     if (TradeConditionsHaveTurnOff() && Trades.IsEmpty())
     {
         TurnOfManualCorridor();
     }
 }
コード例 #2
0
 private void TurnOfManualCorridor()
 {
     new[] { BuyLevel, SellLevel }
     .Where(sr => sr.InManual)
     .Do(sr => {
         sr.InManual = sr.CanTrade = false;
         if (!Trades.IsEmpty())
         {
             sr.TradesCount = -(TradeCountMax + 1);
         }
     })
     .Take(1)
     .ForEach(_ => Log = new Exception("TurnOfManualCorridor"));
 }
コード例 #3
0
 private void StrategyLong() => UseAccountManager(am => {
   var hasOrders = am.UseOrderContracts(ocs => ocs.Where(o => o.contract.Instrument == Pair && !o.isDone)).Concat().Any();
   if(Trades.IsEmpty() && !hasOrders) {
     TradeConditionsEval()
       .DistinctUntilChanged(td => td)
       .Where(td => td.HasUp())
       .Take(1)
       .ForEach(_ => {
         var pos = TradingRatio.ToInt();
         Log = new Exception($"{nameof(StrategyLong)}:{nameof(am.OpenTrade)}:{new { Pair }}");
         var p = CurrentPrice.Bid;
         am.OpenTrade(Pair, pos, p, CalculateTakeProfit(), true, ServerTime.AddMinutes(10));
       });
   }
 });