En la carga de los recursos... Cargando...

2.4 Cómo escribir una estrategia de trading en la plataforma FMZ Quant

El autor:La bondad, Creado: 2019-06-25 12:04:22, Actualizado: 2023-11-13 19:50:01

img

Cómo escribir una estrategia comercial en la plataforma FMZ Quant

Resumen de las actividades

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.

Estoy listo.

En primer lugar, abra el sitio web oficial de la FMZ Quant, inicie sesión en su cuenta. haga clic en DashboardstrategyAdd Strategy. tenga en cuenta que antes de comenzar a escribir el código, debe seleccionar los tipos de lenguaje de programación. en esta sección vamos a utilizar JavaScript. seleccione desde el menú desplegable. además, la plataforma FMZ Quant también Soporte para Python, C ++, y programación visual.

Ideas estratégicas

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.

img

Estrategia lógica

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.

M Estrategia lingüística

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 AND, es un Operador Lógico. lo que significa que cuando ambos lados de la condición and son ciertos, toda la oración es verdadera, de lo contrario es falsa.

El paso final es colocar pedidos, solo necesita llamar a la API de pedidos de FMZ Quant para ejecutar la operación de compra y venta después del código lógico.

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 OR, que es otro operador lógico, en el lenguaje M significa or, traducirlo al inglés: si el precio de cierre de la línea K actual es menor que el promedio móvil de 50 períodos de la línea K actual, o el promedio móvil de 10 períodos de la línea K actual es menor que el promedio móvil de 50 períodos de la línea K actual, el valor se calcula como Sí. Y colocar el pedido inmediatamente; de lo contrario, el cálculo es no y no hacer nada.

Tenga en cuenta que AND y OR son todos operadores lógicos en el lenguaje M:

  • AND es cuando todas las condiciones son , y la condición final es ;

  • OR es cuando mientras cualquiera de las condiciones sea , la condición final es .

En resumen

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.

Ejercicios extraescolares

  1. Trate de aplicar las estrategias de esta sección por su cuenta.

  2. 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.

Notificación de la siguiente sección

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?


Relacionados

Más.