Ejemplo n.º 1
0
        public async Task TraderWithNoTrades_Should_CreateFirstTrade()
        {
            CoinTrader.Initialize(Market);
            await CoinTrader.StartAsync();

            CoinTrader.Trades.Count.Should().Be(1);
        }
Ejemplo n.º 2
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            _cancellationTokenSource = new CancellationTokenSource();

            _cryptoApi.IsInTestMode = _options.Value.TestMode;
            if (_options.Value.TestMode)
            {
                var market = "BTC-ETC";
                try
                {
                    await _cryptoApi.GetCandlesAsync(market, TickInterval.OneMinute);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
                var coinTrader = new CoinTrader(_cryptoApi, _clusterClient, _hubNotifier, _pushManager);
                coinTrader.Initialize(market);
                coinTrader.IsInTestMode = true;
                await coinTrader.StartAsync();

                await Task.Run(() => _cryptoApi.SendMarketUpdates(market), cancellationToken);

                return;
            }

            await StartTrading();
        }
Ejemplo n.º 3
0
        private async Task <CoinTrader> RunHistoryData()
        {
            var fakeBittrexApi = new FakeBittrexApi(null);
            await fakeBittrexApi.GetCandlesAsync(Market, TickInterval.OneHour);

            CoinTrader = new CoinTrader(fakeBittrexApi, OrleansClientMock.Object, HubNotifierMock.Object,
                                        PushManagerMock.Object)
            {
                IsInTestMode = true
            };
            fakeBittrexApi.IsInTestMode = true;
            CoinTrader.Initialize(Market);
            CoinTrader.Strategy = new HoldUntilPriceDropsStrategy
            {
                Settings = TraderSettings.Default
            };
            await CoinTrader.StartAsync();

            CoinTrader.Strategy.Settings.BuyLowerPercentage     = 0;
            CoinTrader.Strategy.Settings.TradingBudget          = 0.0012M;
            CoinTrader.Strategy.Settings.MinimumTakeProfit      = 0M;
            CoinTrader.Strategy.Settings.HighStopLossPercentage = -0.001M;
            CoinTrader.Strategy.Settings.StopLoss       = -15;
            CoinTrader.Strategy.Settings.BuyTrigger     = -43M;
            CoinTrader.Strategy.Settings.ExpirationTime = TimeSpan.FromHours(2);
            await fakeBittrexApi.SendMarketUpdates(Market);

            Console.WriteLine($"Profit: {CoinTrader.Budget.Profit}%");
            return(CoinTrader);
        }
Ejemplo n.º 4
0
 public void TraderWithNoTrades_Should_CreateFirstTrade()
 {
     CoinTrader.Initialize(new TraderState {
         Market = Market
     });
     CoinTrader.TraderState.Trades.Count.Should().Be(1);
 }
Ejemplo n.º 5
0
 public void CoinTrader_ShouldBe_InitializedWithAMarket()
 {
     CoinTrader.Initialize(new TraderState {
         Market = Market
     });
     CoinTrader.Market.Should().Be(Market);
 }
Ejemplo n.º 6
0
 public void Initialize_ShouldSet_TraderData()
 {
     CoinTrader.Initialize(new TraderState {
         Market = Market
     });
     CoinTrader.Strategy.Should().NotBeNull();
     CoinTrader.TraderState.Trades.Should().NotBeNull();
 }
Ejemplo n.º 7
0
 protected async Task InitializeTrader(TradeAction tradeAction)
 {
     CryptoApiMock.MockSellingTrade(new CryptoOrder());
     Strategy.SetupGet(strategy => strategy.Settings).Returns(new TraderSettings {
         TradingBudget = 1000
     });
     Strategy.SetTradeAction(tradeAction);
     CoinTrader.Initialize(Market);
     CoinTrader.Strategy = Strategy.Object;
     await CoinTrader.StartAsync();
 }
Ejemplo n.º 8
0
        public async Task StartTrading()
        {
            await _pushManager.TriggerPush(PushMessage.FromMessage("Started trading"));

            var traderStates = await _tradersManager.GetAllTraders();

            foreach (var market in traderStates.Select(t => t.Market))
            {
                var coinTrader = new CoinTrader(_cryptoApi, _clusterClient, _hubNotifier, _pushManager);
                coinTrader.Initialize(market);
                await coinTrader.StartAsync();
            }

            Console.WriteLine("Finished loading");
        }
Ejemplo n.º 9
0
 protected void InitializeTrader(TradeAction tradeAction)
 {
     CryptoApiMock.MockSellingTrade(new CryptoOrder());
     Strategy.SetupGet(strategy => strategy.Settings).Returns(new TraderSettings {
         TradingBudget = 1000
     });
     Strategy.SetTradeAction(tradeAction);
     CoinTrader.Initialize(new TraderState
     {
         Trades   = new List <Trade>(),
         Market   = Market,
         Settings = new TraderSettings {
             TradingBudget = 1000
         }
     });
     CoinTrader.Strategy = Strategy.Object;
 }
Ejemplo n.º 10
0
        private async Task <CoinTrader> RunHistoryData(ITradingStrategy strategy)
        {
            FakeBittrexApi fakeBittrexApi = new FakeBittrexApi(null);

            fakeBittrexApi.IsInTestMode = true;
            fakeBittrexApi.Candles      = _candles;
            var coinTrader = new CoinTrader(fakeBittrexApi)
            {
                IsInTestMode = true
            };

            _fakeBittrexApi.IsInTestMode = true;
            coinTrader.Initialize(new TraderState
            {
                Market = _market
            });
            coinTrader.Strategy = strategy;

            await fakeBittrexApi.SendMarketUpdates(_market);

            Console.WriteLine($"Profit: {coinTrader.TraderState.Budget.Profit}%");
            return(coinTrader);
        }
Ejemplo n.º 11
0
        private async Task <CoinTrader> RunHistoryData(ITradingStrategy strategy)
        {
            FakeBittrexApi fakeBittrexApi = new FakeBittrexApi(_apiKey, _apiSecret)
            {
                IsInTestMode = true,
                Candles      = _candles
            };
            var coinTrader = new CoinTrader(fakeBittrexApi)
            {
                IsInTestMode = true
            };

            _fakeBittrexApi.IsInTestMode = true;
            coinTrader.Candles           = _hourlyCandles;
            coinTrader.Initialize(new TraderState
            {
                Market = _market
            });
            coinTrader.Strategy = strategy;

            await fakeBittrexApi.SendMarketUpdates(_market);

            return(coinTrader);
        }
Ejemplo n.º 12
0
 public void Initialize_ShouldSet_TraderData()
 {
     CoinTrader.Initialize(Market);
     CoinTrader.Strategy.Should().NotBeNull();
     CoinTrader.Trades.Should().NotBeNull();
 }