Strategi untuk membeli pemenang versi Python

Penulis:Lydia, Dibuat: 2022-12-22 22:04:41, Diperbarui: 2023-09-20 09:22:41

img

Strategi untuk membeli pemenang versi Python

Strategi tren umumnya menggunakan berbagai indikator untuk menilai arah pasar, dan menggunakan hasil perbandingan berbagai indikator sebagai sinyal perdagangan. Dengan cara ini, tidak dapat dihindari untuk menggunakan parameter dan menghitung indikator. Sekarang bahwa parameter digunakan, akan ada situasi yang cocok. Di beberapa pasar, strategi berkinerja sangat baik, tetapi jika Anda tidak beruntung dan tren pasar sangat tidak ramah terhadap parameter saat ini, strategi dapat berkinerja sangat buruk. Oleh karena itu, saya menganggap bahwa desain strategi yang lebih sederhana, semakin baik. Strategi ini akan lebih kuat. Hari ini kita akan berbagi strategi tren tanpa indikator.

Kode strategi:

import time

basePrice = -1
ratio = 0.05
acc = _C(exchange.GetAccount)
lastCancelAll = 0
minStocks = 0.01

def CancelAll():
    while True : 
        orders = _C(exchange.GetOrders)
        for i in range(len(orders)) :
            exchange.CancelOrder(orders[i]["Id"], orders[i])
        if len(orders) == 0 :
            break
        Sleep(1000)

def main():
    global basePrice, acc, lastCancelAll
    exchange.SetPrecision(2, 3)
    while True:
        ticker = _C(exchange.GetTicker)
        if basePrice == -1 :
            basePrice = ticker.Last
        if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
            acc = _C(exchange.GetAccount)
            if acc.Balance * ratio / ticker.Last > minStocks :
                exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
                basePrice = ticker.Last
        if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : 
            acc = _C(exchange.GetAccount)
            if acc.Stocks * ratio > minStocks :
                exchange.Sell(ticker.Last, acc.Stocks * ratio)
                basePrice = ticker.Last
        ts = time.time()
        if ts - lastCancelAll > 60 * 5 :
            CancelAll()
            lastCancelAll = ts 
        LogStatus(_D(), "\n", "Ticker:", ticker, "\n", "Account information:", acc)
        Sleep(500)

Analisis sederhana dari strategi

Prinsip strategi sangat sederhana. tidak menggunakan indikator apapun, hanya menggunakan harga saat ini sebagai dasar pemicu transaksi. hanya ada satu parameter utamaratiountuk mengontrol pemicu posisi pembukaan.

Memulai pemicu panjang:

if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

Gunakan harga saat ini untuk membandingkan dengan harga dasar.ratio * 100%, memicu perintah dan menunggu perintah panjang. Setelah pesanan ditempatkan, harga dasar diperbarui ke harga saat ini.

Pemicu pesanan pendek:

if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

Prinsip arah pergi pendek adalah sama. harga saat ini digunakan untuk membandingkan harga dasar. ketika harga saat ini kurang dari harga dasar dan harga melebihi ratio * 100%', order yang sedang menunggu dipicu dan order kosong terdaftar. Setelah pesanan ditempatkan, harga dasar diperbarui ke harga saat ini.

Jumlah pesanan dari setiap pesanan adalahratio * 100%dari nilai dana yang tersedia. Menempatkan pesanan kecuali jumlah pesanan yang dihitung lebih kecil dari jumlah perdagangan minimumminStocksdiatur oleh parameter.

Dengan cara ini, strategi mengikuti perubahan harga untuk membeli pemenang.

Backtest

Jangka waktu backtesting adalah sekitar satu tahun.

img

Hasil pelaksanaan:

img img img

Baru-baru ini, beberapa pengguna mengatakan bahwa ada beberapa strategi Python. Kemudian, saya akan berbagi lebih banyak strategi yang ditulis dalam Python. Kode strategi juga sangat sederhana, yang sangat cocok untuk pemula kuantitatif untuk belajar. Alamat strategi:https://www.fmz.com/strategy/181185

Strategi ini hanya untuk referensi, pembelajaran dan backtesting. Jika Anda tertarik, Anda dapat mengoptimalkan dan meningkatkannya.


Berkaitan

Lebih banyak