Esempio n. 1
0
            protected override State <Config> Run(TradingProvider trading, DataProvider data)
            {
                double waitMinutes = AlgorithmConfiguration.WaitTime * (int)AlgorithmConfiguration.CandleWidth;

                SetTimer(TimeSpan.FromMinutes(waitMinutes));
                return(new NothingState <Config>());
            }
Esempio n. 2
0
            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());
            }
Esempio n. 4
0
            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());
            }
Esempio n. 5
0
            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));
            }
Esempio n. 7
0
            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();
     }
 }
Esempio n. 9
0
            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));
            }
Esempio n. 10
0
            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>());
            }
Esempio n. 11
0
            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));
            }
Esempio n. 12
0
            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());
            }
Esempio n. 14
0
            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());
            }
Esempio n. 15
0
            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());
            }
Esempio n. 16
0
            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>());
            }
Esempio n. 17
0
 /// <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;
 }
Esempio n. 18
0
        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();
        }
Esempio n. 19
0
        /// <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)));
        }
Esempio n. 20
0
        /// <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)));
        }
Esempio n. 21
0
            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));
                }
            }
Esempio n. 22
0
        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());
 }
Esempio n. 25
0
 protected override State <Config> Run(TradingProvider trading, DataProvider data)
 {
     _buyOrder = trading.ExecuteFullMarketOrderBuy(_pair);
     SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.HoldTime));
     return(new NothingState <Config>());
 }
Esempio n. 26
0
 protected override State <Config> Run(TradingProvider trading, DataProvider data)
 {
     SetTimer(TimeSpan.FromHours(1));
     return(new NothingState <Config>());
 }
Esempio n. 27
0
 protected override State <Config> Run(TradingProvider trading, DataProvider data)
 {
     trading.ExecuteFullMarketOrderSell(_oldBuy.Pair);
     return(new EntryState());
 }
Esempio n. 28
0
 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>());
 }
Esempio n. 29
0
 protected override State <Config> Run(TradingProvider trading, DataProvider data)
 {
     trading.CancelOrder(_stoploss);
     return(new SetStopState());
 }
Esempio n. 30
0
 protected override State <Config> Run(TradingProvider trading, DataProvider data)
 {
     trading.CancelOrder(oldLimit);
     trading.ExecuteFullMarketOrderSell(AlgorithmConfiguration.TradingPairs.First());
     return(new WaitState());
 }