public void InitiateSell(SellOptions options) { IPairConfig pairConfig = tradingService.GetPairConfig(options.Pair); if (!options.ManualOrder && !options.Swap && pairConfig.SellTrailing != 0) { if (!trailingSells.ContainsKey(options.Pair)) { trailingBuys.TryRemove(options.Pair, out BuyTrailingInfo buyTrailingInfo); ITradingPair tradingPair = tradingService.Account.GetTradingPair(options.Pair); tradingPair.SetCurrentValues(tradingService.GetCurrentPrice(options.Pair), tradingService.GetCurrentSpread(options.Pair)); var trailingInfo = new SellTrailingInfo { SellOptions = options, SellMargin = pairConfig.SellMargin, Trailing = pairConfig.SellTrailing, TrailingStopMargin = pairConfig.SellTrailingStopMargin, TrailingStopAction = pairConfig.SellTrailingStopAction, InitialPrice = tradingPair.CurrentPrice, LastTrailingMargin = tradingPair.CurrentMargin, BestTrailingMargin = tradingPair.CurrentMargin }; if (trailingSells.TryAdd(options.Pair, trailingInfo)) { if (LoggingEnabled) { loggingService.Info($"Start trailing sell {tradingPair.FormattedName}. Price: {tradingPair.CurrentPrice:0.00000000}, Margin: {tradingPair.CurrentMargin:0.00}"); } } } else { if (LoggingEnabled) { //loggingService.Info($"Cancel trailing sell {tradingPair.FormattedName}. Reason: already trailing"); } } } else { PlaceSellOrder(options); } }
public void InitiateSell(SellOptions options) { if (tradingService.Account.HasTradingPair(options.Pair)) { IPairConfig pairConfig = tradingService.GetPairConfig(options.Pair); if (!options.ManualOrder && pairConfig.SellTrailing != 0) { if (!trailingSells.ContainsKey(options.Pair)) { StopTrailingBuy(options.Pair); ITradingPair tradingPair = tradingService.Account.GetTradingPair(options.Pair); tradingPair.SetCurrentValues(tradingService.GetPrice(options.Pair), tradingService.Exchange.GetPriceSpread(options.Pair)); var trailingInfo = new SellTrailingInfo { SellOptions = options, SellMargin = pairConfig.SellMargin, Trailing = pairConfig.SellTrailing, TrailingStopMargin = pairConfig.SellTrailingStopMargin, TrailingStopAction = pairConfig.SellTrailingStopAction, InitialPrice = tradingPair.CurrentPrice, LastTrailingMargin = tradingPair.CurrentMargin, BestTrailingMargin = tradingPair.CurrentMargin }; if (trailingSells.TryAdd(options.Pair, trailingInfo)) { if (LoggingEnabled) { loggingService.Info($"Start trailing sell {tradingPair.FormattedName}. " + $"Price: {tradingPair.CurrentPrice:0.00000000}, Margin: {tradingPair.CurrentMargin:0.00}"); } } } } else { orderingService.PlaceSellOrder(options); } } else { loggingService.Info($"Cancel initiate sell for {options.Pair}. Reason: pair does not exist"); } }