public void OnHaveTurnOff() { if (TradeConditionsHaveTurnOff() && Trades.IsEmpty()) { TurnOfManualCorridor(); } }
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")); }
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)); }); } });