public async Task TraderWithNoTrades_Should_CreateFirstTrade() { CoinTrader.Initialize(Market); await CoinTrader.StartAsync(); CoinTrader.Trades.Count.Should().Be(1); }
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(); }
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); }
public void TraderWithNoTrades_Should_CreateFirstTrade() { CoinTrader.Initialize(new TraderState { Market = Market }); CoinTrader.TraderState.Trades.Count.Should().Be(1); }
public void CoinTrader_ShouldBe_InitializedWithAMarket() { CoinTrader.Initialize(new TraderState { Market = Market }); CoinTrader.Market.Should().Be(Market); }
public void Initialize_ShouldSet_TraderData() { CoinTrader.Initialize(new TraderState { Market = Market }); CoinTrader.Strategy.Should().NotBeNull(); CoinTrader.TraderState.Trades.Should().NotBeNull(); }
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(); }
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"); }
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; }
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); }
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); }
public void Initialize_ShouldSet_TraderData() { CoinTrader.Initialize(Market); CoinTrader.Strategy.Should().NotBeNull(); CoinTrader.Trades.Should().NotBeNull(); }