Type/to search
8
Follow
1364
Followers
60 lignes de code pour mettre en œuvre une idée – stratégie de sélection des contrats les plus bas
Original
Created 2022-03-19 14:37:08  Updated 2024-12-02 21:32:02
 14
 3758

img

Les stratégies qui privilégient les marchés volatils, comme la stratégie de grille et la stratégie Martingale, présentent des inconvénients inhérents. Des stratégies similaires ont été testées sur le marché des contrats ETH depuis un certain temps. Je discute également souvent et partage mes expériences avec de nouveaux et anciens joueurs sur FMZ.COM. Concernant ce type de stratégie, il y a un point sur lequel je suis tout à fait d’accord avec ce qu’a dit un ami. Autrement dit, lors de la conclusion de contrats dans le secteur des cryptomonnaies, le risque d’être long est légèrement inférieur à celui d’être court. Ou pour le dire plus simplement, la pire baisse possible est zéro, mais la hausse est illimitée.

Ainsi, des stratégies telles que Martingale et Grid, consistant à aller uniquement à l’achat et non à la vente, et à répartir les risques de sélection du bas sur une longue période, seraient-elles meilleures que le trading bilatéral ? Cette idée semble bonne, mais personne ne sait si elle résistera à la pratique. Mais au moins, nous pouvons simplement tester cette idée. Nous avons donc le sujet de l'article d'aujourd'hui : concevoir une stratégie de sélection de contrats de bas de gamme.

Développement rapide basé sur FMZ.COM

Le code pour implémenter cette idée est vraiment très simple, grâce à la flexibilité de la plateforme, à l'encapsulation de l'interface, au puissant système de backtesting, etc. L'ensemble du code ne prend que 60 lignes (pour des raisons de normes d'écriture de code, de nombreuses abréviations ne sont pas utilisées).

La conception de la stratégie est très simple. Selon le prix initial au début de la logique, les ordres d'achat sont placés à intervalles vers le bas. Si le prix continue de baisser, continuez à placer des ordres d'achat pour continuer à pêcher au fond. Ensuite, passez un ordre de clôture basé sur le prix de la position plus une certaine différence de profit et attendez que la position soit fermée. Si la position est fermée, la logique ci-dessus sera répétée avec le prix actuel comme prix initial. La stratégie ne détient pas de positions courtes, uniquement des positions longues.

Code source de la stratégie :

javascript
function cancelAll() { while (true) { var orders = _C(exchange.GetOrders) if (orders.length == 0) { break } for (var i = 0 ; i < orders.length ; i++) { exchange.CancelOrder(orders[i].Id, orders[i]) Sleep(interval) } } } function getLong(arr, kind) { var ret = null for (var i = 0 ; i < arr.length ; i++) { if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) { ret = arr[i] } } return ret } function pendingBidOrders(firstPrice) { var index = 0 var amount = baseAmount while (true) { var pos = _C(exchange.GetPosition) var price = firstPrice - index * baseSpacing amount *= ratio index++ exchange.SetDirection("buy") exchange.Buy(price, amount) if (pos.length != 0) { var longPos = getLong(pos, "pos") if (longPos) { exchange.SetDirection("closebuy") exchange.Sell(longPos.Price + profitTarget, longPos.Amount) } } while (true) { Sleep(interval) if (!getLong(_C(exchange.GetOrders), "orders")) { cancelAll() break } if (!getLong(_C(exchange.GetPosition), "pos")) { cancelAll() return } } } } function main() { exchange.SetContractType(symbol) while (true) { pendingBidOrders(_C(exchange.GetTicker).Last) } }

La conception des paramètres est également très simple :

img

Il n'y a que quelques paramètres.

Regardez l'effet backtest de ces dizaines de lignes de code

Définissez simplement la plage de temps du backtest :

img

Exécution du backtest :

img

img

Cela ressemble beaucoup à une stratégie de type grille ou Martin~. Les nouveaux étudiants qui commencent tout juste à apprendre ont-ils peur des stratégies longues et se découragent-ils facilement ? Une introduction brève et concise aux stratégies est plus appropriée, facilitant la digestion des idées stratégiques et l’apprentissage de la conception logique.

Le code de stratégie est uniquement destiné à des fins d'apprentissage et de recherche.

Related Recommendations
Comment
All comments (14)

    img
    运行之后会报错然后一直在挂单,撤单无限循环,要如何解决

    4 years ago

    您好,这个是个教学策略,主要是讲解思路,可以在币安永续合约跑,跑OK需要对策略修改一下。上面问题的原因是下单量为小数了,OKX是要求下单量为合约整张数的。币安期货USDT本位永续合约可以是小数

    4 years ago

    好的谢谢我知道了

    4 years ago

    不客气,刚写支持FMZ量化。

    4 years ago

    这个策略只能在币安上跑吗?

    4 years ago

    都可以跑,就是参数调整下就行。

    4 years ago

    仓位增长系数是什么意思?

    4 years ago

    设置2就是2倍加仓。

    4 years ago

    怎么没有策略地址啊?复制策略源码不能用

    4 years ago

    这个策略只是一个教学策略,切勿实盘,回测研究学习可以。复制策略源码,还要加上策略参数,参数如文章上的截图。

    4 years ago

    img
    现在币安不能支持麦语言策略使用么,会提示用web什么的方式进行实时更新避免api封禁

    4 years ago

    您好,这个和策略无关的,您可以设置一下麦语言模版参数上的轮询间隔,设置大一些。如果您一个服务器上跑多个实盘,都访问一个交易所的接口,那么频率是会翻倍的,很容易就超频超限了。

    4 years ago

    img
    按道理我这个参数两个轮训一分钟最多120次,并没有超过币安限制每分钟1200次访问呀,有点不理解

    4 years ago

    是不是运行了多个实盘,如果一个服务器上运行2个实盘,频率就翻倍,以此类推的。

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