Type/to search
8
Follow
1364
Followers
Versi Python dari strategi keseimbangan platform tunggal
Discussions
Created 2020-02-05 10:02:03  Updated 2023-10-12 21:20:47
 1
 2965

img

Versi Python dari strategi keseimbangan platform tunggal

Versi JavaScript

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

Dalam artikel ini, mari kita berlatih porting strategi JavaScript sederhana. Dengan mencangkok strategi, Anda akan menjadi lebih akrab dengan panggilan antarmuka Platform Perdagangan Kuantitatif Inventor dan memahami sedikit perbedaan antara berbagai bahasa saat mengembangkan strategi di platform. Faktanya, perbedaan antara strategi versi JavaScript dan versi Python strateginya sangat kecil karena panggilan antarmuka pada dasarnya sama.

Deskripsi Strategi

Mengutip dari versi JavaScript dari instruksi:

Ini memerlukan pembukaan posisi. Misalnya, jika akun memiliki 5.000 yuan dan 1 koin, jika nilai koin lebih besar dari saldo akun 5.000 dan perbedaan harga melebihi ambang batas, misalnya, koin sekarang bernilai 6.000 yuan, kemudian jual (6.000-5.000)/6.000. /2 koin, itu berarti koin telah dihargai, tukarkan uangnya kembali, jika koin terdepresiasi, misalnya, menjadi 4000 yuan, beli (5000-4000)/4000/2 koin, beli kembali sebagian saat koin jatuh, jika naik lagi, saya akan menjualnya lagi, seperti keseimbangan, dengan lindung nilai yang berbeda di kedua sisi, jadi saya menyebutnya strategi seimbang.

Prinsip strateginya sangat sederhana, dan versi kode JavaScript-nya tidak panjang, hanya lebih dari 70 baris. Ditransplantasikan ke strategi bahasa Python dengan sintaksis yang lebih ringkas, kodenya lebih pendek dan sangat cocok untuk dipelajari oleh pemula. Ada banyak kode yang dibagikan oleh pengembang di Inventor Quantitative Trading Platform, dan bahasanya mendukungJavaScript/C++/PythonDll., jadi menguasai satu bahasa pengembangan lagi tidak hanya membantu strategi pembelajaran, penelitian, dan pengembangan, tetapi juga memungkinkan Anda menjadi lebih akrab dengan berbagai antarmuka API pada platform tersebut.

Kode 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)

Kode dimulai 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}] '''

Ini adalah konfigurasi backtest, artinya konfigurasi backtest (pengaturan) disimpan dalam bentuk kode, dan backtest secara otomatis dikonfigurasikan sesuai dengan pengaturan ini. Bagian ini dapat dihapus. Jika dihapus, Anda perlu mengatur informasi konfigurasi backtest secara manual pada halaman backtest selama backtesting.
Referensi: https://www.fmz.com/bbs-topic/859

Parameter strategi ini sama persis dengan versi JavaScript. Kode strategi juga ditransplantasikan kalimat demi kalimat, dan struktur programnya tidak berubah. Anda dapat membandingkannya kalimat demi kalimat untuk melihat perbedaan antara strategi yang ditulis dalam bahasa yang berbeda. bahasa.

Pengujian ulang

Konfigurasi parameter
img

Statistik
img

img

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

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

Related Recommendations
Comment
All comments (1)

    好牛啊

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)