Como estratégia de ensino, é melhor levar em consideração a prática.FMZ.COMApós várias dificuldades, as estratégias Martingale e grid têm os seus próprios riscos e falhas, e com parâmetros conservadores, ainda podem ser úteis.
Binance Futures Bot
Bot dYdX
Eu garanto sempre que não há absolutamente nenhuma recarga para
A curva de lucro imprime apenas o lucro e a perda realizados, e não conta a perda flutuante. Muitos novos alunos reclamaram e pediram para otimizar a exibição.
Neste artigo, vou trabalhar com você para atualizar a estratégia, que tem sido estável e prática por meio ano.
A versão da estratégia antes da atualização é registada na página
É muito conveniente para registrar cada bit de desenvolvimento de estratégia e iteração emFMZ.COM.
Começa a atualizar!
Primeiro de tudo, vamos otimizar o display de barra de status.LogStatus
A função é usada para exibir os dados da barra de status no FMZ. Então, encontramos este ponto de entrada e começamos a projetar o código.
Em seguida, adicionar um grande pedaço de código aqui:
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) + "`")
Substitua o bruto anteriorLogStatus
export.
LogStatus(_D(), "Current total equity:", currTotalEq, "position:", pos)
A estratégia acrescentou dois parâmetros:
showLine Verifique-o, e você pode usar a biblioteca de desenho de linha para desenhar na página do bot, e desenhar o preço da posição, o preço da ordem pendente e as curvas de preço atuais.
EspecificarCampo Ele é usado para definir o campo bruto de informações de posição que precisa ser exibido, porque o nome do campo de dados de posição bruto de cada plataforma é diferente. Como, o meu bot Binance:
Quero exibir ounRealizedProfit
Você pode definir o parâmetro SpecifyPosField para unRealizedProfit e exibi-lo na barra de status.
Tal projeto similar permite que a estratégia para exportar de forma adaptativa os dados não uniformes, dando aos usuários a opção de personalizar o conteúdo de exportação.
É muito mais conveniente observar o progresso da negociação da estratégia, o preço da posição atual, o lucro e a perda e o preço da ordem. A estratégia tem certos riscos, e o bot irá definir parâmetros específicos de acordo com seu próprio controle de risco, e ser responsável por seus próprios lucros e perdas.