using System;
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
class Program
{
static decimal? mexcPrice = null;
static decimal? gatePrice = null;
static async Task Main()
{
var mexcTask = ConnectToMexc("SOPH_USDT");
var gateTask = ConnectToGate("SOPH_USDT");
await [Link](mexcTask, gateTask);
}
static async Task ConnectToMexc(string _symbol)
{
var ws = new ClientWebSocket();
await [Link](new Uri("[Link]
[Link]);
string subscribeMessage = [Link](new
{
method = "[Link]",
param = new { symbol = _symbol }
});
await [Link]([Link](subscribeMessage),
[Link], true, [Link]);
var buffer = new byte[4096];
while (true)
{
var result = await [Link](new ArraySegment<byte>(buffer),
[Link]);
var json = [Link](buffer, 0, [Link]);
using var doc = [Link](json);
if ([Link]("data", out var data))
{
if ([Link]("lastPrice"))
if ([Link]("lastPrice", out var priceEl))
{
mexcPrice = [Link]();
PrintSpread();
}
}
}
}
static async Task ConnectToGate(string symbol)
{
var ws = new ClientWebSocket();
await [Link](new Uri("[Link]
[Link]);
string subscribeMessage = [Link](new
{
time = [Link](),
channel = "[Link]",
@event = "subscribe",
payload = new[] { symbol }
});
await [Link]([Link](subscribeMessage),
[Link], true, [Link]);
var buffer = new byte[4096];
while (true)
{
var result = await [Link](new ArraySegment<byte>(buffer),
[Link]);
var json = [Link](buffer, 0, [Link]);
using var doc = [Link](json);
if ([Link]("result", out var resultEl))
{
if ([Link]("mark_price"))
{
var ststt =
[Link](json).[Link]("result")
[0].GetProperty("last").GetString();
var last = [Link]([Link](".", ","));
gatePrice = last;
PrintSpread();
}
}
}
}
static void PrintSpread()
{
if ([Link] && [Link])
{
var avg = ([Link] + [Link]) / 2m;
var diff = [Link]([Link] - [Link]);
var spreadPercent = diff / avg * 100m;
[Link]();
[Link]($"MEXC Price: {mexcPrice:F2}");
[Link]($"Gate Price: {gatePrice:F2}");
[Link]($"Spread: {spreadPercent:F4}%");
}
}
}