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 berayun sebut harga pasaran, mempunyai kelemahan yang melekat, dan strategi yang sama telah diuji di pasaran kontrak ETH untuk tempoh masa.FMZ.COMTerdapat satu perkara yang saya benar-benar bersetuju dengan seorang rakan mengenai jenis strategi ini. iaitu untuk melakukan kontrak dalam bulatan mata wang, dan risiko melakukan panjang adalah kurang daripada melakukan pendek. atau dengan mudah berkata, 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 BerdasarkanFMZ.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:

img

Hanya ada beberapa parameter.

Mari kita lihat hasil backtest berpuluh-puluh baris kod

Tetapkan julat masa backtest secara rawak:

img

Ujian belakang:

img

img

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