Alamat kebijakan:https://www.fmz.com/strategy/345
Dalam artikel ini, kita akan berlatih memindahkan kebijakan JavaScript sederhana. Dengan memindahkan kebijakan, penemu akan lebih akrab dengan panggilan antarmuka platform perdagangan kuantitatif, dan memahami sedikit perbedaan antara bahasa yang berbeda dalam strategi pengembangan platform, sebenarnya kebijakan versi JavaScript sangat sedikit berbeda dari kebijakan versi Python, karena panggilan antarmuka pada dasarnya sama.
Mengutip penjelasan dari versi JavaScript:
Ini perlu membangun gudang, misalnya, jika Anda memiliki $ 5.000 di akun, dan satu koin, jika nilai koin lebih besar dari saldo akun $ 5.000 dan perbedaan lebih besar dari nilai depreciation, misalnya, jika koin sekarang bernilai $ 6.000, maka Anda akan menjual $ 6.000-5.000 / $ 6.000 / 2, yang berarti mata uang naik, dan menukar uang kembali, jika mata uang turun, misalnya $ 4.000, maka Anda akan membeli $ 5.000-4.000 / $ 4.000 / 2.
Strategi sangat sederhana, kode versi JavaScript juga tidak panjang, hanya lebih dari 70 baris. Strategi bahasa Python yang lebih sederhana, kode yang lebih pendek, sangat cocok untuk belajar pemula, ada banyak kode yang dibagikan oleh pengembang di platform perdagangan kuantitatif penemu, dukungan bahasaJavaScript
/C++
/Python
Jadi, memiliki pengetahuan lebih lanjut tentang bahasa pengembang tidak hanya berguna untuk strategi belajar, penelitian, dan pengembangan, tetapi juga dapat membantu Anda lebih akrab dengan berbagai antarmuka API platform.
'''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 retest, yang berarti bahwa konfigurasi retest (setelan) disimpan dalam bentuk kode, dan saat retest secara otomatis dikonfigurasi sesuai dengan pengaturan ini. Bagian ini dapat dihapus, dihapus, saat retest Anda perlu mengatur informasi konfigurasi retest secara manual di halaman retest. Referensi:https://www.fmz.com/bbs-topic/859
Parameter kebijakan ini sangat konsisten dengan versi JavaScript, kode kebijakan juga dipindahkan per kalimat, struktur program tidak berubah, dan dapat dibandingkan per kalimat, melihat perbedaan kebijakan yang ditulis dalam bahasa yang berbeda.
Konfigurasi parameter
Statistik
Di sini, Anda dapat melihat foto-foto yang menarik.https://www.fmz.com/strategy/183374
Strategi ini hanya untuk referensi belajar, uji ulang, dan minat untuk mengoptimalkan upgrade.
Kekuatan langitSapi yang baik.