
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.
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.
'''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.
Konfigurasi parameter

Perangkaan


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.