
Como estratégia de ensino, é claro que é melhor levar em consideração certo desempenho prático. A “Estratégia Martin para Futuros de Criptomoedas” foi exibida na seção Watch do FMZ.COM por quase meio ano. Depois de passar por muitos altos e baixos, descobriu-se que as estratégias de Martin e de grade têm seus riscos e deficiências, e parâmetros conservadores não significam que não possam ser usados.


O Sr. Meng garante que não há absolutamente nenhuma recarga para “fabricar” a curva de juros (manual dog head).
No entanto, a primeira versão do design da estratégia era bastante rudimentar. Havia apenas uma posição e saída de dados de patrimônio líquido total na interface, e a curva de rendimento imprimia apenas o lucro e a perda realizados, sem levar em conta a perda flutuante. Muitos alunos novos reclamaram e pediram que a exibição fosse otimizada.
Neste artigo, vamos atualizar esta estratégia que está em uso prático há meio ano.
A versão da política antes da atualização é registrada na página Notas da política.

Este também é meu hábito de desenvolvimento pessoal. É muito conveniente registrar cada detalhe do desenvolvimento e iteração da estratégia no FMZ.COM.
Comece a atualizar!
Primeiro, vamos otimizar a exibição da “barra de status”. Os alunos que estão familiarizados com os documentos de desenvolvimento do FMZ sabem que os dados da barra de status são exibidos no FMZ usandoLogStatusfunção. Então encontramos esse ponto de entrada e começamos a projetar o código.

Em seguida, adicione um grande pedaço de código aqui:
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) + "`")
Substituir o petróleo bruto anteriorLogStatusSaída
LogStatus(_D(), "当前总权益:", currTotalEq, "持仓:", pos)
A estratégia acrescenta 2 parâmetros:

Parâmetros showLine Se marcada, você pode usar a biblioteca de desenho de linhas para desenhar na página de negociação real, desenhando o preço da posição, o preço da ordem pendente e a curva de preço atual.
Parâmetro SpecifyPosField Ele é usado para definir os campos originais das informações de posição que precisam ser exibidas, porque os nomes dos campos de dados originais das posições são diferentes para cada bolsa. Então aqui projetamos um parâmetro personalizado para especificar o nome do campo a ser exibido. Por exemplo, minha conta real Binance:

Quero exibir o campo Info dos dados de informações de posição (os dados originais da interface de troca)unRealizedProfitAtributo, ou seja, o lucro e a perda não realizados da posição. Você pode definir o parâmetro SpecifyPosField como unRealizedProfit. Ele será exibido na barra de status.
Um design semelhante permite que a estratégia adapte a saída a dados não uniformes, dando aos usuários a opção de personalizar o conteúdo da saída.


Você pode ver que os dados que precisam ser exibidos ficam claros à primeira vista. É 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 pendente. Esta estratégia tem certos riscos. Por favor, defina parâmetros específicos de acordo com seu próprio controle de risco e assuma seus próprios lucros e perdas. A estratégia é divulgada apenas para comunicação e aprendizagem.