Type/to search
8
Follow
1364
Followers
Version Python de la stratégie d'équilibre à plateforme unique
Discussions
Created 2020-02-05 10:02:03  Updated 2023-10-12 21:20:47
 1
 2965

img

Version Python de la stratégie d'équilibre à plateforme unique

Version JavaScript

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.

Description de la stratégie

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.

Code de stratégie

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

Backtesting

Configuration des paramètres
img

Statistiques
img

img

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.

Related Recommendations
Comment
All comments (1)

    好牛啊

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