Cómo escribir una estrategia comercial en la plataforma FMZ Quant
Después de estudiar las secciones anteriores, finalmente estamos listos para escribir una estrategia de negociación cuantitativa. Este será el paso más importante en su entrada en el comercio cuantitativo desde el comercio manual. De hecho, no es tan misterioso. Escribir una estrategia no es más que realizar sus ideas con código. Esta sección implementará una estrategia de negociación cuantitativa desde cero, después del estudio, todos estarán familiarizados con cómo escribir estrategias en el sistema FMZ Quant.
En primer lugar, abra el sitio web oficial de la FMZ Quant, inicie sesión en su cuenta. haga clic en
En el capítulo anterior, presenté una estrategia de promedio móvil. Es decir: si el precio es mayor que el precio promedio de los últimos 10 días, abrir una posición larga. si el precio es menor que el precio promedio de los últimos 10 días, corta. Sin embargo, aunque el precio puede reflejar directamente el estado del mercado, todavía habrá muchas señales falsas de avance; por lo tanto, debemos actualizar y mejorar esta estrategia.
Primero, elija un promedio móvil de período más grande para juzgar la dirección de la tendencia. Al menos la mitad de las señales de ruptura falsas han sido filtradas. El promedio móvil de ciclo grande es lento, pero será más estable. Luego, para aumentar la tasa de éxito de la posición de apertura, agregamos otra condición. Este promedio móvil de ciclo grande es al menos ascendente; finalmente, la relación posicional relativa entre el precio, el promedio móvil a corto plazo y el promedio móvil a largo plazo se utiliza para formar una estrategia comercial completa.
Con las ideas estratégicas anteriores, podemos tratar de construir esta lógica estratégica. La lógica aquí no es dejar que usted calcule la ley del movimiento celeste, no es tan complicado. No es más que expresar las ideas estratégicas anteriores en palabras.
Posición larga abierta: Si actualmente no existe una posición y el precio de cierre es mayor que el promedio móvil a corto plazo, y el precio de cierre es mayor que el promedio móvil a largo plazo, y el promedio móvil a corto plazo es mayor que el promedio móvil a largo plazo, y el promedio móvil a largo plazo está aumentando.
Posición corta abierta: Si actualmente no existe una posición, y el precio de cierre es inferior a la media móvil a corto plazo, y el precio de cierre es inferior a la media móvil a largo plazo, y la media móvil a corto plazo es inferior a la media móvil a largo plazo, y la media móvil a largo plazo está disminuyendo.
Cierre de posición larga: Si actualmente mantiene una posición larga y el precio de cierre es inferior a la media móvil a largo plazo, o la media móvil a corto plazo es inferior a la media móvil a largo plazo, o la media móvil a largo plazo está disminuyendo.
Posición corta cerrada: Si la posición corta actual se mantiene y el precio de cierre es mayor que el promedio móvil a largo plazo, o el promedio móvil a corto plazo es mayor que el promedio móvil a largo plazo, o el promedio móvil a largo plazo está aumentando.
Lo anterior es la lógica de toda la estrategia, si convertimos la versión textual de esta estrategia en código, incluirá: la adquisición de la cotización de mercado, el cálculo de indicadores, la puesta de orden para abrir y cerrar posición, estos tres pasos.
La primera cosa es obtener la cotización de mercado. En esta estrategia, sólo necesitamos obtener el precio de cierre. En el lenguaje M, la API para obtener el precio de cierre es: CLOSE, lo que significa que sólo necesita escribir CLOSE en el área de codificación para obtener el último precio de cierre de la línea K.
El siguiente paso es calcular el indicador. En esta estrategia, utilizaremos dos indicadores, a saber: promedio móvil a corto plazo y promedio móvil a largo plazo. Asumimos que el promedio móvil a corto plazo es el promedio móvil de 10 períodos y el promedio móvil a largo plazo es el promedio móvil de 50 períodos. ¿Cómo usar el código para representar estos dos?
MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50
En el comercio manual, podemos ver de un vistazo si el promedio móvil de 50 períodos está subiendo o bajando, pero ¿cómo lo expresamos en código? Piense cuidadosamente, juzgando si el promedio móvil está subiendo o no, el promedio móvil actual de la línea K es mayor que el promedio móvil de la línea K anterior? o es más alto que dos líneas K anteriores? Si la respuesta es sí, entonces podemos decir que el promedio móvil está arrasando. También podemos juzgar la caída por el mismo método.
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
Tenga en cuenta que en las líneas 8 y 9 del código anterior, la palabra
El paso final es colocar pedidos, solo necesita llamar a la API de pedidos de FMZ Quant
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position
Tenga en cuenta que en las líneas 13 y 14 de lo anterior, la palabra
Tenga en cuenta que
Lo anterior es todo el proceso de escribir una estrategia de trading en la plataforma FMZ Quant utilizando el lenguaje de programación M. Hay tres pasos en total: desde tener una idea de estrategia, hasta el pensamiento estratégico y el uso de texto para describir la lógica, y finalmente la implementación de una estrategia de trading completa con código. Aunque esta es una estrategia simple, el proceso de implementación específico es similar a la estrategia compleja, excepto que la estrategia y la estructura de datos de la estrategia son diferentes. Por lo tanto, siempre que entienda el proceso de estrategia cuantitativa en esta sección, puede realizar investigación y práctica de estrategia cuantitativa en la plataforma FMZ Quant.
Trate de aplicar las estrategias de esta sección por su cuenta.
En el caso de las entidades de crédito, el importe de las pérdidas y de las pérdidas derivadas de las operaciones de crédito se determinará en función de la situación de las operaciones de crédito.
En el desarrollo de estrategias de comercio cuantitativas, los lenguajes de programación son como armas, un buen lenguaje de programación puede ayudarlo a obtener el doble del resultado con la mitad del esfuerzo. Por ejemplo, hay más de una docena de los lenguajes más utilizados Python, C ++, Java, C #, EasyLanguage y M en el mundo del comercio cuantitativo. ¿Qué arma debe elegir para luchar en el campo de batalla?