Modulo de visualização de estratégias de negociação - avanço

Autora:Inventor quantificado - sonho pequeno, Criado: 2019-07-17 10:22:20, Atualizado: 2023-10-24 21:40:50

可视化模块搭建交易策略–进阶

Modulo de visualização de estratégias de negociação avançando

Aprender a construir uma estratégia de negociação com um módulo de visualização é uma boa introdução, uma compreensão conceitual da construção e do empilhamento de módulos de visualização, e uma boa compreensão do que é um módulo de visualização. Em seguida, é fácil aprender a usar outros módulos. A partir daí, o Google pode combinar funções mais complexas.

  • ## Módulo de categorias de transações

Em estudos e testes anteriores, já abordamos vários módulos de "categorias de transações". Por exemplo: O módulo "Exchanges Acquire Markets" Modulo "Exchanges Acquire K-Line" O que é isso?

O que já foi usado não é descrito.

  • 1 - Obtenha o número de exchanges

    可视化模块搭建交易策略–进阶

    Quando se escreve uma estratégia para negociar com robôs, pode-se adicionar mais do que um objeto de troca, como a estratégia de hedge. Ou você pode precisar de percorrer os objetos da bolsa, visitando o setor. A partir daí, é necessário usar um módulo para obter o número de casas de câmbio.

    A primeira coisa que podemos fazer é imprimir o número de casas de câmbio atualmente configuradas usando uma estrutura simples:可视化模块搭建交易策略–进阶

    O que eu quero dizer é que, na verdade, é como se fosse um código de política JavaScript chamado assim:

    function main () {
        Log(exchanges.length)
    }
    

    Vejamos o que acontece quando este módulo combinado funciona:可视化模块搭建交易策略–进阶

    Podemos ver que adicionamos 3 objetos de troca, representando três contas de troca diferentes, e o resultado do log retest é 3.

  • 2. Obtenha o nome da bolsa

    可视化模块搭建交易策略–进阶

    Quando você adiciona três objetos de câmbio, a caixa de descarregar mostra três opções. Aprenda um módulo de ciclo com antecedência, no tipo de ciclo.可视化模块搭建交易策略–进阶

    Aprenda um módulo de avaliação condicional:可视化模块搭建交易策略–进阶A condição de julgamento pode ser:可视化模块搭建交易策略–进阶

    Nós usamos o módulo circular para percorrer os nomes de exchanges adicionados O módulo de julgamento condicional é usado para determinar se o recorde de ciclo atual corresponde ao nome da bolsa a ser impresso.

    可视化模块搭建交易策略–进阶

    Revisão de resultados:可视化模块搭建交易策略–进阶

    Por exemplo, o código da política do JavaScript:

    function main () {
        for (var i = 1 ; i <= exchanges.length ; i++) {
            if (i == 1) {
                Log(exchanges[0].GetName())
            } else if (i == 2) {
                Log(exchanges[1].GetName())
            } else {
                Log(exchanges[2].GetName())
            }
        }
    }
    
  • 3. Obtenha o par de transações atuais da bolsa

    可视化模块搭建交易策略–进阶

    Um exemplo simples é obter o primeiro par de transações de um objeto de câmbio com a configuração atual e atribuir um valor à variável text (criada antecipadamente na categoria de variáveis).

    可视化模块搭建交易策略–进阶Os resultados do teste:可视化模块搭建交易策略–进阶

    Se você chamar o código da política do JavaScript:

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4o, módulo de subordinação

    可视化模块搭建交易策略–进阶O módulo é muito importante para a operação de encomenda, onde a primeira posição da barra inclui uma variável de preço, para especificar o preço da encomenda, ou para inserir diretamente valores fixos. A segunda posição da barra (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

    Por exemplo, nós colocamos um exemplo de pagamento com base no preço mais recente com base nos dados atuais do tick, mais um preço deslizante de US $ 10, o valor do pedido é de 0,1 centavo, e imprimimos o ID do pedido.可视化模块搭建交易策略–进阶

    Revisão de resultados:可视化模块搭建交易策略–进阶

    Por exemplo, o seguinte código de política JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. Obtenha o módulo da transação atual para a encomenda

    可视化模块搭建交易策略–进阶

    O módulo retorna todos os pedidos de encomenda que estão em estado pendente do par de transações atual, retornando uma estrutura de lista (arquivo) que pode ser processada com módulos de tipo de lista (operação de percorrer, etc.). Por exemplo: modificamos um pouco o exemplo de módulo de compra de 4 bits acima, alterando o preço de 10 dólares adicionados ao pedido para menos de 10 dólares. O pedido não será transacionado imediatamente, ficará pendurado na profundidade de venda (isto é, em algum grau de compra um, compra dois, compra N), de modo que o pedido esteja em lista pendente de transação. Em seguida, usamos o módulo "Obter transações atuais para encomendas" para obter uma lista de encomendas pendentes. Para evitar que a transação de pedidos em transações subsequentes afete a observação final do retrospecto, nós executamos o módulo "Receber transações atuais em pedidos de encomenda", imprimimos a lista de pedidos e imediatamente usamos o módulo "Lançar exceções" para parar o processo.

    可视化模块搭建交易策略–进阶

    A análise mostra que:可视化模块搭建交易策略–进阶

    O preço da próxima compra é menor do que o preço mais recente de 10 dólares, por isso não haverá transação imediata. Em seguida, obtém os pedidos pendentes e imprime-os. Por fim, lança uma exceção e o processo é interrompido.

    O conjunto de módulos que se juntam é como se fosse uma chamada para a política do JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        Log(exchange.GetOrders())
        throw "stop"
    }
    
  • 6o, cancelar o módulo de pedido

    可视化模块搭建交易策略–进阶

    O módulo é usado para cancelar pedidos.

    A partir daí, a estratégia é desenvolvida de forma a ajudar os usuários a criar suas próprias estratégias.

    O Facebook também divulgou uma lista de pedidos que foram cancelados.

    Sem dúvida, isso certamente vai usar o "módulo de retirada", e ao mesmo tempo em que aprendemos o módulo de retirada, podemos usar o plugin 5 para obter o módulo de transações atuais para encomendas, combinando para implementar essa função.

    Em primeiro lugar, para testar a revogação de todos os pedidos, pendurar um pedido não é óbvio, começamos a fazer dois pedidos, com preços diferentes para distinguir os dois pedidos.

    可视化模块搭建交易策略–进阶

    Usando o módulo do tipo de ciclo, o módulo "percorrer cada elemento da lista", percorra os pedidos na lista pendente atual.可视化模块搭建交易策略–进阶Ao percorrer, cada ordem extraída é atribuída ao módulo de variável order ((criado no tipo de módulo de variável, como mostrado abaixo:)可视化模块搭建交易策略–进阶No módulo de tipos de ferramentas:可视化模块搭建交易策略–进阶Retire o ID do pedido, transmita para a posição de barra () do módulo de cancelamento do pedido e execute o pedido de cancelamento do módulo de cancelamento.

    Re-teste em execução:可视化模块搭建交易策略–进阶

    Descreva usando a política JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
        Log(id2)
        var orders = exchange.GetOrders()
        Log(orders)
        for (var i in orders) {
            var order = orders[i]
            Log(exchange.CancelOrder(order.Id))
        }
    }
    
  • 7o, módulo para obter detalhes de uma encomenda com base no ID da encomenda

    可视化模块搭建交易策略–进阶

    O módulo está localizado em um módulo de variáveis de ID de pedido, onde pode retornar detalhes de pedidos.

    可视化模块搭建交易策略–进阶

    Observe os pedidos que foram devolvidos após o lançamento:可视化模块搭建交易策略–进阶

    A comparação dos resultados de execução no exemplo de 5 toneladas de alumínio mostra que a ordem impressa é uma informação de ordem separada, sem[]Os parâmetros no meio do pacote. Como o exemplo de 5 bits é uma lista, este exemplo retorna uma informação de ordem separada (obtendo o módulo com base na variável ID no ponto de entrada do bloco).

    O exemplo acima é para executar a política JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(exchange.GetOrder(id))
    }
    
  • Modulo de negociação de futuros

    Os módulos acima são estudados um a um, testando as trocas que configuramos como futuros de commodities.

    Configurações de reavaliação:可视化模块搭建交易策略–进阶O exemplo a seguir é usado para testes de retestamento de acordo com essa configuração.

    • Modulo de estado de ligação do servidor da empresa de futuros de commodities CTP

    可视化模块搭建交易策略–进阶

    Os futuros de commodities têm horários de abertura e de descontinuidade, quando os mercados estão descontinuados, não é possível conectar-se.

    • Configurar um módulo de contrato

    可视化模块搭建交易策略–进阶

    Quando o objeto da bolsa é configurado como uma bolsa de futuros, não é possível definir um contrato e obter o mercado diretamente.可视化模块搭建交易策略–进阶

    O contrato foi definido como MA909, e o metanol é o principal contrato atual.可视化模块搭建交易策略–进阶Assim, obtém-se o valor do preço atual do tick do contrato MA909 e o valor mais recente da transação.

    • Configurar módulos unidirecionais para negociação de futuros

    Execução de submodules可视化模块搭建交易策略–进阶
    O futuro é o futuro, o futuro é o futuro, o futuro é o futuro. Buy: mais posições Sell: armazém vazio Closebuy: Comércio Plano closesell: armazém vazio Quatro direções (commodity futures mais duas direções: closebuy_today posição plana com mais posições, closesell_today posição plana com mais posições).

    Por exemplo, se o módulo da ordem for configurado para ser comprado, haverá dois significados, que são um depósito aberto e um depósito vazio, o que produz uma binariedade. Assim, é necessário o módulo "Configurar uma direção de negociação de futuros" para definir uma direção de negociação clara.

    可视化模块搭建交易策略–进阶

    O teste mostra:可视化模块搭建交易策略–进阶

    Por exemplo, o código da estratégia JavaScript:

      function main () {
          while (true) {
              if (exchange.IO("status")) {
                  exchange.SetContractType("MA909")
                  Log(exchange.GetTicker().Last)
                  exchange.SetDirection("buy")
                  Log(exchange.Buy(1000, 1))
                  throw "stop"
              } else {
                  Log("未连接商品期货前置机")
              }
              Sleep(1000)
          }
      }
    
  • 9. Modulo de negociação de futuros de moeda digital

    O uso de futuros de moeda digital é basicamente o mesmo que o uso de futuros de commodities nos itens 8 acima.

    • O código do contrato pode ser:

      • this_week: Naquela semana
      • next_week: Próxima semana
      • Quarto: Quarto
      • swap: permanente
    • BitMEX:

      • XBTUSD
      • ETHUSD
    • Configurar o módulo de alavancagem

    可视化模块搭建交易策略–进阶

    O Bitcoin é uma moeda digital criada para ser usada como alavancagem de futuros.

      # 注意 : 回测不支持。
    

    Por exemplo, a política do JavaScript:

      function main () {
          exchange.SetMarginLevel(10)
      }
    

A estratégia de visualização de paradigmas:

Mais estratégias podem ser encontradas em:https://www.fmz.com/square

Outros artigos desta série

A programação é chata, pode ser feita facilmente com blocos, experimente, é muito divertido!


Relacionado

Mais informações

A LinhaDepois de mais de um mês de aprendizado de programação, não consegui escrever uma estratégia e agora tudo depende de blocos!

Inventor quantificado - sonho pequenoA série de artigos será continuada graças ao apoio. De acordo com o código de política JavaScript correspondente atrás de cada paradigma, é fácil aprender a escrever estratégias em JS.