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
Le robot dYdX
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.
La version de la stratégie avant la mise à niveau est enregistrée dans la page
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.LogStatus
Ensuite, nous trouvons ce point d'entrée et commençons à concevoir le code.
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:
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:
Je veux afficher leunRealizedProfit
Vous 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.
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.