avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

atualizar! Estratégia Martingale para Futuros de Criptomoedas

Criado em: 2022-02-07 09:12:36, atualizado em: 2024-12-02 21:32:43
comments   5
hits   3858

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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

atualizar! Estratégia Martingale para Futuros de Criptomoedas

  • dYdX ao vivo

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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.

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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.

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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:

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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

atualizar! Estratégia Martingale para Futuros de Criptomoedas

atualizar! Estratégia Martingale para Futuros de Criptomoedas

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.