Strategi untuk membeli pemenang versi Python

Penulis:Lydia, Dicipta: 2022-12-22 22:04:41, Dikemas kini: 2023-09-20 09:22:41

img

Strategi untuk membeli pemenang versi Python

Strategi trend biasanya menggunakan pelbagai penunjuk untuk menilai arah pasaran, dan menggunakan hasil perbandingan pelbagai penunjuk sebagai isyarat perdagangan. Dengan cara ini, tidak dapat dielakkan untuk menggunakan parameter dan mengira indikator. Sekarang apabila parameter digunakan, akan ada situasi yang sesuai. Di beberapa pasaran, strategi berfungsi dengan sangat baik, tetapi jika anda tidak bernasib baik dan trend pasaran sangat tidak mesra dengan parameter semasa, strategi mungkin berfungsi dengan sangat buruk. Oleh itu, saya menganggap bahawa reka bentuk strategi yang lebih mudah, semakin baik. Strategi ini akan lebih mantap. Hari ini kita akan berkongsi strategi trend tanpa indikator. Kod strategi sangat mudah, hanya 40 baris.

Kod 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 mudah strategi

Prinsip strategi adalah sangat mudah. ia tidak menggunakan sebarang penunjuk, ia hanya menggunakan harga semasa sebagai asas pencetus urus niaga.ratiountuk mengawal pencetus kedudukan pembukaan.

Memulakan pencetus panjang:

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

Gunakan harga semasa untuk membandingkan dengan harga asas. Apabila harga semasa lebih besar daripada harga asas dan harga melebihiratio * 100%, mencetuskan perintah dan menunggu perintah panjang. Selepas pesanan diletakkan, harga asas dikemas kini kepada harga semasa.

Pemicu pesanan pendek:

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

Prinsip arah pergi pendek adalah sama. Harga semasa digunakan untuk membandingkan harga asas. Apabila harga semasa kurang daripada harga asas dan harga melebihi ratio * 100%', pesanan yang sedang menunggu dicetuskan dan pesanan kosong disenaraikan. Selepas pesanan diletakkan, harga asas dikemas kini kepada harga semasa.

Jumlah pesanan setiap pesanan adalahratio * 100%daripada nilai dana yang tersedia. Melakukan pesanan kecuali kuantiti pesanan yang dikira kurang daripada kuantiti dagangan minimumminStocksditetapkan oleh parameter.

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

Ujian belakang

Jangka masa pengujian belakang adalah kira-kira satu tahun.

img

Hasil berjalan:

img img img

Baru-baru ini, sesetengah pengguna mengatakan bahawa terdapat beberapa strategi Python. Kemudian, saya akan berkongsi lebih banyak strategi yang ditulis dalam Python. Kod strategi juga sangat mudah, yang sangat sesuai untuk pemula kuantitatif untuk dipelajari. Alamat strategi:https://www.fmz.com/strategy/181185

Strategi ini adalah untuk rujukan, pembelajaran dan backtesting sahaja.


Berkaitan

Lebih lanjut