Mise à niveau! Stratégie de Martingale sur les contrats à terme de crypto-monnaie

Auteur:Je suis désolée., Créé à: 2022-04-06 17:38:39, Mis à jour à: 2022-04-07 09:26:16

Mise à niveau! Stratégie de Martingale sur les contrats à terme de crypto-monnaie

Comme stratégie d'enseignement, il est préférable de prendre en considération la pratique.FMZ.COMAprès plusieurs difficultés, les stratégies Martingale et grid ont leurs propres risques et défauts, et avec des paramètres conservateurs, elles peuvent encore être utiles.

  • Binance Futures Bot

    img

  • Le robot dYdX

    img

Je vous garantis toujours qu'il n'y a absolument aucune recharge pour créer la courbe de rendement.

Il est juste que la conception de la stratégie de la première version est relativement simple et grossière. Il n'y a qu'une seule position et l'exportation totale des données de capitaux propres sur l'interface. La courbe de profit imprime uniquement les bénéfices et pertes réalisés, et ne compte pas la perte flottante. De nombreux nouveaux étudiants se sont plaints et ont demandé d'optimiser l'affichage.

Dans cet article, je vais travailler avec vous pour améliorer la stratégie, qui a été stable et pratique pendant six mois.

Plan de mise à niveau

  • La barre d'état est mise à jour pour afficher des informations sur la position actuelle, plutôt qu'une masse de données imprimées. Afficher le capital total actuel, les bénéfices et pertes flottants et les bénéfices et pertes réels (le bénéfice et la perte totaux qui ont été inclus dans les bénéfices et pertes flottants)
  • Le graphique de marché est affiché et la position actuelle des ordres en attente est affichée.

La version de la stratégie avant la mise à niveau est enregistrée dans la page Note de la stratégie.

img

C'est aussi mon habitude de développement personnel. Il est très pratique d'enregistrer chaque bit de développement de stratégie et l'itération surFMZ.COM.

Commencez à mettre à niveau!

Tout d'abord, nous allons optimiser l'affichage de la barre de statut.LogStatusEnsuite, nous trouvons ce point d'entrée et commençons à concevoir le code.

img

Ensuite, ajoutez un gros morceau de code ici:

                    var tblPos = {
                        "type" : "table",
                        "title" : "position",
                        "cols" : ["position amount", "position direction", "position average price", "position profit and loss", "contract code", "custom feild / " + SpecifyPosField],
                        "rows" : []
                    }
                    var descType = ["long position", "short position"]
                    for (var posIndex = 0 ; posIndex < pos.length ; posIndex++) {
                        tblPos.rows.push([pos[posIndex].Amount, descType[pos[posIndex].Type], pos[posIndex].Price, pos[posIndex].Profit, pos[posIndex].ContractType, SpecifyPosField == "" ? "--" : pos[posIndex].Info[SpecifyPosField]])
                    }
                    
                    var tbl = {
                        "type" : "table",
                        "title" : "data",
                        "cols" : ["current total equity", "actual profit and loss", "current price", "buy order price/amount", "sell order price/amount"],
                        "rows" : []
                    }
                    var buyOrder = null 
                    var sellOrder = null 
                    for (var orderIndex = 0 ; orderIndex < orders.length ; orderIndex++) {
                        if (orders[orderIndex].Type == ORDER_TYPE_BUY) {
                            buyOrder = orders[orderIndex]
                        } else {
                            sellOrder = orders[orderIndex]
                        }
                    }
                    var realProfit = currTotalEq - totalEq
                    if (exchange.GetName() == "Futures_Binance") {
                        _.each(pos, function(p) {
                            realProfit += parseFloat(p.Info.unRealizedProfit)
                        })                        
                    }
                    var t = exchange.GetTicker()
                    tbl.rows.push([currTotalEq, realProfit, t ? t.Last : "--", (buyOrder.Price + "/" + buyOrder.Amount), (sellOrder.Price + "/" + sellOrder.Amount)])
                    
                    // Update the chart data             
                    if (t && showLine) {
                        _.each(pos, function(p) {
                            $.PlotLine(descType[p.Type] + "position price", p.Price)
                        })
                        $.PlotLine("buy order price", buyOrder.Price)
                        $.PlotLine("sell order price", sellOrder.Price)
                        $.PlotLine("current price", t.Last)
                    }
                    
                    // Update the status bar data 
                    LogStatus("time:" + _D() + "\n" + "`" + JSON.stringify(tblPos) + "`" + "\n" + "`" + JSON.stringify(tbl) + "`")

Remplacer le précédent brutLogStatus export.

LogStatus(_D(), "Current total equity:", currTotalEq, "position:", pos)

La stratégie a ajouté 2 paramètres:

img

  • Ligne de présentation Vérifiez-le, et vous pouvez utiliser la bibliothèque de dessin de ligne pour dessiner sur la page du bot, et dessiner le prix de la position, le prix de l'ordre en attente et les courbes de prix actuelles.

  • Spécifier le champ Pos Il est utilisé pour définir le champ brut des informations de position qui doivent être affichées, car le nom du champ de données de position brute de chaque plateforme est différent. Comme mon bot Binance:

    img

    Je veux afficher leunRealizedProfitVous pouvez définir le paramètre SpecifyPosField à unRealizedProfit, et l'afficher dans la barre d'état.

    Une telle conception similaire permet à la stratégie d'exporter de manière adaptative les données non uniformes, donnant aux utilisateurs la possibilité de personnaliser le contenu d'exportation.

Relancer les robots de Binance et dYdX après la mise à niveau de la stratégie

img

img

Vous pouvez voir les données qui doivent être affichées en un coup d'œil. Il est beaucoup plus pratique d'observer la progression des transactions de la stratégie, le prix de la position actuelle, les profits et pertes, et le prix de l'ordre. La stratégie comporte certains risques, et le bot définira des paramètres spécifiques en fonction de son propre contrôle des risques, et sera responsable de ses propres profits et pertes.


Plus de