Nos artigos anteriores, aprendemos os conceitos básicos de muitas criptomoedas, programação e negociação quantitativa. Finalmente, podemos passar ao tópico e falar sobre a própria estratégia.
Para
Neste momento, alguém pode ter dito: Não sei escrever código! Eu ficava com dor de cabeça quando via o código!
Isso é verdade. É realmente bastante difícil para alguém que não é importante em software de computador ou não esteve envolvido em trabalho de programação para desenvolver uma estratégia de negociação completa por si mesmos. Porque você tem que fazer uma série de pré-trabalho desde o início de acoplamento da interface de troca (talvez seu programa de lógica de negociação é apenas 100 linhas, mas outro trabalho de codificação a ser feito é bastante, e é mais difícil do que escrever lógica de negociação.)
Neste momento, se você tiver uma ferramenta útil, é bastante simples, pelo menos a dificuldade é reduzida em 70%. Você pode imaginar como é conveniente e rápido se você apenas escrever a própria lógica de negociação, e todas as outras conexões de interface de troca, verificação de assinatura, arquivos de configuração, construção de ambiente operacional, escrita de interface de interface, escrita interativa e assim por diante estão todos prontos.
Não acredita? Vamos experimentar!
A ferramenta que usamos é: FMZ Quant Trading Platform (FMZ.COMO núcleo do projeto de estratégia de rede é realmente a lógica de compra e venda de rede, por isso isso é algo que deve ser esclarecido antes de projetar uma estratégia.
O seguinte é o fluxo básico da concepção de uma estratégia:
Para simplificar, é o que, como e que funções sua estratégia vai fazer. Essa informação pode ser escrita em um documento (bloco de notas ou algo assim) antes de escrever o código da estratégia. É muito simples desenvolver estratégias no FMZ, A plataforma preparou soluções para esses requisitos para você, e eu não preciso escrever esses requisitos em um bloco de notas (que não é muito conveniente de gerenciar). Eu escrevo os requisitos da estratégia nas notas da estratégia diretamente.
Apenas lembre-se de salvar a estratégia depois de terminar, e então vamos escrever os requisitos de estratégia (os requisitos de estratégia não são estáticos, e também é possível gravar enquanto se desenvolve).
XXX_USDT
, tais comoBTC_USDT
.Para ideias pouco claras, podemos desenhar e analisar no início.
Uma grade pode ser construída em direções ascendentes e descendentes a partir do preço inicial como ponto de base.
Escreva uma função que construa a estrutura de dados da grade:
function createNet(begin, diff) { // begin, diff are parameters, begin is the initial price, diff is the grid spacing (the spacing of the equal difference grid is the price)
var oneSideNums = 10 // The grid generates 10 bars on the upward and downward sides. The above chart is a side of the generation of 2 bars (AB side, CD side) and the generation of 10 bars, you can imagine them by yourself.
var up = [] // Used to store the upward "grid line" data structure
var down = [] // Used to store the downward "grid line" data structure
for (var i = 0 ; i < oneSideNums ; i++) { // Determine the number of times according to the size of oneSideNums, and construct the "grid line" data structure cyclically
var upObj = { // Construct an upward "gridline" data structure
buy : false, // Buy marker, initial marker is false, meaning no buy
sell : false, // Sell marker ...
price : begin + diff / 2 + i * diff, // The price level represented by this "grid line" can be observed according to the cycle, and the price level is rising in turn.
}
up.push(upObj) // The constructed "gridline" data structure is placed into the up array
var j = (oneSideNums - 1) - i // The change in j during the loop is: 9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // The price cannot be less than or equal to 0
continue
}
down.push(downObj) // The constructed "gridline" data structure is placed in down array
}
return down.concat(up) // Add up after down to form a grid array structure with grid line prices from small to large
}
Você pode executar esta função separadamente para ver o efeito. [Debugging Tools] ou [Backtesting System] no FMZ são muito convenientes para depurar códigos tão pequenos.
Os dados construídos podem ser observados.
[
{"buy":false,"sell":false,"price":5},
{"buy":false,"sell":false,"price":15},
{"buy":false,"sell":false,"price":25},
{"buy":false,"sell":false,"price":35},
{"buy":false,"sell":false,"price":45},
{"buy":false,"sell":false,"price":55},
{"buy":false,"sell":false,"price":65},
{"buy":false,"sell":false,"price":75},
{"buy":false,"sell":false,"price":85},
{"buy":false,"sell":false,"price":95},
{"buy":false,"sell":false,"price":105}, // 100 is the starting price, starting from 105 and going up the first line, with an interval of 10
{"buy":false,"sell":false,"price":115}, // ...
{"buy":false,"sell":false,"price":125},
{"buy":false,"sell":false,"price":135},
{"buy":false,"sell":false,"price":145},
{"buy":false,"sell":false,"price":155},
{"buy":false,"sell":false,"price":165},
{"buy":false,"sell":false,"price":175},
{"buy":false,"sell":false,"price":185},
{"buy":false,"sell":false,"price":195}
]
Depois de analisar a estrutura de dados da grade, precisamos considerar a lógica de negociação específica da estratégia da grade. Na verdade, a lógica de compra e venda é muito simples. Já o desenhamos no gráfico acima, comprar significa cruzar uma certa linha abaixo e vender significa cruzar uma certa linha acima. Então, como você mostra a travessia acima e abaixo? Também é muito simples, podemos julgar apenas comparando as posições de preço de dois momentos.
Ainda estou a usar o gráfico anterior.
t1 é um momento, t2 é um momento após t1, para julgar a linha C cruzada acima, só precisamos julgarP1 < C
eP2 > C
- Não.
Da mesma forma, para julgar o cruzado abaixo da linha B, só precisamos determinarP1 > B
eP3 < B
- Não.
Nesse momento, só precisamos atravessar (a travessia é comumente referida comoOlhem um por um.) cada linha na matriz da grade, e julgar se a cruzar acima ou abaixo.
Tendo captado o cruzamento do preço acima e abaixo, é possível fazer uma ordem quando estas ações são desencadeadas?
Obviamente, isso não é possível. Se o preço cruzar acima e abaixo repetidamente em uma linha, não desperdiçaria a taxa por trending repetido no mesmo nível de preço? Portanto, ainda há uma série de condições de julgamento para desencadear o cruzamento de preços acima e abaixo, o que requer o uso dos marcadores de compra/venda na estrutura de dados de linha de grade que acabamos de construir (por exemplo: {
Obrigado por ler, continuaremos explicando e aprendendo na próxima edição.