
En los artículos anteriores, aprendimos muchos conceptos básicos de criptomonedas, comercio programático y cuantitativo. Finalmente, podemos ponernos manos a la obra y hablar de la estrategia en sí. En este artículo, aprenderemos a implementar una estrategia sencilla. En cuanto a la [Estrategia de cuadrícula], todos los que hacen trading deberían haber oído hablar de ella. No importa si no has oído hablar de ella.IntercambiosTodos ellos han lanzado sus propias funciones de trading programático y cuantitativo. La estrategia más común y fácil de usar esEstrategia de red. Sin embargo, las funciones y los detalles de la estrategia de red que ofrece cada intercambio son diferentes, ya que está planeando ingresar al círculo de criptomonedas cuantitativas. ¿Por qué no implementamos nosotros mismos una estrategia de red?
En este momento, algunos estudiantes podrían decir: “¡No puedo escribir código!” “¡Mira el código, la cabeza es grande!”
Eso es ciertamente cierto. De hecho, es bastante difícil para los estudiantes que no se especializan en software informático y no tienen experiencia en programación desarrollar una estrategia comercial completa por su cuenta. Porque hay que hacer una serie de trabajos preparatorios a partir de la conexión a la interfaz de intercambio (quizás su programa de lógica comercial tenga solo 100 líneas, pero hay mucho otro trabajo de codificación por hacer, y es más difícil que escribir la lógica comercial. )
En este momento, si tienes una herramienta a mano, será bastante sencillo, al menos la dificultad se reducirá en un 70%. Puedes imaginar lo conveniente y rápido que sería si solo escribieras la lógica de la transacción en sí, y otras funciones como el acoplamiento de la interfaz de intercambio, la verificación de firmas, los archivos de configuración, la construcción del entorno operativo, la escritura de la interfaz de usuario y la escritura de la interacción estuvieran listas para usar. .
¿No lo crees? ¡Vamos a intentarlo!
La herramienta que utilizamos es: Inventor Quantitative Trading Platform (FMZ.COM). El núcleo del diseño de la estrategia de red es en realidad la lógica de compra y venta de la red, por lo que esto es algo que debe aclararse antes de diseñar la estrategia. Nuestro objetivo es diseñar la estrategia para que sea simple y fácil de entender, por lo que cuanto menos parámetros y más simple sea la lógica, mejor.
Aquí está el proceso básico para diseñar una estrategia:
En pocas palabras, esto es lo que va a hacer su estrategia, cómo se va a hacer, qué funciones va a tener, etc. Esta información se puede escribir en un documento (como un bloc de notas) antes de escribir realmente la estrategia. Código de estrategia. Desarrollar estrategias en FMZ es muy sencillo. La plataforma tiene preparadas soluciones a estas necesidades y yo no tengo que escribirlas en un cuaderno (lo que no resulta muy cómodo de gestionar). Escribo los requisitos de la estrategia directamente en las notas de estrategia.

Recuerde guardar la estrategia después de escribirla. Luego escribiremos los requisitos de la estrategia (los requisitos de la estrategia no son fijos y se pueden registrar durante el desarrollo).
La estrategia está diseñada como una estrategia de negociación al contado y el par de negociación esXXX_USDT,Por ejemplo:BTC_USDT。
La cuadrícula está diseñada para estar espaciada equidistantemente, lo que significa simplemente que la distancia entre dos puntos adyacentes en la cuadrícula es una extensión fija.
La cuadrícula está diseñada para ser una cuadrícula infinita que puede expandirse infinitamente.
El método de colocación de órdenes utiliza una orden de mercado.
Para las ideas poco claras podemos empezar haciendo dibujos para analizarlos.

Puede utilizar el precio inicial como punto base para construir cuadrículas tanto en dirección superior como inferior. La llamada cuadrícula es una capa de líneas de compra y líneas de venta. Desde el gráfico podemos ver que cada línea tiene dos posibilidades: 1. Los precios suben. 2. Los precios caen. El cruce ascendente del precio indica que el precio va a subir y usted necesita vender, y luego esperar a que el precio baje y volver a comprar para obtener ganancias. Una penetración de precio a la baja indica que el precio va a bajar y usted necesita comprar, y luego esperar a que el precio suba y vender para obtener ganancias. Por lo tanto, cada línea de la cuadrícula tiene dos métodos de negociación: comprar y vender. Y cada línea de la cuadrícula tiene una propiedad inherente, que es el precio marcado por esa línea. Por ejemplo, la representación de A/B/C/D en la figura. Al diseñar una estrategia, primero debemos entender qué queremos hacer.Qué, y luego será conveniente hacerlo.
Escriba una función para construir una estructura de datos de cuadrícula:
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之后,形成一个网格线价格从小到大的网格数组结构
}
Puede ejecutar esta función sola para ver el efecto. La [herramienta de depuración] o el [sistema de backtesting] de FMZ son muy convenientes para depurar códigos tan pequeños.

Los datos construidos se pueden observar.
[
{"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}
]
Después de analizar la estructura de datos de la red, debemos considerar la lógica de compra y venta específica de la estrategia de la red. De hecho, la lógica de compra y venta también es muy sencilla. La hemos dibujado en la imagen de arriba. Comprar significa cruzar por debajo de una determinada línea, y vender significa cruzar por encima de una determinada línea. Entonces, ¿cómo se expresa el uso de la parte superior e inferior? También es muy sencillo. Solo necesitamos comparar las posiciones de precios en dos momentos para emitir un juicio.
Todavía usando la imagen anterior.

t1 es un momento, t2 es un momento después de t1, para juzgar el cruce de la línea C, solo necesitamos juzgarP1 < CyP2 > C。
De manera similar, para juzgar el cruce de la línea B, solo necesitamos juzgarP1 > ByP3 < B。
En ese momento, solo necesitamos atravesar (el recorrido se conoce popularmente comoMíralos uno por uno) Para cada línea de la matriz de la cuadrícula, simplemente determine si cruza por arriba o por abajo. ¿No es sencillo?
Si detectamos que el precio sube o baja, ¿podemos colocar órdenes cuando se activan estas acciones? Obviamente, esto no es posible. Si el precio sube y baja repetidamente en una línea, ¿no significaría que estás quemando comisiones por transacción al operar repetidamente al mismo precio? Por lo tanto, todavía hay una serie de condiciones de juicio para activar el cruce hacia arriba y hacia abajo, lo que requiere el uso de las etiquetas de compra/venta en la estructura de datos de la línea de cuadrícula que acabamos de construir (por ejemplo: {“buy”:false,“sell “:false,“precio”:5}).
Gracias por leer. Seguiremos explicando y aprendiendo en el próximo número.