Aktualisieren! Kryptowährungs Futures Martingale Strategie

Schriftsteller:- Ich bin ein Idiot., Erstellt: 2022-04-06 17:38:39, Aktualisiert: 2022-04-07 09:26:16

Aktualisieren! Kryptowährungs Futures Martingale Strategie

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

    img

  • dYdX Bot

    img

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.

Aktualisierungsplan

  • Die Statusleiste wird aktualisiert, um Informationen über die aktuelle Position anzuzeigen, anstatt eine Masse von Daten auszudrucken.
  • Das Marktdiagramm wird angezeigt und die aktuelle ausstehende Auftragsposition wird angezeigt.

Die Version der Strategie vor dem Upgrade wird auf der Seite Anmerkung der Strategie aufgezeichnet.

img

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.LogStatusDie Funktion wird verwendet, um die Statusleiste Daten auf FMZ anzuzeigen. Dann finden wir diesen Eingangspunkt und beginnen mit der Gestaltung des Codes.

img

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:

img

  • 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:

    img

    Ich möchte dieunRealizedProfitSie 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.

Nach dem Strategie-Upgrade die Bots von Binance und dYdX neu starten

img

img

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.


Mehr