protected override State <Config> Run(TradingProvider trading, DataProvider data) { double waitMinutes = AlgorithmConfiguration.WaitTime * (int)AlgorithmConfiguration.CandleWidth; SetTimer(TimeSpan.FromMinutes(waitMinutes)); return(new NothingState <Config>()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { trading.CancelOrder(_stopLoss); trading.ExecuteFullMarketOrderSell(FirstPair); return(new EntryState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { // Marketsell the asset and return to entry. trading.ExecuteFullMarketOrderSell(FirstPair); return(new EntryState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { // If the Filter and CrossoverSMA signal the trade, we buy at market. trading.ExecuteFullMarketOrderSell(FirstPair); return(new EntryState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { // If the Filter and CrossoverSMA signal the trade, we buy at market. trading.ExecutePartialMarketOrderBuy(FirstPair, 0.7M); return(new InTradeState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { // If the Filter and CrossoverSMA signal the trade, we buy at market. OrderUpdate buyOrder = trading.ExecuteFullMarketOrderBuy(FirstPair); return(new InTradeState(buyOrder)); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { var pair = AlgorithmConfiguration.TradingPairs.First(); trading.ExecuteFullMarketOrderBuy(pair); WaitForNextCandle(); return(new NothingState <KeiraNightlyConfiguration>()); }
/// <summary> /// Dispose the StateManager. /// </summary> /// <param name="disposing">Actually do it.</param> private void Dispose(bool disposing) { if (disposing) { LoggerFactory?.Dispose(); TradingProvider?.Dispose(); } }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { decimal stopPrice = data.GetLowestLow(FirstPair, AlgorithmConfiguration.Loss); stopLoss = trading.PlaceFullStoplossSell(FirstPair, stopPrice); return(new InTradeState(_buyOrder, stopLoss)); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { var pair = AlgorithmConfiguration.TradingPairs.First(); var price = data.GetCurrentPriceTopBid(pair); _stoploss = trading.PlaceFullStoplossSell(pair, price * AlgorithmConfiguration.StopTrail); SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.WaitTime)); return(new NothingState <KeiraNightlyConfiguration>()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { // Get the lowest low from the last y hours. decimal shortTermTimePrice = data.GetLowestLow(FirstPair, AlgorithmConfiguration.ShortTermTime); // Set first stop loss order at DCMin. _stoploss = trading.PlaceFullStoplossSell(FirstPair, shortTermTimePrice); return(new CheckState(_stoploss)); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { var pair = AlgorithmConfiguration.TradingPairs.First(); var price = data.GetCurrentPriceTopBid(pair); _sell = trading.PlaceFullLimitOrderSell(pair, price * AlgorithmConfiguration.TakeProfit); SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.WaitTime)); return(new NothingState <Config>()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { for (int i = 0; i < 10; i++) { WaitForNextCandle(); } trading.ExecuteFullMarketOrderSell(FirstPair); return(new EntryState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { trading.ExecuteFullMarketOrderBuy(FirstPair); for (var i = 0; i < AlgorithmConfiguration.CandleCount; i++) { WaitForNextCandle(); } trading.ExecuteFullMarketOrderSell(FirstPair); return(new CheckState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { // If the Filter and CrossoverSMA signal the trade, we buy at market. trading.ExecuteFullMarketOrderBuy(FirstPair); for (var i = 0; i < AlgorithmConfiguration.WaitTime; i++) { WaitForNextCandle(); } return(new SetStopState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { OrderUpdate buyOrder = trading.ExecuteFullMarketOrderBuy(AlgorithmConfiguration.TradingPairs.First()); Portfolio portfolio = trading.GetPortfolio(); _limitSell = trading.PlaceLimitOrderSell( AlgorithmConfiguration.TradingPairs.First(), portfolio.GetAllocation(AlgorithmConfiguration.TradingPairs.First().Left).Free, buyOrder.AverageFilledPrice * AlgorithmConfiguration.TakeProfit); SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.StopTime)); return(new NothingState <Config>()); }
/// <summary> /// Initializes a new instance of the <see cref="ExchangeProvidersContainer"/> class. /// </summary> /// <param name="loggerFactory">Provides logging capabilities.</param> /// <param name="dataProvider">Provides data gathering capabilities.</param> /// <param name="timerProvider">Provides timer and scheduling capabilities.</param> /// <param name="tradingProvider">Provides trading capabilities.</param> /// <param name="algorithm">The algorithm to represent.</param> public ExchangeProvidersContainer( ILoggerFactory loggerFactory, DataProvider dataProvider, TimerProvider timerProvider, TradingProvider tradingProvider, Type algorithm) { LoggerFactory = loggerFactory; DataProvider = dataProvider; TimerProvider = timerProvider; TradingProvider = tradingProvider; Algorithm = algorithm; }
public void SelectActiveAccount(string accountId) { if (!ProviderAccountNumbers.Contains(accountId)) { Log(new LogMessage(ToString(), $"Cannot activate {accountId}", LogMessageType.TradingError)); return; } StopStreamingDataForPositions(); // Set the active account TradingProvider.SetActiveAccount(accountId); StartStreamingDataForPositions(); }
/// <summary> /// Builds a container for Backtesting. /// </summary> /// <param name="config">The algorithm configuration to use.</param> /// <typeparam name="T">The algorithm type.</typeparam> /// <returns>ExchangeProviderContainer.</returns> public ExchangeProvidersContainer BuildBacktestingContainer <T>(AlgorithmConfiguration config) where T : IBaseAlgorithm { var backtestTimer = new BacktestTimerProvider(_loggerFactory, Configuration.Instance.BacktestSettings); var dataImplementation = new BacktestDataProvider(_loggerFactory, _databaseContext, backtestTimer); var tradingImplementation = new BacktestTradingProvider(_loggerFactory, backtestTimer, dataImplementation); var dataProvider = new DataProvider(_loggerFactory, dataImplementation, config); var tradingProvider = new TradingProvider(_loggerFactory, tradingImplementation, dataProvider, _allocationManager); // Doubly linked inheritance for backtesting edge case dataImplementation.ParentImplementation = dataProvider; tradingImplementation.ParentImplementation = tradingProvider; return(new ExchangeProvidersContainer(_loggerFactory, dataProvider, backtestTimer, tradingProvider, typeof(T))); }
/// <summary> /// Builds a container for Binance. /// </summary> /// <param name="config">The algorithm configuration to use.</param> /// <typeparam name="T">The algorithm type.</typeparam> /// <returns>ExchangeProviderContainer.</returns> public ExchangeProvidersContainer BuildBinanceContainer <T>(AlgorithmConfiguration config) where T : IBaseAlgorithm { // Makes sure that the communication is enabled _binanceCommunications.EnableStreams(); var timerProvider = new BinanceTimerProvider(_loggerFactory, _binanceCommunications.CandleDispenser); var dataImplementation = new BinanceDataProvider(_loggerFactory, _binanceCommunications, timerProvider); var tradingImplementation = new BinanceTradingProvider(_loggerFactory, _binanceCommunications, timerProvider); var dataProvider = new DataProvider(_loggerFactory, dataImplementation, config); var tradingProvider = new TradingProvider(_loggerFactory, tradingImplementation, dataProvider, _allocationManager); // Doubly linked data provider to check candles timerProvider.DataProvider = dataProvider; // Inject database event listener DatabaseEventListenerService.AddOrderSource(tradingProvider); return(new ExchangeProvidersContainer(_loggerFactory, dataProvider, timerProvider, tradingProvider, typeof(T))); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { decimal allocation = trading.GetPortfolio().GetAllocation( AlgorithmConfiguration.BaseCurrency).Free * 0.5M / data.GetCurrentPriceLastTrade(FirstPair); // If the Filter and CrossoverSMA signal the trade, we buy at market. trading.ExecuteMarketOrderBuy(FirstPair, allocation); if (_stoploss != null) { return(new CancelStopState(_stoploss, _pyramid)); } else { return(new SetStopState(_pyramid)); } }
public bool ExecuteTrades(LiveTrade trade, LiveTrade stopTrade) { if (!PendingApprovalCodes.Contains(trade.ApprovalCode) || (stopTrade != null && !PendingApprovalCodes.Contains(stopTrade.ApprovalCode))) { Log(new LogMessage("Trade Mgr", $"ERROR: Trades not approved: {trade} and {stopTrade}", LogMessageType.TradingError)); return(false); } ActiveAccount.Portfolio.AddTrade(trade); if (stopTrade != null) { ActiveAccount.Portfolio.AddTrade(stopTrade); } TradingProvider.SubmitTrades(trade, stopTrade); CancelTrades(trade, stopTrade); return(true); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { trading.ExecuteFullMarketOrderBuy(FirstPair); return(new MeanSellState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { return(new EntryState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { _buyOrder = trading.ExecuteFullMarketOrderBuy(_pair); SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.HoldTime)); return(new NothingState <Config>()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { SetTimer(TimeSpan.FromHours(1)); return(new NothingState <Config>()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { trading.ExecuteFullMarketOrderSell(_oldBuy.Pair); return(new EntryState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { Logger.LogInformation($"Total btc {trading.GetPortfolio().GetAllocation(new Currency("BTC"))}"); SetTimer(TimeSpan.FromMinutes(AlgorithmConfiguration.WaitTime)); return(new NothingState <Config>()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { trading.CancelOrder(_stoploss); return(new SetStopState()); }
protected override State <Config> Run(TradingProvider trading, DataProvider data) { trading.CancelOrder(oldLimit); trading.ExecuteFullMarketOrderSell(AlgorithmConfiguration.TradingPairs.First()); return(new WaitState()); }