
Nos artigos anteriores, aprendemos muitos conceitos básicos de criptomoeda, negociação programática e quantitativa. Finalmente, podemos ir direto ao ponto e falar sobre a estratégia em si. Neste artigo, aprenderemos a implementar uma estratégia simples. Quanto à [Grid Strategy], todos que fazem trading devem ter ouvido falar dela. Não importa se você não ouviu falar dela.TrocasTodos eles lançaram suas próprias funções de negociação programática e quantitativa. A estratégia mais comum e fácil de usar éEstratégia de grade. No entanto, as funções e detalhes da estratégia de grade fornecidos por cada exchange são diferentes. Já que você está planejando entrar no círculo quantitativo de criptomoedas. Por que não implementamos nós mesmos uma estratégia de rede?
Neste momento, alguns alunos podem dizer: “Não consigo escrever código!” “Veja, a cabeça do código é grande!”
Isso é certamente verdade. De fato, é muito difícil para estudantes que não são formados em software de computador e não têm experiência em programação desenvolver uma estratégia de negociação completa por conta própria. Porque você tem que fazer uma série de trabalhos preparatórios começando pela conexão com a interface da bolsa (talvez seu programa de lógica de negociação tenha apenas 100 linhas, mas há muito outro trabalho de codificação a ser feito, e é mais difícil do que escrever lógica de negociação). )
Neste momento, se você tiver uma ferramenta à mão, será bem simples, pelo menos a dificuldade será reduzida em 70%. Você pode imaginar o quão conveniente e rápido seria se você escrevesse apenas a lógica da transação em si, e outras funções como encaixe da interface de troca, verificação de assinatura, arquivos de configuração, construção do ambiente operacional, escrita da interface da IU e escrita da interação estivessem todas prontas .
Não acredita? Vamos tentar!
A ferramenta que usamos é: Inventor Quantitative Trading Platform (FMZ.COM). O cerne do design da estratégia de rede é, na verdade, a lógica de compra e venda da rede, então isso é algo que deve ser esclarecido antes de projetar a estratégia. Nosso objetivo é projetar a estratégia para que seja simples e fácil de entender, então quanto menos parâmetros e mais simples a lógica, melhor.
Aqui está o processo básico para elaborar uma estratégia:
Simplificando, é isso que sua estratégia vai fazer, como vai ser feita, quais funções ela vai ter, etc. Essas informações podem ser escritas em um documento (como um bloco de notas) antes de você realmente escrever o código de estratégia. É muito simples desenvolver estratégias no FMZ. A plataforma preparou soluções para essas necessidades para você, e eu não preciso escrever essas necessidades em um caderno (o que não é muito conveniente de gerenciar). Anoto os requisitos da estratégia diretamente nas notas de estratégia.

Apenas lembre-se de salvar a estratégia depois de escrevê-la. Então, escreveremos os requisitos da estratégia (os requisitos da estratégia não são fixos e podem ser registrados durante o desenvolvimento).
A estratégia é projetada como uma estratégia de negociação à vista, e o par de negociação éXXX_USDT,Por exemplo:BTC_USDT。
A grade foi projetada para ser espaçada equidistantemente, o que significa simplesmente que a distância entre dois pontos adjacentes na grade é uma extensão fixa.
A grade foi projetada para ser uma grade infinita que pode ser expandida infinitamente.
O método de colocação de ordens utiliza uma ordem de mercado.
Para ideias pouco claras, podemos começar desenhando imagens para análise.

Você pode usar o preço inicial como ponto base para construir grades nas direções superior e inferior. A chamada grade é uma camada de linhas de compra e linhas de venda. No gráfico, podemos ver que cada linha tem duas possibilidades: 1. Os preços sobem. 2. Os preços caem. O cruzamento ascendente do preço indica que o preço está subindo e você precisa vender, depois esperar o preço cair e comprar de volta para obter lucro. Uma penetração de preço descendente indica que o preço está caindo e você precisa comprar, depois esperar o preço subir e vender para obter lucro. Portanto, cada linha de grade tem dois métodos de negociação: compra e venda. E cada linha da grade tem uma propriedade inerente, que é o preço marcado por esta linha. Por exemplo, a representação de A/B/C/D na figura. Ao elaborar uma estratégia, primeiro precisamos entender o que queremos fazer.O que, e então será conveniente fazê-lo.
Escreva uma função para construir uma estrutura de dados de grade:
function createNet(begin, diff) { // begin,diff是参数,begin是初始价格,diff是网格间距(等差网格的间距是价格)
var oneSideNums = 10 // 网格向上、向下一边生成10条线,上图是一边生成2条(AB一边,CD一边),生成10条的自行脑补画面
var up = [] // 用来储存向上的“网格线”数据结构
var down = [] // 用来储存向下的“网格线”数据结构
for (var i = 0 ; i < oneSideNums ; i++) { // 根据oneSideNums的大小确定次数,循环构造“网格线”数据结构
var upObj = { // 构造一条向上的“网格线”数据结构
buy : false, // 买入标记,初始标记为false ,意思为没有买入
sell : false, // 卖出标记....
price : begin + diff / 2 + i * diff, // 这条“网格线”表示的价格位,可以观察根据循环进行,价格位是依次升高的
}
up.push(upObj) // 构造好的“网格线”数据结构放入up数组
var j = (oneSideNums - 1) - i // 循环时 j 的变动是:9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // 价格不能小于等于0
continue
}
down.push(downObj) // 构造好的“网格线”数据结构放入down
}
return down.concat(up) // 把up加在down之后,形成一个网格线价格从小到大的网格数组结构
}
Você pode executar esta função sozinha para ver o efeito. A [ferramenta de depuração] ou [sistema de backtesting] 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是起始价格,从105开始向上第一条线,间距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 específica de compra e venda da estratégia da grade. Na verdade, a lógica de compra e venda também é muito simples. Nós a desenhamos na figura acima. Comprar significa cruzar abaixo de uma certa linha, e vender significa cruzar acima de uma certa linha. Então, como você se expressa usando a parte de cima e a de baixo? Também é muito simples. Precisamos apenas comparar as posições de preço em dois momentos para fazer um julgamento.
Vamos usar a imagem anterior.

t1 é um momento, t2 é um momento após t1, para julgar o cruzamento da linha C, precisamos apenas julgarP1 < CeP2 > C。
Da mesma forma, para julgar o cruzamento da linha B, precisamos apenas julgarP1 > BeP3 < B。
Nesse momento, precisamos apenas percorrer (a travessia é popularmente conhecida comoOlhe para eles um por um) Para cada linha na grade, basta determinar se ela cruza acima ou abaixo. Não é simples?
Se percebermos o cruzamento de preços para cima ou para baixo, podemos fazer ordens quando essas ações forem acionadas? Obviamente, isso definitivamente não é possível. Se o preço sobe e desce repetidamente em uma linha, então isso não significaria que você está queimando taxas de transação ao negociar repetidamente no mesmo preço? Portanto, ainda há uma série de condições de julgamento para acionar o cruzamento para cima e para baixo, o que requer o uso das tags de compra/venda na estrutura de dados da linha de grade que acabamos de construir (por exemplo: {“buy”:false,“sell “:false,“preço”:5}).
Obrigado por ler. Continuaremos a explicar e aprender na próxima edição.