avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

60 baris kode untuk mengimplementasikan sebuah ide - strategi bottom-picking kontrak

Dibuat di: 2022-03-19 14:37:08, diperbarui pada: 2024-12-02 21:32:02
comments   14
hits   3439

60 baris kode untuk mengimplementasikan sebuah ide - strategi bottom-picking kontrak

Strategi yang mengutamakan pasar yang bergejolak, seperti strategi grid dan strategi Martingale, memiliki kelemahan yang melekat. Strategi serupa telah diuji di pasar kontrak ETH selama beberapa waktu. Saya juga sering mengobrol dan berbagi pengalaman dengan pemain baru dan lama di FMZ.COM. Mengenai jenis strategi ini, ada satu hal yang sangat saya setujui dengan apa yang dikatakan seorang teman. Artinya, ketika membuat kontrak di lingkaran mata uang kripto, risiko mengambil posisi long sedikit lebih rendah daripada risiko mengambil posisi short. Atau sederhananya, penurunan terburuk yang mungkin terjadi adalah nol, tetapi keuntungannya tidak terbatas.

Jadi, apakah strategi seperti Martingale dan grid hanya akan mengambil posisi long dan tidak short, dan mendistribusikan risiko bottom-picking dalam jangka panjang akan lebih baik daripada melakukan perdagangan bilateral? Ide ini kedengarannya bagus, tetapi tidak seorang pun tahu apakah ide ini dapat dipraktikkan secara nyata. Namun setidaknya kita dapat melakukan uji ulang sederhana untuk menguji gagasan ini. Jadi kita punya topik artikel hari ini - merancang strategi bottom-picking kontrak.

Pengembangan cepat berdasarkan FMZ.COM

Kode untuk mengimplementasikan ide ini sebenarnya sangat sederhana, berkat fleksibilitas platform, enkapsulasi antarmuka, sistem pengujian ulang yang kuat, dll. Keseluruhan kode hanya membutuhkan 60 baris (demi standar penulisan kode, banyak singkatan tidak digunakan).

Desain strateginya sangat sederhana. Berdasarkan harga awal di awal logika, order beli ditempatkan pada interval menurun. Jika harga terus menurun, teruskan menempatkan order beli untuk melanjutkan bottom fishing. Kemudian tempatkan perintah penutupan berdasarkan harga posisi ditambah selisih keuntungan tertentu dan tunggu posisi ditutup. Jika posisi ditutup, logika di atas akan diulang dengan harga saat ini sebagai harga awal. Strategi ini tidak menahan posisi pendek, hanya posisi 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 parameternya juga sangat sederhana:

60 baris kode untuk mengimplementasikan sebuah ide - strategi bottom-picking kontrak

Hanya ada beberapa parameter ini.

Lihatlah efek backtest dari lusinan baris kode ini

Tetapkan saja rentang waktu pengujian ulang:

60 baris kode untuk mengimplementasikan sebuah ide - strategi bottom-picking kontrak

Uji coba kembali:

60 baris kode untuk mengimplementasikan sebuah ide - strategi bottom-picking kontrak

60 baris kode untuk mengimplementasikan sebuah ide - strategi bottom-picking kontrak

Kelihatannya sangat mirip dengan strategi grid atau tipe Martin~. Apakah siswa baru yang baru mulai belajar takut dengan strategi yang panjang dan mudah putus asa? Pengenalan strategi yang singkat dan padat lebih cocok, membuatnya lebih mudah mencerna ide-ide strategis dan mempelajari desain logis.

Kode strategi ini hanya untuk tujuan pembelajaran dan penelitian.