コード例 #1
0
        private void AdjustExitLevelsByTradeTime(Action <double, double> adjustExitLevels)
        {
            Func <double, IEnumerable <double> > rateSinceTrade = def => {
                var d = Trades.Max(t => t.Time);
                //d = d - ServerTime.Subtract(d);
                return(TradingMacroTrender(tm
                                           => tm.UseRates(rates
                                                          => rates.BackwardsIterator()
                                                          .TakeWhile(r => r.StartDate >= d)
                                                          .Select(GetPriceMA)))
                       .Concat()
                       .Concat()
                       .DefaultIfEmpty(def));
            };
            var buyLevel  = Trades.HaveBuy() ? rateSinceTrade(BuyLevel.Rate).Min().Min(ExitByBuySellLevel ? BuyLevel.Rate : double.NaN) : BuyLevel.Rate;
            var sellLevel = Trades.HaveSell() ? rateSinceTrade(SellLevel.Rate).Max().Max(ExitByBuySellLevel ? SellLevel.Rate : double.NaN) : SellLevel.Rate;

            adjustExitLevels(buyLevel, sellLevel);
        }