Kode 60 baris mewujudkan satu pikiran - Kontrak dasar memancing

Penulis:Ninabadass, Dibuat: 2022-04-02 18:27:54, Diperbarui: 2022-04-02 18:29:47

Kode 60 baris mewujudkan satu pikiran - Kontrak dasar memancing

Strategi grid dan strategi Martingale, yang suka berosilasi kutipan pasar, memiliki kelemahan yang melekat, dan strategi serupa telah diuji di pasar kontrak ETH untuk jangka waktu tertentu.FMZ.COMAda satu hal yang saya benar-benar setuju dengan seorang teman tentang jenis strategi ini. yaitu untuk melakukan kontrak dalam lingkaran mata uang, dan risiko melakukan panjang lebih kecil daripada melakukan pendek. atau dengan kata sederhana, penurunan terburuk adalah kembali ke nol, tetapi kenaikan tidak terbatas.

Jadi, apakah strategi seperti Martingale dan Grid hanya membuat panjang, tetapi tidak pendek? Apakah lebih baik untuk menyebarkan risiko memancing dasar dalam jangkauan panjang daripada melakukan bilateral? Ide ini terdengar sangat bagus, tetapi tidak ada yang tahu apakah itu dapat menahan pertempuran yang sebenarnya. Tapi setidaknya kita bisa hanya backtest ide ini. Oleh karena itu, kita memiliki topik artikel hari ini - Merancang Strategi Penangkapan Dasar Kontrak.

Perkembangan Cepat BerdasarkanFMZ.COM

Kode untuk mengimplementasikan ide ini sangat sederhana, berkat fleksibilitas, enkapsulasi antarmuka dan sistem backtest yang kuat dari platform FMZ, dan sebagainya. Seluruh kode hanya 60 baris (untuk spesifikasi menulis kode, banyak baris yang dapat disingkat, tidak disingkat).

Desain ide strategi sangat sederhana. Menurut harga awal di awal logika, letakkan pesanan beli, jika jarak interval berkurang. Jika harga terus menurun, terus letakkan pesanan beli, dan terus memancing bawah. Kemudian tunggu pesanan posisi dekat setelah harga posisi menambahkan spread keuntungan tertentu, dan tunggu untuk menutup. Jika posisi ditutup, logika di atas diulang dengan harga saat ini sebagai harga awal. Strategi tidak melakukan pendek, hanya panjang.

Kode 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)
    }
}

Desain parameter juga sangat sederhana:

img

Hanya ada beberapa parameter.

Mari kita lihat hasil backtest dari lusinan baris kode

Atur rentang waktu backtest secara acak:

img

Uji balik:

img

img

Ini terlihat seperti strategi jenis grid atau Martingale. Apakah peserta didik baru yang baru memulai sangat takut dengan strategi panjang semacam ini dan mudah dibujuk untuk berhenti? Pambuka strategi yang singkat dan ringkas lebih cocok, dan lebih mudah untuk mencerna ide-ide strategi dan mempelajari desain logis.

Kode strategi di atas hanya digunakan untuk studi dan penelitian.


Lebih banyak