Kod 60 baris mewujudkan satu pemikiran - Kontrak memancing bawah

Penulis:Ninabadass, Dicipta: 2022-04-02 18:27:54, Dikemas kini: 2022-04-02 18:29:47

Kod 60 baris mewujudkan satu pemikiran - Kontrak memancing bawah

Strategi grid dan strategi Martingale, yang suka menggulirkan sebut harga pasaran, mempunyai kelemahan yang melekat, dan strategi serupa telah diuji di pasaran kontrak ETH untuk tempoh masa. Juga saya sering berbual dan berkongsi pengalaman dengan pemain baru dan lama di FMZ.COM. Ada satu perkara yang saya benar-benar bersetuju dengan seorang rakan mengenai strategi jenis ini. iaitu untuk melakukan kontrak dalam bulatan mata wang, dan risiko melakukan panjang adalah lebih kecil daripada melakukan pendek. Atau secara sederhana, kejatuhan terburuk adalah untuk kembali ke sifar, tetapi kenaikan adalah tidak berkesudahan.

Jadi, adakah strategi seperti Martingale dan Grid hanya membuat panjang, tetapi tidak pendek? Adakah lebih baik untuk menyebarkan risiko memancing bawah dalam jarak yang panjang daripada melakukan dua hala? Idea ini terdengar sangat baik, tetapi tidak ada yang tahu sama ada ia boleh menahan pertempuran sebenar. Tetapi sekurang-kurangnya kita boleh hanya backtest idea ini. Oleh itu, kita mempunyai topik artikel hari ini - Reka Strategi Penangkapan Bawah Kontrak.

Pembangunan Cepat Berdasarkan FMZ.COM

Kod untuk melaksanakan idea ini adalah sangat mudah, terima kasih kepada fleksibiliti, encapsulation antara muka dan sistem backtest yang kuat dari platform FMZ, dan sebagainya.

Reka bentuk idea strategi adalah sangat mudah. Menurut harga awal pada permulaan logik, letakkan pesanan beli, jika jarak selang berkurangan. Jika harga terus menurun, teruskan untuk meletakkan pesanan beli, dan teruskan memancing bawah. Kemudian tunggu pesanan kedudukan dekat selepas harga kedudukan menambah penyebaran keuntungan tertentu, dan tunggu untuk ditutup. Jika kedudukan ditutup, logik di atas diulangi dengan harga semasa sebagai harga awal. Strategi tidak pendek, hanya 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:

60-Line Code Realizing One Thought - Contract Bottom Fishing

Hanya ada beberapa parameter.

Mari kita lihat hasil backtest berpuluh-puluh baris kod

Tetapkan julat masa backtest secara rawak:

60-Line Code Realizing One Thought - Contract Bottom Fishing

Ujian belakang:

60-Line Code Realizing One Thought - Contract Bottom Fishing

60-Line Code Realizing One Thought - Contract Bottom Fishing

Ia kelihatan seperti grid atau strategi jenis Martingale. Adakah pelajar baru yang baru bermula sangat takut dengan jenis strategi panjang ini dan mudah dibujuk untuk berhenti? Pengenalan strategi yang ringkas dan ringkas lebih sesuai, dan lebih mudah untuk mencerna idea strategi dan belajar reka bentuk logik.

Kod strategi di atas hanya digunakan untuk kajian dan penyelidikan.


Lebih lanjut