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

Autora:Sonhos pequenos, Criado: 2019-07-17 10:22:20, Atualizado: 2023-10-24 21:40:50

img

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

      img

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

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

      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

      img

      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.img

      Aprenda um módulo de avaliação condicional:imgA condição de julgamento pode ser:img

      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.

      img

      Revisão de resultados:img

      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

      img

      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).

      imgOs resultados do teste:img

      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

      imgO 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.img

      Revisão de resultados:img

      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

      img

      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.

      img

      A análise mostra que:img

      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

      img

      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.

      img

      Usando o módulo do tipo de ciclo, o módulo "percorrer cada elemento da lista", percorra os pedidos na lista pendente atual.imgAo 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:)imgNo módulo de tipos de ferramentas:imgRetire 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:img

      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

      img

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

      img

      Observe os pedidos que foram devolvidos após o lançamento:img

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

        img

        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

        img

        Quando o objeto da bolsa é configurado como uma bolsa de futuros, não é possível definir um contrato e obter o mercado diretamente.img

        O contrato foi definido como MA909, e o metanol é o principal contrato atual.imgAssim, 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 submodulesimg
        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.

        img

        O teste mostra:img

        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

        img

        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!


Relacionados

Mais.

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!

Sonhos pequenosA 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.