
Adresse de la stratégie : https://www.fmz.com/strategy/345
Dans cet article, pratiquons le portage d’une stratégie JavaScript simple. En transplantant des stratégies, vous vous familiariserez davantage avec les appels de l’interface de la plateforme de trading quantitative Inventor et comprendrez les légères différences entre les différents langages lors du développement de stratégies sur la plateforme. En fait, la différence entre la stratégie de la version JavaScript et la version Python la stratégie est très petite car les appels d’interface sont fondamentalement les mêmes.
Citation de la version JavaScript des instructions :
Cela nécessite l’ouverture d’une position. Par exemple, si le compte contient 5 000 yuans et 1 pièce, si la valeur de la pièce est supérieure au solde du compte de 5 000 et que la différence de prix dépasse le seuil, par exemple, la pièce vaut désormais 6 000 yuans, puis vendez (6 000-5 000)/6 000./2 pièces, cela signifie que la pièce s’est appréciée, échangez l’argent, si la pièce se déprécie, par exemple, à 4 000 yuans, achetez (5 000-4 000)/4 000/2 pièces, j’en rachète quand la pièce chute, si elle remonte, je la revends, comme un solde, avec des couvertures différentes des deux côtés, donc je l’ai appelé une stratégie équilibrée.
Le principe de la stratégie est très simple, et la version JavaScript du code n’est pas longue, seulement plus de 70 lignes. Transposé dans la stratégie du langage Python avec une syntaxe plus concise, le code est plus court et très adapté aux débutants. Il existe de nombreux codes partagés par les développeurs sur la plateforme de trading quantitatif Inventor, et le langage prend en chargeJavaScript/C++/PythonEtc., maîtriser un langage de développement supplémentaire est non seulement utile pour les stratégies d’apprentissage, de recherche et de développement, mais vous permet également de vous familiariser davantage avec les différentes interfaces API de la plateforme.
'''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)
Le code commence par
'''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}]
'''
Il s’agit de la configuration du backtest, ce qui signifie que la configuration du backtest (paramètres) est enregistrée sous forme de code et que le backtest est automatiquement configuré en fonction de ce paramètre. Cette partie peut être supprimée. Si elle est supprimée, vous devrez définir manuellement les informations de configuration du backtest sur la page du backtest pendant le backtest. Référence : https://www.fmz.com/bbs-topic/859
Les paramètres de cette stratégie sont exactement les mêmes que ceux de la version JavaScript. Le code de la stratégie est également transplanté phrase par phrase, et la structure du programme n’a pas changé. Vous pouvez les comparer phrase par phrase pour voir les différences entre les stratégies écrites dans différents langages. langues.
Configuration des paramètres

Statistiques


Adresse de la stratégie : https://www.fmz.com/strategy/183374
La stratégie est fournie à titre indicatif uniquement, pour les backtests et les tests. Si vous êtes intéressé, vous pouvez l’optimiser et la mettre à niveau.