public async Task PublishBuyOrderTests() { // Arrange var beforeBalance = await client.GetCurrencyBalanceAsync("eosio.token", "eosio.token"); await client.PushActionAsync("eosio.token", "transfer", "eosio.token", "active", new object[] { "eosio.token", "pomelo", "1.0000 EOS", "1.0000 KBY" }); // Assert var afterBalance = await client.GetCurrencyBalanceAsync("eosio.token", "eosio.token"); Assert.Equal(beforeBalance.Result.First().Amount - 1, afterBalance.Result.First().Amount); }
static async Task StartBotMatchAsync() { Console.WriteLine("Total {0} tokens found in configuration file.", configObject.Pairs.Count()); Console.WriteLine("—————————— GO ——————————"); while (true) { //foreach (var pair in configObject.Pairs) { var randomPairIndex = random.Next(configObject.Pairs.Count()); var pair = configObject.Pairs[randomPairIndex]; try { decimal price = (decimal) await GetPriceAsync(pair.Symbol); Console.WriteLine("[{2}] {0}: Price: {1} EOS", DateTime.Now.ToString("T"), price.ToString("0.00000000"), pair.Symbol); var eosBalance = await client.GetCurrencyBalanceAsync("eosio.token", configObject.TestAccount, "EOS"); var tokenBalance = await nodeAPI.GetCurrencyBalanceAsync(configObject.TestAccount, pair.Contract, pair.Symbol); if ((decimal)eosBalance.Result.Amount < price) { Console.WriteLine("EOS balance: {0}, Price = {1}, Cannot execute buy", eosBalance.Output, price); await EmailService.SendEmailAsync("BOT: " + "时间: " + DateTime.Now.ToString("T") + "TokenID: " + pair.Symbol + "EOS 余额不足", String.Format("EOS balance: {0}, Price = {1}, Cannot execute buy", eosBalance.Output, price), configObject.EmailAddress, configObject.SendTo ); continue; } var amount = BotMath.GetEffectiveRandomAmount(ref price, MaxEOSExchangeTotal, (decimal)tokenBalance, pair.Symbol); Console.WriteLine("Sell! "); await AutoSellAsync(pair.Symbol, amount, price, pair.Contract); Console.WriteLine($"Sell {amount} {pair.Symbol},total {price * amount} EOS"); Console.WriteLine("Wait 0.2 seconds"); await Task.Delay(200); Console.WriteLine("Buy! "); await AutoBuyAsync(pair.Symbol, amount, price); Console.WriteLine($"Buy {amount} {pair.Symbol},total {price * amount} EOS"); var waitingTime = random.Next(1000 * 60 * 1, 1000 * 60 * 3); Console.WriteLine("———— Next run time: {0} ————", MillisecondsSpanToDateTimeString(waitingTime)); await Task.Delay(waitingTime); } catch (Exception ex) { await EmailService.SendEmailAsync("BOT: " + "时间: " + DateTime.Now.ToString("T") + "TokenID: " + pair.Symbol + "发生异常", ex.ToString(), configObject.EmailAddress, configObject.SendTo ); } } } }