avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Versi Python strategi keseimbangan platform tunggal

Dicipta dalam: 2020-02-05 10:02:03, dikemas kini pada: 2023-10-12 21:20:47
comments   1
hits   2701

Versi Python strategi keseimbangan platform tunggal

Versi Python strategi keseimbangan platform tunggal

versi JavaScript

Alamat strategi: https://www.fmz.com/strategy/345

Dalam artikel ini, mari kita berlatih mengalihkan strategi JavaScript yang mudah. Dengan memindahkan strategi, anda akan menjadi lebih biasa dengan panggilan antara muka Platform Dagangan Kuantitatif Pencipta dan memahami sedikit perbezaan antara bahasa yang berbeza apabila membangunkan strategi pada platform Sebenarnya, perbezaan antara strategi versi JavaScript dan versi Python strategi adalah sangat kecil kerana panggilan antara muka pada asasnya adalah sama.

Huraian Strategi

Memetik daripada versi JavaScript arahan:

Ini memerlukan pembukaan kedudukan Contohnya, jika akaun mempunyai 5,000 yuan dan 1 syiling, jika nilai syiling lebih besar daripada baki akaun 5,000 dan perbezaan harga melebihi ambang, contohnya, syiling kini bernilai 6,000. yuan, kemudian jual (6,000-5,000)/6,000 /2 syiling, bermakna syiling telah dihargai, tukarkan kembali wang itu, jika syiling susut nilai, sebagai contoh, kepada 4000 yuan, beli (5000-4000)/4000/2. syiling, beli balik apabila syiling jatuh, jika jika ia naik lagi, saya akan menjualnya semula, sama seperti baki, dengan lindung nilai yang berbeza pada kedua-dua belah, jadi saya namakannya sebagai strategi seimbang.

Prinsip strategi adalah sangat mudah, dan versi JavaScript kod tidak panjang, hanya lebih daripada 70 baris. Dipindahkan ke strategi bahasa Python dengan sintaks yang lebih ringkas, kod ini lebih pendek dan sangat sesuai untuk dipelajari oleh pemula Terdapat banyak kod yang dikongsi oleh pembangun pada Platform Dagangan Kuantitatif Pencipta, dan bahasa itu menyokong.JavaScript/C++/PythonDsb., jadi menguasai satu lagi bahasa pembangunan bukan sahaja membantu untuk pembelajaran, penyelidikan dan strategi pembangunan, tetapi juga membolehkan anda menjadi lebih biasa dengan pelbagai antara muka API platform.

Kod Strategi

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

InitAccount = None

def CancelPendingOrders():
    ret = False
    while True:
        orders = _C(exchange.GetOrders)
        if len(orders) == 0 :
            return ret

        for j in range(len(orders)):
            exchange.CancelOrder(orders[j].Id)
            ret = True
            if j < len(orders) - 1:
                Sleep(Interval)
    return ret 

def onTick():
    acc = _C(exchange.GetAccount)
    ticker = _C(exchange.GetTicker)
    spread = ticker.Sell - ticker.Buy
    diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
    ratio = diffAsset / acc.Balance
    LogStatus("ratio:", ratio, _D())
    if abs(ratio) < threshold:
        return False
    if ratio > 0 :
        buyPrice = _N(ticker.Sell + spread, ZPrecision)
        buyAmount = _N(diffAsset / buyPrice, XPrecision)
        if buyAmount < MinStock:
            return False
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
    else :
        sellPrice = _N(ticker.Buy - spread, ZPrecision)
        sellAmount = _N(-diffAsset / sellPrice, XPrecision)
        if sellAmount < MinStock:
            return False 
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
    return True

def main():
    global InitAccount, LoopInterval
    InitAccount = _C(exchange.GetAccount)
    LoopInterval = max(LoopInterval, 1)
    while True:
        if onTick():
            Sleep(1000)
            CancelPendingOrders()
            Log(_C(exchange.GetAccount))
        Sleep(LoopInterval * 1000)

Kod bermula dengan

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

Ia adalah konfigurasi ujian belakang, yang bermaksud konfigurasi ujian belakang (tetapan) disimpan dalam bentuk kod, dan ujian belakang dikonfigurasikan secara automatik mengikut tetapan ini. Bahagian ini boleh dipadamkan jika dipadamkan, anda perlu menetapkan maklumat konfigurasi ujian belakang secara manual pada halaman ujian belakang semasa ujian belakang. Rujukan: https://www.fmz.com/bbs-topic/859

Parameter strategi ini betul-betul sama dengan versi JavaScript Kod strategi juga dipindahkan ayat demi ayat, dan struktur program tidak berubah Anda boleh membandingkannya ayat demi ayat untuk melihat perbezaan antara strategi yang ditulis dalam berbeza bahasa.

Ujian belakang

Konfigurasi parameter Versi Python strategi keseimbangan platform tunggal

Perangkaan Versi Python strategi keseimbangan platform tunggal

Versi Python strategi keseimbangan platform tunggal

Alamat strategi: https://www.fmz.com/strategy/183374

Strategi ini adalah untuk rujukan sahaja, ujian belakang dan ujian Jika anda berminat, anda boleh mengoptimumkan dan menaik tarafnya.