private void SetCorridorExitImpl(Trade trade, TradeLevelBy buy, TradeLevelBy sell) { if (trade.IsBuy) { var level = TradeLevelFuncs[buy](); if (InPips(level - trade.Open) > 5) { LevelBuyCloseBy = buy; } } else { var level = TradeLevelFuncs[TradeLevelBy.PriceLow0](); if (InPips(-level + trade.Open) > 5) { LevelSellCloseBy = TradeLevelBy.PriceLow0; } } }
public void SetTradeLevel(TradeLevelBy level, bool isBuy) { Action setLevels = () => CorridorStats.Rates.Where(r => !r.PriceAvg1.IsNaN()) .Take(1) .ForEach(rate => { IsTradingActive = false; if (isBuy) { LevelBuyBy = level; BuyLevel.Rate = TradeLevelFuncs[level](); } else { LevelSellBy = level; SellLevel.Rate = TradeLevelFuncs[level](); } RaiseShowChart(); }); }
public void SetTradeLevelsPreset(TradeLevelsPreset preset, bool?isBuy) { IsTradingActive = false; Action setLevels = () => CorridorStats.Rates.Where(r => !r.PriceAvg1.IsNaN()) .Take(1) .ForEach(rate => { BuyLevel.Rate = TradeLevelFuncs[LevelBuyBy](); SellLevel.Rate = TradeLevelFuncs[LevelSellBy](); BuyLevel.InManual = SellLevel.InManual = false; RaiseShowChart(); }); Action <Action <TradeLevelBy>, TradeLevelBy> setTL = (s, v) => s(v); if (isBuy.GetValueOrDefault(true)) { setTL(v => LevelBuyBy = v, tlbs[preset].Item1); } if (isBuy.GetValueOrDefault(false) == false) { setTL(v => LevelSellBy = v, tlbs[preset].Item2); } setLevels(); }
double GetTradeCloseLevel(bool buy, double def = double.NaN) { return TradeLevelFuncs[buy ? LevelBuyCloseBy : LevelSellCloseBy]().IfNaN(def); }