En los artículos anteriores, hemos aprendido los conceptos básicos de muchas criptomonedas, programación y comercio cuantitativo. Finalmente, podemos pasar al tema y hablar sobre la estrategia en sí. En este artículo, aprenderemos a implementar una estrategia simple juntos.
Para
En este momento, alguien puede haber dicho: ¡No puedo escribir código! ¡Me dolía la cabeza cuando veía el código!
Eso es cierto. es de hecho bastante difícil para alguien que no es importante en software informático o no ha estado involucrado en el trabajo de programación para desarrollar una estrategia de comercio completa por sí mismos. porque usted tiene que hacer una serie de pre-trabajo desde el principio de acoplamiento de la interfaz de intercambio (tal vez su programa de lógica de comercio es sólo 100 líneas, pero el otro trabajo de codificación a hacer es bastante mucho, y es más difícil que escribir la lógica de comercio.)
En este momento, si tiene una herramienta práctica, es bastante simple, al menos la dificultad se reduce en un 70%. Puede imaginar lo conveniente y rápido que es si solo escribe la lógica de negociación en sí, y todas las demás conexiones de interfaz de intercambio, verificación de firmas, archivos de configuración, construcción de entorno operativo, escritura de interfaz de interfaz de usuario, escritura interactiva y así sucesivamente están todos listos.
¿No lo cree? ¡Vamos a probarlo!
La herramienta que utilizamos es: FMZ Quant Trading Platform (FMZ.COMEl núcleo del diseño de la estrategia de red en realidad es la lógica de la red de compra y venta, por lo que esto es algo que debe ser aclarado antes de diseñar una estrategia.
El siguiente es el flujo básico de diseño de una estrategia:
En pocas palabras, es lo que, cómo y qué funciones va a hacer su estrategia. Esta información se puede escribir en un documento (cuaderno de notas o algo así) antes de escribir el código de la estrategia. Es muy simple desarrollar estrategias en FMZ, La plataforma ha preparado soluciones para estos requisitos para usted, y no necesito escribir estos requisitos en un cuaderno de notas (que no es muy conveniente de administrar). Escribo los requisitos de la estrategia en las notas de estrategia directamente.
Sólo recuerde guardar la estrategia después de terminar, y luego escribiremos los requisitos de la estrategia (los requisitos de la estrategia no son estáticos, y también es posible registrar mientras se desarrolla).
XXX_USDT
, como por ejemploBTC_USDT
.Para ideas poco claras, podemos dibujar y analizar al principio.
Una cuadrícula puede ser construida en direcciones ascendentes y descendentes desde el precio inicial como punto base. La cuadrícula es una línea de compra y venta capa por capa.
Escribe una función que construye la estructura de datos de la red:
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
}
Puede ejecutar esta función por separado para ver el efecto. [Debugging Tools] o [Backtesting System] en FMZ son muy convenientes para depurar códigos tan pequeños.
Los datos construidos pueden 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}
]
Después de analizar la estructura de datos de la cuadrícula, necesitamos considerar la lógica comercial específica de la estrategia de la cuadrícula. De hecho, la lógica de compra y venta es muy simple. Ya lo hemos dibujado en el gráfico anterior, comprar significa cruzar una cierta línea debajo, y vender significa cruzar una cierta línea arriba. Entonces, ¿cómo se muestra el cruce de arriba y abajo? También es muy simple, solo podemos juzgar comparando las posiciones de precios de dos momentos.
Todavía usamos la tabla anterior.
t1 es un momento, t2 es un momento después de t1, para juzgar el recorrido por encima de la línea C, sólo tenemos que juzgarP1 < C
yP2 > C
¿ Qué pasa?
Del mismo modo, para juzgar el cruzado por debajo de la línea B, sólo tenemos que determinarP1 > B
yP3 < B
¿ Qué pasa?
En ese momento, sólo tenemos que cruzar (la travesía se conoce comúnmente comoMira uno por uno.) cada línea en la matriz de la cuadrícula, y juzgar si cruzarlo por encima o por debajo. ¿Es simple?
Habiendo captado el cruce de precios por encima y por debajo, ¿es posible realizar una orden cuando se activan estas acciones?
Obviamente, no es posible. Si el precio cruza por encima y por debajo repetidamente en una línea, ¿no desperdiciaría la tarifa por trending repetido en el mismo nivel de precio? Por lo tanto, todavía hay una serie de condiciones de juicio para desencadenar el cruce de precios por encima y por debajo, lo que requiere el uso de los marcadores de compra / venta en la estructura de datos de línea de cuadrícula que acabamos de construir (por ejemplo: {
Gracias por leer, seguiremos explicándolo y aprendiendo en el próximo número.