Type/to search
8
Follow
1365
Followers
atualizar! Estratégia Martingale para Futuros de Criptomoedas
Discussions
Created 2022-02-07 09:12:36  Updated 2024-12-02 21:32:43
 5
 4318

img

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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.

  • Binance Futures ao vivo

    img

  • dYdX ao vivo

    img

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.

Plano de atualização

  • A barra de status foi atualizada para mostrar informações sobre a posição atual em vez de imprimir um monte de dados. Exibe o patrimônio líquido total atual, lucro e prejuízo flutuantes e lucro e prejuízo reais (lucro e prejuízo totais, incluindo lucro e prejuízo flutuantes)
  • O gráfico de mercado é exibido e a posição atual da ordem pendente é exibida.

A versão da política antes da atualização é registrada na página Notas da política.

img

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.

img

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:

img

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

    img

    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.

Reinicie a negociação real da Binance e dYdX após atualizar a estratégia

img

img

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.

Related Recommendations
Comment
All comments (5)

    梦总,源码里的n=1好像并没有体现出意义?下面并没有n++体现加仓次数?

    4 years ago

    可以设计上,不过感觉风险比较大,所以就写死n=1了。

    4 years ago

    梦总 我觉得做黄金不错 XAUUSD 相对来说暴涨暴跌真没有币圈这么猛

    4 years ago

    多品种啊,梦总~首先利润变量那个参数要改成比例才可以多币种同时跑吧

    4 years ago

    是的,因为不同交易对,价格相差甚远,不能直观的用价格差表示了,需要用百分比来设计。如果要继续用价格差表示,需要设置一个数组参数,分开设置这些不同品种的价格差。

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)