Type/to search
8
Follow
1364
Followers
Amalan Kuantitatif Pertukaran DEX (4) - Ujian Akses Strategi WOOFi / EdgeX
Discussions
Created 2025-04-10 15:36:06  Updated 2025-04-11 13:35:33
 0
 991

img

Dalam beberapa artikel yang lalu, kami telah membincangkan akses kepada DEX arus perdana, dan artikel ini akan menumpukan pada penggunaan sebenar dan menjalankan ujian penggunaan strategi sebenar. Platform FMZ baru-baru ini telah menambah sokongan untuk pertukaran terdesentralisasi WOOFi dan EdgeX. Dalam artikel ini, kami akan berlatih menjalankan beberapa strategi pengajaran mudah pada dua pertukaran ini.

WOOFi

Sambungkan dompet anda pada WOOFi, dan kemudian pada halaman API KEY, anda boleh melihat maklumat kunci API, menyalin dan menampalnya dan mengkonfigurasinya pada FMZ.

Gunakan hos terbaharu FMZ, yang sudah menyokong WOOFi DEX dan EdgeX DEX, selepas memuat turun dan menggunakan. Konfigurasikan objek pertukaran pada halaman: https://www.fmz.com/m/platforms/add, dan konfigurasikan AccountId, AccessKey dan SecretKey WOOFi.

Dalam ujian ini, kami menggunakan aPrototaip strategi pembuatan pasaran asas, digabungkan dengan penunjuk turun naik pasaran (ATR), selang antara pesanan belum selesai dikira secara dinamik, dan pengenalan pintar kedudukan dan logik meletakkan pesanan dengan keutamaan pada kedudukan penutup direalisasikan. Strategi ini menyegarkan buku pesanan dalam setiap pusingan, memperoleh semula maklumat kedalaman dan kedudukan, dan membuat pesanan mengikut selang harga yang ditetapkan dan kuantiti pesanan. Keseluruhan proses meliputi:

  • Pengekstrakan maklumat pasaran masa nyata dan analisis penunjuk;
  • Kawalan logik pesanan belum selesai dalam kedua-dua arah panjang dan pendek;
  • Penghakiman dan pengalihan kedudukan penutup dan pembukaan;
  • Output visual kedudukan dan status akaun.

Melalui strategi ini, kita boleh melihat kecekapan transaksi sebenar, kelewatan pesanan dan pengalaman pemadanan pada WOOFi, meletakkan asas untuk reka bentuk seterusnya bagi strategi yang lebih kompleks.

Kami menggunakan persekitaran ujian dan rangkaian ujian WOOFi: Arbitrum Sepolia.

exchange.SetBase("https://testnet-api.orderly.org")

Terdapat faucet pada rangkaian ujian WOOFi yang membolehkan anda mendapatkan USDC untuk ujian dengan mudah.

Kod strategi:

