public static void arbitrageHFT() { try { EntryArbitrage entryBraziliexBitCointrade = new EntryArbitrage(); entryBraziliexBitCointrade.exchangeBuy = new ExchangeBraziliex(); entryBraziliexBitCointrade.pairBuy = "btc_brl"; entryBraziliexBitCointrade.exchangeSell = new ExchangeBitcoinTrade(); entryBraziliexBitCointrade.pairSell = "BRLBTC"; entryBraziliexBitCointrade.sleep = int.Parse(Program.jConfig["sleep_default"].ToString());; entryBraziliexBitCointrade.perc = decimal.Parse(Program.jConfig["arbitrage_percent"].ToString());; entryBraziliexBitCointrade.amount = decimal.Parse(Program.jConfig["arbitrage_amount"].ToString()); System.Threading.Thread tBraziliexBitCointrade = new System.Threading.Thread(arbitrageDetail); tBraziliexBitCointrade.Start(entryBraziliexBitCointrade); EntryArbitrage entryBitCointradeBraziliex = new EntryArbitrage(); entryBitCointradeBraziliex.exchangeBuy = new ExchangeBitcoinTrade(); entryBitCointradeBraziliex.pairBuy = "BRLBTC"; entryBitCointradeBraziliex.exchangeSell = new ExchangeBraziliex(); entryBitCointradeBraziliex.pairSell = "btc_brl"; entryBitCointradeBraziliex.sleep = int.Parse(Program.jConfig["sleep_default"].ToString()); entryBitCointradeBraziliex.perc = decimal.Parse(Program.jConfig["arbitrage_percent"].ToString());; entryBitCointradeBraziliex.amount = decimal.Parse(Program.jConfig["arbitrage_amount"].ToString()); System.Threading.Thread tBitCointradeBraziliex = new System.Threading.Thread(arbitrageDetail); tBitCointradeBraziliex.Start(entryBitCointradeBraziliex); } catch { } while (true) { System.Threading.Thread.Sleep(600000); } }
public static void arbitrageDetail(Object obj) { EntryArbitrage entry = (EntryArbitrage)obj; lock (objLock) { entry.exchangeBuy.getBalances(); entry.exchangeSell.getBalances(); } while (true) { try { decimal[] buy = null; decimal[] sell = null; Task.Run(() => { buy = entry.exchangeBuy.getLowestAsk(entry.pairBuy, entry.amount); }); Task.Run(() => { sell = entry.exchangeSell.getHighestBid(entry.pairSell, entry.amount); }); while (true) { if (buy != null && sell != null) { break; } System.Threading.Thread.Sleep(50); } decimal perc = (((sell[0] * 100) / buy[0]) - 100); Logger.log(Math.Round(perc, 2) + "% " + entry.exchangeBuy.getName() + " > " + entry.exchangeSell.getName() + " "); if (perc > entry.perc) { if (entry.exchangeBuy.getBalance("USDT") >= (buy[0] * entry.amount) && entry.exchangeSell.getBalance("BTC") >= entry.amount) { Task.Run(() => { entry.exchangeBuy.order("buy", entry.pairBuy, entry.amount, buy[1], false); }); Task.Run(() => { entry.exchangeSell.order("sell", entry.pairSell, entry.amount, sell[1], false); }); System.Threading.Thread.Sleep(2000); lock (objLock) { entry.exchangeBuy.getBalances(); entry.exchangeSell.getBalances(); } Logger.log(entry.exchangeBuy.getName() + " > " + entry.exchangeSell.getName() + " | Buy[0]" + buy[0] + " Buy[1]" + buy[1] + "| Sell[0]" + sell[0] + " Sell[1]" + sell[1] + " | " + perc + "%"); System.Threading.Thread.Sleep(2000); } Logger.log(entry.exchangeBuy.getName() + " > " + entry.exchangeSell.getName() + " | Buy[0]" + buy[0] + " Buy[1]" + buy[1] + "| Sell[0]" + sell[0] + " Sell[1]" + sell[1] + " | " + perc + "%"); } } catch { } System.Threading.Thread.Sleep(500); System.Threading.Thread.Sleep(entry.sleep); } }