
Als Lehrstrategie bietet es sich natürlich an, gewisse praktische Leistungen zu berücksichtigen. Die „Martin-Strategie für Kryptowährungs-Futures“ wird seit fast einem halben Jahr im Watch-Bereich von FMZ.COM angezeigt. Nach vielen Höhen und Tiefen stellt man fest, dass Martin- und Grid-Strategien ihre Risiken und Mängel haben und konservative Parameter nicht bedeuten, dass sie nicht verwendet werden können.


Herr Meng garantiert, dass zur „Herstellung“ der Renditekurve (manueller Hundekopf) absolut keine Aufladung erforderlich ist.
Allerdings war die erste Version des Strategieentwurfs ziemlich grob. Auf der Schnittstelle gab es nur eine Ausgabe der Positions- und Gesamtkapitaldaten und die Renditekurve druckte nur den realisierten Gewinn und Verlust aus, ohne den schwebenden Verlust zu berücksichtigen. Viele Studienanfänger beschwerten sich darüber und wünschten sich eine Optimierung der Darstellung.
Lassen Sie uns in diesem Artikel diese Strategie, die seit einem halben Jahr in der Praxis angewendet wird, verbessern.
Die Richtlinienversion vor dem Upgrade wird auf der Hinweisseite der Richtlinie aufgezeichnet.

Dies ist auch meine persönliche Entwicklungsgewohnheit. Es ist sehr praktisch, jedes Detail der Strategieentwicklung und -iteration auf FMZ.COM aufzuzeichnen.
Beginnen Sie mit dem Upgrade!
Lassen Sie uns zunächst die Anzeige der „Statusleiste“ optimieren. Studenten, die mit den Entwicklungsdokumenten von FMZ vertraut sind, wissen, dass die Statusleistendaten in FMZ mitLogStatusFunktion. Dann finden wir diesen Einstiegspunkt und beginnen mit der Gestaltung des Codes.

Fügen Sie als Nächstes hier einen großen Codeabschnitt hinzu:
var tblPos = {
"type" : "table",
"title" : "持仓",
"cols" : ["持仓数量", "持仓方向", "持仓均价", "持仓盈亏", "合约代码", "自定义字段 / " + SpecifyPosField],
"rows" : []
}
var descType = ["多头仓位", "空头仓位"]
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" : "数据",
"cols" : ["当前总权益", "实际盈亏", "当前价格", "买单价格/数量", "卖单价格/数量"],
"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)])
// 更新图表数据
if (t && showLine) {
_.each(pos, function(p) {
$.PlotLine(descType[p.Type] + "持仓价格", p.Price)
})
$.PlotLine("买单挂单价格", buyOrder.Price)
$.PlotLine("卖单挂单价格", sellOrder.Price)
$.PlotLine("当前价格", t.Last)
}
// 更新状态栏数据
LogStatus("时间:" + _D() + "\n" + "`" + JSON.stringify(tblPos) + "`" + "\n" + "`" + JSON.stringify(tbl) + "`")
Ersetzen Sie das bisherige RohölLogStatusAusgabe
LogStatus(_D(), "当前总权益:", currTotalEq, "持仓:", pos)
Die Strategie fügt zwei Parameter hinzu:

showLine-Parameter Wenn diese Option aktiviert ist, können Sie die Bibliothek zum Zeichnen von Linien verwenden, um auf der echten Handelsseite den Positionspreis, den Preis der ausstehenden Bestellung und die aktuelle Preiskurve zu zeichnen.
Parameter „SpecifyPosField“ Es wird verwendet, um die ursprünglichen Felder der Positionsinformationen festzulegen, die angezeigt werden müssen, da die Namen der ursprünglichen Datenfelder von Positionen für jede Börse unterschiedlich sind. Daher entwerfen wir hier einen benutzerdefinierten Parameter, um den anzuzeigenden Feldnamen anzugeben. Zum Beispiel mein Binance-Echtgeldkonto:

Ich möchte das Infofeld der Positionsinformationsdaten (die Originaldaten der Börsenschnittstelle) anzeigenunRealizedProfitAttribut, d. h. der nicht realisierte Gewinn und Verlust der Position. Sie können den Parameter „SpecifyPosField“ auf „unRealizedProfit“ setzen. Es wird in der Statusleiste angezeigt.
Ein derart ähnliches Design ermöglicht es der Strategie, die Ausgabe an nicht einheitliche Daten anzupassen und gibt Benutzern die Möglichkeit, den Ausgabeinhalt individuell anzupassen.


Sie erkennen auf einen Blick, welche Daten angezeigt werden sollen. Es ist viel bequemer, den Handelsverlauf der Strategie, den aktuellen Positionspreis, Gewinn und Verlust sowie den Preis der ausstehenden Order zu beobachten. Diese Strategie birgt gewisse Risiken. Bitte legen Sie bestimmte Parameter entsprechend Ihrer eigenen Risikokontrolle fest und tragen Sie Ihre eigenen Gewinne und Verluste. Die Strategie wird nur zu Kommunikationszwecken und zum Lernen offengelegt.