javascript
function createOrders(e, symbol, side, ordersNum, beginPrice, firstAmount, spacing, pos) { if (side == "buy" || side == "closesell") { if (spacing > 0) { throw "spacing error" } } else if (side == "sell" || side == "closebuy") { if (spacing < 0) { throw "spacing error" } } else { throw "side error" } var holdAmount = 0 if (pos) { holdAmount = pos.Amount } var amount = firstAmount for (var i = 0 ; i < ordersNum ; i++) { var id = null amount = amount * 2 var price = beginPrice + i * spacing if (price <= 0 || amount <= 0) { Log("continue loop:", price, amount, "#FF0000") continue } if (holdAmount - amount >= 0) { id = e.CreateOrder(symbol, side == "buy" ? "closesell" : "closebuy", price, holdAmount) holdAmount = 0 } else { id = e.CreateOrder(symbol, side, price, amount) } Sleep(100) } } function cancelAll(e, symbol) { while (true) { var orders = _C(e.GetOrders, symbol) var sideOrders = [] for (var o of orders) { sideOrders.push(o) } if (sideOrders.length == 0) { break } for (var o of sideOrders) { e.CancelOrder(o.Id, o) } Sleep(500) } } function main() { LogReset(1) LogProfitReset() exchange.SetBase("https://testnet-api.orderly.org") // 参数 var symbol = "ETH_USDC.swap" var ordersNum = 5 var orderAmount = 0.01 var priceSpace = 0 // 初始化 exchange.SetPrecision(2, 3) var msg = [] var buyOrdersNum = ordersNum var sellOrdersNum = ordersNum while (true) { cancelAll(exchange, symbol) var r = _C(exchange.GetRecords, symbol, 60 * 5) var art = TA.ATR(r, 20) priceSpace = art[art.length - 1] var pos = _C(exchange.GetPositions, symbol) // depth var depth = _C(exchange.GetDepth, symbol) if (depth.Bids.length == 0 || depth.Asks.length == 0) { msg.push("invalid depth") } else { var bid1Price = depth.Bids[0].Price var ask1Price = depth.Asks[0].Price var longPos = null var shortPos = null for (var p of pos) { if (p.Type == PD_LONG) { longPos = p } else if (p.Type == PD_SHORT) { shortPos = p } } // long createOrders(exchange, symbol, "buy", buyOrdersNum, bid1Price, orderAmount, -priceSpace, shortPos) // short createOrders(exchange, symbol, "sell", sellOrdersNum, ask1Price, orderAmount, priceSpace, longPos) } var acc = _C(exchange.GetAccount) var orders = _C(exchange.GetOrders, symbol) LogProfit(acc.Equity, "&") var posTbl = {"type": "table", "title": "pos", "cols": ["Symbol", "Type", "Price", "Amount"], "rows": []} for (var p of pos) { posTbl["rows"].push([p.Symbol, p.Type == PD_LONG ? "多" : "空", p.Price, p.Amount]) } var ordersTbl = {"type": "table", "title": "orders", "cols": ["Symbol", "Type", "Price", "Amount"], "rows": []} for (var o of orders) { ordersTbl["rows"].push([o.Symbol, o.Type == ORDER_TYPE_BUY ? "买" : "卖", o.Price, o.Amount]) } LogStatus(_D(), "priceSpace:", priceSpace, "\n`" + JSON.stringify([posTbl, ordersTbl]) + "`") Sleep(1000 * 60) LogReset(1000) } }

Amalan Strategi di WOOFi

img

img

img

EdgeX

Maklumat API untuk mengkonfigurasi EdgeX pada FMZ pada asasnya sama dengan WOOFi, tetapi pertukaran yang berbeza memerlukan maklumat API yang berbeza. Pada EdgeX, anda hanya perlu mengkonfigurasi AccountId dan SecretKey. Ini juga boleh dilihat pada halaman pengurusan API akaun selepas menggunakan dompet untuk menyambung ke hujung hadapan EdgeX.

Strategi yang akan kami laksanakan pada EdgeX adalah berdasarkanJalur Bollinger Berbilang LapisanLogik dagangan kuantitatif pembukaan terbalik + penutupan pertengahan trek boleh merealisasikan arbitraj turun naik jangka pendek.

Strateginya sangat mudah, idea terasnya ialah:

  • Dengan menggunakan berbilang Sisihan Piawai Bollinger, keamatan turun naik pasaran boleh dikira.
  • Terdapat logik untuk membuka dan meningkatkan kedudukan. Semakin kuat penembusan, semakin besar kedudukannya.
  • Terdapat logik yang jelas untuk menutup kedudukan, dan anda akan menarik diri apabila kedudukan kembali ke trek tengah.
  • Kelantangan adalah berkadar dengan berbilang sisihan piawai: pecahan yang lebih kuat membawa kepada kedudukan yang lebih besar.

Anda mungkin tidak percaya, tetapi menulis strategi lengkap di FMZ hanya memerlukan 50 baris kod. Perkembangan semasa model AI yang besar telah banyak merendahkan ambang untuk reka bentuk strategi. Idea strategi yang kami uji boleh dihasilkan dengan mudah oleh AI, dan kualiti penulisan adalah mencukupi. Satu-satunya perkara ialah pembetulan manual diperlukan, tetapi ia telah merendahkan ambang untuk orang biasa menggunakan teknologi dagangan kuantitatif.

Kod strategi:

javascript
function main() { var symbol = "ETH_USDT.swap" var arrUp = [] var arrDown = [] let c = KLineChart({ overlay: true }) while (true) { var bolls = [] var r = _C(exchange.GetRecords, symbol) for (var i = 0; i < 3; i++) { var boll = TA.BOLL(r, 20, i + 1) bolls.push(boll) var up = boll[0][boll[0].length - 1] var mid = boll[1][boll[1].length - 1] var down = boll[2][boll[2].length - 1] var close = r[r.length - 1].Close if (close > up && i >= arrUp.length) { exchange.CreateOrder(symbol, "sell", -1, 0.01 * (i + 1)) arrUp.push({"symbol": symbol, "amount": 0.01 * (i + 1)}) } else if (close < down && i >= arrDown.length) { exchange.CreateOrder(symbol, "buy", -1, 0.01 * (i + 1)) arrDown.push({"symbol": symbol, "amount": 0.01 * (i + 1)}) } else if ((arrUp.length > 0 && close < mid) || (arrDown.length > 0 && close > mid)) { var pos = exchange.GetPositions(symbol) for (var p of pos) { if (p.Type == PD_LONG) { exchange.CreateOrder(symbol, "closebuy", -1, p.Amount) } else if (p.Type == PD_SHORT) { exchange.CreateOrder(symbol, "closesell", -1, p.Amount) } } arrUp = [] arrDown = [] } } r.forEach(function(bar, index) { c.begin(bar) for (var i in bolls) { var b = bolls[i] c.plot(b[0][index], 'up_' + (i + 1)) c.plot(b[1][index], 'mid_' + (i + 1)) c.plot(b[2][index], 'down_' + (i + 1)) } c.close() }) LogStatus(_D(), "\n", arrUp, "\n", arrDown) Sleep(500) } }

Mari buat ujian belakang jangka panjang dahulu:

img

img

Gunakan ujian EdgeX

img

END

Strategi di atas adalah untuk tujuan pengajaran dan penyelidikan sahaja. Sila berhati-hati semasa memohonnya. Terima kasih kerana membaca.

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)