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

Versi Python dari strategi mengejar naik turun

Dibuat di: 2020-01-11 14:49:08, diperbarui pada: 2024-12-12 20:57:43
comments   6
hits   7100

Versi Python dari strategi mengejar naik turun

Versi Python dari strategi mengejar naik turun

Strategi tren umumnya menggunakan berbagai indikator untuk menentukan arah pasar, dan menggunakan hasil perbandingan numerik dari berbagai indikator sebagai sinyal perdagangan. Ini pasti akan mengarah pada penggunaan parameter dan perhitungan indikator. Karena parameter digunakan, maka akan ada penyesuaian. Strategi ini berkinerja sangat baik dalam kondisi pasar tertentu, tetapi jika Anda kurang beruntung dan tren pasar sangat tidak bersahabat dengan parameter saat ini, strategi ini mungkin berkinerja sangat buruk. Oleh karena itu, menurut pendapat saya, desain strategi harus sesederhana mungkin, dan strategi seperti itu akan lebih kuat. Hari ini kami akan membagikan strategi tren yang tidak menggunakan indikator. Kode strateginya sangat sederhana, hanya 40 baris.

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, "\n", "账户信息:", acc)
        Sleep(500)

Analisis strategi sederhana

Prinsip strategi ini sangat sederhana. Strategi ini tidak menggunakan indikator apa pun, tetapi hanya menggunakan harga saat ini sebagai dasar pemicu perdagangan, dan hanya ada satu parameter utama.ratioMengontrol pemicu pembukaan posisi.

Pemicu panjang:

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

Gunakan harga saat ini untuk membandingkan dengan harga dasar. Ketika harga saat ini lebih besar dari harga dasar, dan harga melebihiratio * 100 %, order yang tertunda dipicu dan order panjang ditempatkan. Setelah melakukan pemesanan, harga dasar diperbarui ke harga terkini.

Pemicu pesanan pendek:

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

Prinsip short selling sama saja. Gunakan harga saat ini untuk membandingkan dengan harga dasar. Ketika harga saat ini lebih rendah dari harga dasar dan harga melebihiratio * 100 %, order yang tertunda dipicu dan order short ditempatkan. Setelah melakukan pemesanan, harga dasar diperbarui ke harga terkini.

Volume pesanan untuk setiap pesanan adalah nilai dana yang tersedia.ratio * 100 %。 Kecuali jika volume pesanan yang dihitung kurang dari volume transaksi minimum yang ditetapkan dalam parameterminStocks, jika tidak, buatlah pesanan.

Hal ini memungkinkan strategi untuk mengikuti perubahan harga dan mengejar harga tertinggi dan menjual harga terendah.

Pengujian ulang

Periode pengujian ulang sekitar satu tahun. Versi Python dari strategi mengejar naik turun

Hasil operasi: Versi Python dari strategi mengejar naik turun

Versi Python dari strategi mengejar naik turun

Baru-baru ini, beberapa pengguna mengatakan bahwa strategi Python relatif sedikit. Saya akan membagikan lebih banyak strategi yang ditulis dalam Python di masa mendatang. Kode strateginya juga sangat sederhana, sangat cocok untuk dipelajari oleh pemula. Alamat strategi: https://www.fmz.com/strategy/181185

Strategi ini hanya untuk referensi, pengujian ulang dan pengujian. Jika Anda tertarik, Anda dapat mengoptimalkan dan meningkatkannya.