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

Módulo de visualização para construir estratégias de negociação - avançado

Criado em: 2019-07-17 10:22:20, atualizado em: 2023-10-24 21:40:50
comments   3
hits   4351

Módulo de visualização para construir estratégias de negociação - avançado

Módulo de visualização para construir estratégias de negociação - avançado

Aprenda a estratégia de negociação da construção de módulos visuais - capítulo de introdução, e tenha uma compreensão conceitual da construção e junção de módulos visuais. Então é fácil aprender a usar outros módulos. Algumas funções mais complexas podem ser combinadas.

  • ## Módulo de categoria de transação

Em estudos e testes anteriores, entramos em contato com vários módulos de “categoria de transação”. Por exemplo: Módulo “Cotações de Câmbio” Módulo “Troca Obter K-line” …

Não entrarei em detalhes sobre aqueles que já foram usados.

  • 1. Obtenha o número de trocas

    Módulo de visualização para construir estratégias de negociação - avançado

    Ao escrever uma estratégia para negociar com um robô, você pode adicionar mais de um objeto de troca, por exemplo, uma estratégia de hedge. Ou você precisa percorrer (travessia significa visitar cada um deles, um por um) os objetos de troca para acessar as condições de mercado. Neste momento, você precisa usar um módulo para obter o número de trocas.

    Podemos primeiro usar uma estrutura simples para imprimir o número de trocas atualmente configuradas: Módulo de visualização para construir estratégias de negociação - avançado

    Na verdade, é como chamar o seguinte código de política JavaScript:

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

    Vejamos os resultados da execução deste módulo combinado: Módulo de visualização para construir estratégias de negociação - avançado

    Você pode ver que adicionamos 3 objetos de câmbio, representando três contas de câmbio diferentes, e o resultado da saída do log de backtest é 3.

  • 2. Obtenha o nome da troca

    Módulo de visualização para construir estratégias de negociação - avançado

    Ao adicionar três objetos de troca, a caixa suspensa mostrará três opções. Aprenda um módulo de loop com antecedência, no tipo loop. Módulo de visualização para construir estratégias de negociação - avançado

    Vamos aprender um módulo de julgamento condicional com antecedência: Módulo de visualização para construir estratégias de negociação - avançado A condição de julgamento pode ser escrita como: Módulo de visualização para construir estratégias de negociação - avançado

    Usamos o módulo loop para iterar sobre os nomes de troca adicionados Use o módulo de julgamento condicional para determinar se a contagem de loop atual corresponde ao nome da troca a ser impressa.

    Módulo de visualização para construir estratégias de negociação - avançado

    Resultados da execução do backtest: Módulo de visualização para construir estratégias de negociação - avançado

    Como o código de estratégia 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 negociação atual da bolsa

    Módulo de visualização para construir estratégias de negociação - avançado

    Um exemplo simples obtém o par de negociação do primeiro objeto de troca atualmente definido e o atribui à variável de texto (criada na categoria de variável com antecedência).

    Módulo de visualização para construir estratégias de negociação - avançado Resultados do backtesting: Módulo de visualização para construir estratégias de negociação - avançado

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

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4. Módulo de pedidos

    Módulo de visualização para construir estratégias de negociação - avançado Este módulo é muito importante e é usado para colocação de pedidos. A variável de preço é incorporada na primeira posição do encaixe (ranhura) para especificar o preço do pedido. Você também pode inserir diretamente um valor fixo. A segunda posição do espigão (ponto) incorpora a variável de quantidade do pedido, que é usada para especificar a quantidade do pedido.

    Por exemplo, criaremos um exemplo de colocação de uma ordem de compra com base no preço mais recente dos dados de mercado de ticks atuais, com um deslizamento de 10 yuans, definindo a quantidade da ordem para 0,1 moedas e imprimindo o ID da ordem. Módulo de visualização para construir estratégias de negociação - avançado

    Resultados da execução do backtest: Módulo de visualização para construir estratégias de negociação - avançado

    Como o seguinte código de política JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. Módulo para obtenção da ordem de confiança do par de negociação atual

    Módulo de visualização para construir estratégias de negociação - avançado

    Este módulo retornará todas as ordens não finalizadas para o par de negociação atual. A estrutura retornada é uma lista (array), que pode ser processada por módulos do tipo lista (operações de travessia, etc.). Por exemplo: modificamos ligeiramente o exemplo do módulo de pedido [4] acima e alteramos o preço de 10 yuans adicionado ao fazer um pedido para uma subtração de preço de 10 yuans. A ordem não será executada imediatamente, mas ficará pendente na profundidade de compra e venda (ou seja, em um determinado nível entre Compra 1, Compra 2 e Compra N), de modo que a ordem estará em uma ordem pendente aguardando execução. Em seguida, usamos o módulo “Obter a ordem de confiança do par de negociação atual” para obter uma lista de ordens no estado PENDENTE (aguardando execução). Para evitar a execução de ordens em condições de mercado subsequentes e afetar a observação final do backtest, após o módulo “Obter a ordem de confiança do par de negociação atual” ser executado e a lista de ordens ser impressa, usamos imediatamente o “Lançar exceção ” módulo para parar o programa.

    Módulo de visualização para construir estratégias de negociação - avançado

    O backtesting mostra: Módulo de visualização para construir estratégias de negociação - avançado

    O preço da ordem de compra é 10 yuans menor que o preço mais recente naquele momento, então a transação não será concluída imediatamente. Depois, pegue os pedidos que estão aguardando execução e imprima-os. Por fim, uma exceção é lançada para interromper o programa.

    Todo o módulo montado é como chamar uma estratégia JavaScript:

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

    Módulo de visualização para construir estratégias de negociação - avançado

    Este módulo é usado para cancelar um pedido.

    Há muitos cenários em que isso é necessário ao escrever políticas:

    Cancele todos os pedidos pendentes.

    Sem dúvida, isso exigirá o uso do “módulo de cancelamento de ordem”. Ao aprender o módulo de cancelamento de ordem, podemos usar [5] para obter o módulo para a ordem de confiança do par de negociação atual e combiná-los para atingir essa função.

    Primeiro, para testar o cancelamento de todos os pedidos, fazer um pedido não é muito óbvio, começamos fazendo dois pedidos com preços e quantidades diferentes para distinguir os dois pedidos.

    Módulo de visualização para construir estratégias de negociação - avançado

    Use o módulo “Percorrer cada elemento na lista” no módulo do tipo loop para percorrer os pedidos na lista de pedidos pendentes atual. Módulo de visualização para construir estratégias de negociação - avançado Durante a travessia, cada ordem recuperada é atribuída ao módulo variável order (criado no tipo de módulo variável, conforme mostrado abaixo:) Módulo de visualização para construir estratégias de negociação - avançado Use o módulo de tipo de ferramenta: Módulo de visualização para construir estratégias de negociação - avançado Retire o ID do pedido e passe-o para a posição côncava do módulo de cancelamento de pedido, e o módulo de cancelamento de pedido executa o pedido de cancelamento.

    Execução de backtest: Módulo de visualização para construir estratégias de negociação - avançado

    Usando a descrição da 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))
        }
    }
    
  • 7. Um módulo para obter informações detalhadas de um pedido com base no ID do pedido

    Módulo de visualização para construir estratégias de negociação - avançado

    Este módulo pode retornar informações detalhadas do pedido conectando um módulo variável de ID do pedido à posição de encaixe e espiga.

    Módulo de visualização para construir estratégias de negociação - avançado

    Preste atenção na ordem retornada após a execução: Módulo de visualização para construir estratégias de negociação - avançado

    Comparado com os resultados da execução no exemplo [5], pode-se descobrir que a ordem impressa é uma informação de ordem separada.[] Entre colchetes. Como o exemplo [5] retorna uma lista, este exemplo retorna uma única informação de ordem (obtida com base na variável ID module na posição do encaixe passada pelo módulo).

    O exemplo acima é equivalente à execução de uma política JavaScript:

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

    Estudaremos os módulos acima um por um e definiremos a bolsa de teste para futuros de commodities.

    Configurações de backtesting: Módulo de visualização para construir estratégias de negociação - avançado O exemplo a seguir faz um backtest dessa configuração.

    • Módulo para julgar o status da conexão entre os servidores de futuros de commodities CTP e da empresa de futuros

    Módulo de visualização para construir estratégias de negociação - avançado

    Futuros de commodities têm horários de abertura e fechamento. Quando o mercado está fechado, você não consegue se conectar.

    • Configurar o módulo de contrato

    Módulo de visualização para construir estratégias de negociação - avançado

    Quando o objeto de troca é configurado como uma bolsa de futuros, se você não definir o contrato e obter diretamente as informações de mercado, um erro será relatado: Módulo de visualização para construir estratégias de negociação - avançado

    Definimos o contrato para MA909, que é o principal contrato atual para metanol. Módulo de visualização para construir estratégias de negociação - avançado Dessa forma, obtém-se o valor de preço mais recente no mercado de ticks atual do contrato MA909.

    • Configurar módulo de direção de ordens de negociação de futuros

    No módulo de ordem de execução Módulo de visualização para construir estratégias de negociação - avançado
    A direção da ordem precisa ser especificada porque os futuros têm: comprar: abrir uma posição longa vender: abrir uma posição curta closebuy: fechar posição longa closesell: fechar posição vendida Quatro direções (futuros de commodities têm mais duas direções: closebuy_today fecha posições compradas hoje, closesell_today fecha posições vendidas hoje).

    Por exemplo, se o módulo de ordens estiver definido para comprar, haverá dois significados: abrir uma posição longa e fechar uma posição curta, o que cria ambiguidade. Portanto, o módulo “Definir direção da ordem de negociação de futuros” é necessário para definir uma direção clara da ordem.

    Módulo de visualização para construir estratégias de negociação - avançado

    O backtesting mostra: Módulo de visualização para construir estratégias de negociação - avançado

    Como o código de 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. Módulo de negociação de futuros de criptomoedas

    O uso de futuros de moeda digital é basicamente o mesmo que o uso de futuros de commodities em [8] acima.

    • Tomando o OKEX como exemplo, o código do contrato pode ser:

      • this_week : esta semana
      • next_week: semana que vem
      • trimestre: trimestre
      • troca: perpétuo
    • BitMEX :

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

    Módulo de visualização para construir estratégias de negociação - avançado

    Usado para definir alavancagem para futuros de moeda digital.

      # 注意 : 回测不支持。
    

    Como na estratégia JavaScript:

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

Exemplo de estratégia de visualização:

Mais estratégias estão disponíveis em: https://www.fmz.com/square

Outros artigos desta série

Programação chata pode ser facilmente concluída usando blocos de construção. Experimente, é muito interessante!