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.
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.
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.
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())
}
}
}
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)
}
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)
}
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"
}
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 (
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))
}
}
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))
}
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)
}
}
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:
BitMEX:
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 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.