Als Lehrstrategie ist es am besten, die Praxis zu berücksichtigen.FMZ.COMNach mehreren Schwierigkeiten haben Martingale- und Gitterstrategien ihre eigenen Risiken und Mängel, und mit konservativ festgelegten Parametern können sie immer noch nützlich sein.
Binance Futures Bot
dYdX Bot
Ich garantiere immer, dass es absolut keine Aufladung für die Erstellung der Ertragskurve gibt.
Es ist nur so, dass das Strategie-Design der ersten Version relativ einfach und grob ist. Es gibt nur eine Position und den Export von Gesamtkapitaldaten auf der Schnittstelle. Die Gewinnkurve druckt nur den realisierten Gewinn und Verlust und zählt nicht den schwimmenden Verlust. Viele neue Studenten beschwerten sich und baten darum, die Anzeige zu optimieren.
In diesem Artikel werde ich mit Ihnen zusammenarbeiten, um die Strategie zu verbessern, die seit einem halben Jahr stabil und praktisch ist.
Die Version der Strategie vor dem Upgrade wird auf der Seite
Dies ist auch meine persönliche Entwicklung Gewohnheit. Es ist sehr praktisch, jedes Stück der Strategieentwicklung und Iteration aufFMZ.COM.
Beginnen Sie mit dem Upgrade!
Zunächst einmal optimieren wir die Anzeige der Statusleiste.LogStatus
Die Funktion wird verwendet, um die Statusleiste Daten auf FMZ anzuzeigen. Dann finden wir diesen Eingangspunkt und beginnen mit der Gestaltung des Codes.
Als nächstes fügen Sie hier ein großes Stück Code hinzu:
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) + "`")
Ersetzen Sie die vorherige grobeLogStatus
export.
LogStatus(_D(), "Current total equity:", currTotalEq, "position:", pos)
Die Strategie enthält zwei weitere Parameter:
ShowLine Überprüfen Sie es, und Sie können die Linienzeichnungsbibliothek verwenden, um auf der Bot-Seite zu zeichnen, und zeichnen Sie den Positionspreis, den ausstehenden Auftragspreis und die aktuellen Kurskurven.
Geben Sie das Feld "Pos" an Es wird verwendet, um das Rohfeld von Positionsinformationen festzulegen, die angezeigt werden müssen, da der Name des Rohpositionsdatenfeldes jeder Plattform unterschiedlich ist. Zum Beispiel mein Binance-Bot:
Ich möchte dieunRealizedProfit
Sie können den Parameter SpecifyPosField auf unRealizedProfit setzen und ihn in der Statusleiste anzeigen.
Ein solches ähnliches Design ermöglicht es der Strategie, die nicht einheitlichen Daten anpassungsfähig zu exportieren und den Benutzern die Möglichkeit zu geben, den Exportinhalt anzupassen.
Es ist viel bequemer, den Handelsfortschritt der Strategie, den aktuellen Positionspreis, Gewinn und Verlust und den Auftragspreis zu beobachten. Die Strategie hat bestimmte Risiken, und der Bot wird spezifische Parameter gemäß seiner eigenen Risikokontrolle festlegen und für seine eigenen Gewinne und Verluste verantwortlich sein.