Пример #1
0
        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);
        }
Пример #2
0
        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
                                                          );
                    }
                }
            }
        }