
Strategi yang lebih mengutamakan pasaran yang tidak menentu, seperti strategi grid dan strategi Martingale, mempunyai kelemahan yang wujud Strategi yang sama telah diuji dalam pasaran kontrak ETH untuk beberapa waktu. Saya juga sering bersembang dan berkongsi pengalaman dengan pemain baru dan lama di FMZ.COM. Mengenai strategi jenis ini, ada satu perkara yang saya sangat bersetuju dengan apa yang dikatakan oleh seorang rakan. Iaitu, apabila melakukan kontrak dalam bulatan mata wang kripto, risiko untuk menjadi panjang sedikit lebih rendah daripada untuk menjadi pendek. Atau secara ringkasnya, kemungkinan penurunan yang paling teruk ialah sifar, tetapi kenaikannya tidak terhad.
Jadi, adakah strategi seperti Martingale dan grid hanya berjalan panjang dan tidak pendek, dan mengagihkan risiko pilihan bawah dalam jarak jauh lebih baik daripada melakukan perdagangan dua hala? Idea ini kedengaran bagus, tetapi tiada siapa yang tahu sama ada ia boleh bertahan dengan amalan sebenar. Tetapi sekurang-kurangnya kita boleh menguji idea ini. Jadi kami mempunyai topik artikel hari ini - mereka bentuk strategi pilihan bawah kontrak.
Kod untuk melaksanakan idea ini benar-benar sangat mudah, terima kasih kepada fleksibiliti platform, enkapsulasi antara muka, sistem ujian belakang yang berkuasa, dsb. Keseluruhan kod hanya mengambil 60 baris (demi piawaian penulisan kod, banyak singkatan tidak digunakan).
Reka bentuk strategi adalah sangat mudah Mengikut harga awal pada permulaan logik, pesanan beli diletakkan pada selang ke bawah Jika harga terus menurun, teruskan membuat pesanan beli untuk meneruskan memancing bawah. Kemudian buat pesanan penutup berdasarkan harga kedudukan ditambah dengan perbezaan keuntungan tertentu dan tunggu kedudukan ditutup. Jika kedudukan ditutup, logik di atas akan berulang dengan harga semasa sebagai harga awal. Strategi tidak memegang kedudukan pendek, hanya kedudukan panjang.
Kod sumber strategi:
function cancelAll() {
while (true) {
var orders = _C(exchange.GetOrders)
if (orders.length == 0) {
break
}
for (var i = 0 ; i < orders.length ; i++) {
exchange.CancelOrder(orders[i].Id, orders[i])
Sleep(interval)
}
}
}
function getLong(arr, kind) {
var ret = null
for (var i = 0 ; i < arr.length ; i++) {
if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) {
ret = arr[i]
}
}
return ret
}
function pendingBidOrders(firstPrice) {
var index = 0
var amount = baseAmount
while (true) {
var pos = _C(exchange.GetPosition)
var price = firstPrice - index * baseSpacing
amount *= ratio
index++
exchange.SetDirection("buy")
exchange.Buy(price, amount)
if (pos.length != 0) {
var longPos = getLong(pos, "pos")
if (longPos) {
exchange.SetDirection("closebuy")
exchange.Sell(longPos.Price + profitTarget, longPos.Amount)
}
}
while (true) {
Sleep(interval)
if (!getLong(_C(exchange.GetOrders), "orders")) {
cancelAll()
break
}
if (!getLong(_C(exchange.GetPosition), "pos")) {
cancelAll()
return
}
}
}
}
function main() {
exchange.SetContractType(symbol)
while (true) {
pendingBidOrders(_C(exchange.GetTicker).Last)
}
}
Reka bentuk parameter juga sangat mudah:

Terdapat hanya beberapa parameter ini.
Hanya tetapkan julat masa ujian belakang:

Larian ujian belakang:


Ia kelihatan seperti grid atau strategi jenis Martin~. Adakah pelajar baru yang baru mula belajar takut dengan strategi yang panjang dan mudah putus asa? Pengenalan strategi yang ringkas dan padat adalah lebih sesuai, menjadikannya lebih mudah untuk menghadam idea strategik dan mempelajari reka bentuk logik.
Kod strategi adalah untuk tujuan pembelajaran dan penyelidikan sahaja.