Stanley Kroll mencionó en su libro
La estrategia compartida en este artículo se basa en este principio. La línea de promedio móvil se utiliza como la dirección de la tendencia. La relación entre el precio de cierre, el precio más alto y el precio más bajo se utiliza como la señal para abrir la posición. Bajo la premisa de que la tendencia del precio no ha cambiado significativamente, tomar beneficios proactivamente en lotes según el porcentaje.
Hay un viejo dicho en el mundo del trading:
En pocas palabras, las posiciones de cierre no son más que dos situaciones: tomar ganancias y detener pérdidas. Por ejemplo, si tienes suerte, el precio comienza a subir después de comprar. En este momento, debes considerar el problema de tomar ganancias. De lo contrario, solo podemos ganar dinero en el "look", no tomamos ganancias en el lugar correcto, y finalmente lo perdemos. Si no tienes suerte, el precio comenzará a caer poco después de la compra. En este momento, debes considerar el stop loss, o debes considerar las opciones de stop loss antes de abrir la posición, de lo contrario, la pequeña pérdida acumulará una gran pérdida.
Desde un punto de vista estadístico, la mayoría de las posiciones de pérdida volverán al precio de costo en el mercado futuro. Sin embargo, si se encuentra con una pequeña probabilidad de una gran tendencia inversa, puede perder todas las ganancias anteriores o incluso todo el fondo. Por lo tanto, para nuestros inversores minoristas, podemos obtener grandes ganancias; podemos obtener pequeñas ganancias; podemos realizar pequeñas pérdidas, pero nunca podemos perder mucho dinero. En una palabra: Stop loss te mantiene vivo, y tomar ganancias te hace vivir mejor.
A veces, cuando intuitivamente tomamos ganancias, puede haber una gran ola de movimiento del precio del mercado de que solo ganamos una pequeña cantidad de ella. Aunque no es una transacción fallida, habrá una especie de arrepentimiento de la mentalidad, por lo que esta estrategia utilizará el método de toma de ganancias de varios niveles, es decir, cuando la ganancia flotante alcance el 5%, se activa el modo de toma de ganancias activa de primer nivel. Una vez que el 100% se retire del punto más alto de la ganancia flotante, tome el beneficio y cierre la posición; cuando la ganancia flotante alcance el 10%, se activa el modo de toma de ganancias activas de segundo nivel. Una vez que el 50% se retire del punto más alto de la ganancia flotante, tome la ganancia activa y cierre la posición; Cuando la ganancia flotante alcance el 20%, se activa la toma de ganancias activas de tres niveles. Una vez que se retire el 20% del punto más alto de la posición, la tendencia flotante y cierre la ganancia activa.
Define el carril superior
Define el carril inferior
Define la media móvil
Posiciones largas abiertas: el precio de cierre es mayor que la línea superior y la línea superior es mayor que la media móvil
Posición corta abierta: el precio de cierre es menor que el de la línea inferior y el de la línea inferior es menor que el promedio móvil
Cierre de la posición larga: el precio de cierre es inferior al de la línea inferior o el precio de cierre es inferior al promedio móvil
Cierre de la posición corta: el precio de cierre es mayor que la línea superior, o el precio de cierre es mayor que la media móvil
Posición larga de nivel 1: el precio más alto después de la apertura de la posición es mayor o igual al precio de apertura multiplicado por el primer nivel de ganancia inicial, y el precio más bajo es menor o igual al precio más alto después de la apertura de la posición menos el beneficio variable multiplicado por el valor de activación de la posición de primer nivel.
Posición larga de nivel 2: el precio más alto después de la apertura de la posición es mayor o igual al precio de apertura multiplicado por el segundo nivel de ganancia inicial, y el precio más bajo es menor o igual al precio más alto después de la apertura de la posición menos el beneficio variable multiplicado por el valor de activación de la posición de segundo nivel.
Posición larga de nivel 3: el precio más alto después de la apertura de la posición es mayor o igual al precio de apertura multiplicado por el tercer nivel de ganancia inicial, y el precio más bajo es menor o igual al precio más alto después de la apertura de la posición menos el beneficio variable multiplicado por el valor de activación de la posición de tercer nivel.
Posición corta de nivel 1: el precio más bajo después de la apertura de la posición es igual o inferior al precio de apertura multiplicado por el primer nivel de ganancia inicial, y el precio más alto es mayor o igual al precio más bajo después de la apertura de la posición más el beneficio variable multiplicado por el valor de activación de la posición de primer nivel.
Posición corta de nivel 2: el precio más bajo después de la apertura de la posición es igual o inferior al precio de apertura multiplicado por el segundo nivel de ganancia inicial, y el precio más alto es mayor o igual al precio más bajo después de la apertura de la posición más el beneficio variable multiplicado por el valor de activación de la posición de segundo nivel.
Posición corta de nivel 3: el precio más bajo después de la apertura de la posición es igual o inferior al precio de apertura multiplicado por el tercer nivel de ganancia inicial, y el precio más alto es mayor o igual al precio más bajo después de la apertura de la posición más el beneficio variable multiplicado por el valor de activación de la posición de tercer nivel.
Posición larga Stop Loss: el precio de cierre es igual o inferior al precio de apertura multiplicado por el factor de stop loss
Posición corta Stop Loss: el precio de cierre es igual o inferior al precio de apertura multiplicado por el factor de stop loss
Basándonos en la lógica estratégica anterior, podemos implementar esta estrategia en la plataforma FMZ Quant.fmz.com> Iniciar sesión > Tablero > Biblioteca de estrategias > Nueva estrategia > Haga clic en el menú desplegable en la esquina superior derecha para seleccionar Mi idioma, comenzar a escribir la estrategia y prestar atención a los comentarios en el código de abajo.
En primer lugar, los parámetros que deben utilizarse en la estrategia: la longitud media de la línea, el rango de stop loss, el parámetro de toma de ganancias, etc., se definen como parámetros externos para facilitar la depuración y optimización de las pruebas.
/ / Define parameters
LENGTH := 100; // moving average parameter
STOP_LOSS := 3; // Stop Loss range
// Define the take profit parameter
STARTPER1 := 5; // Level 1 tracking take profit, start from profit reaches 5%
STOPPER1 := 100; // Level 1 tracking take profit, profit retracement 100% triggers it
STARTPER2 := 10; // Level 2 tracking take profit, start from profit reaches 10%
STOPPER2 := 50; // Level 2 tracking take profit, profit retracement 50% trigger it
STARTPER3 := 20; // Level 3 tracking take profit, start from profit reaches 20%
STOPPER3 := 20; // Level 3 tracking take profit, profit retracement 20% trigger
A continuación, establecer un rango de precios basado en el precio de hoy y ayer, y la fluctuación del precio de ayer. A través de este rango de precios y la relación relativa de posición con el promedio móvil, no sólo la compra y venta de la señal de posiciones abiertas puede ser seguido bien, sino también reducir el número de posiciones abiertas en el período de choque y la magnitud de la retirada también.
/ / Define the upper and lower intervals
NN := BARSLAST(DATE <> REF(DATE, 1)) + 1; // current number of cycles
TODAY_OPEN := VALUEWHEN(NN = 1, O); // Opening price of the day
TODAY_HIGH := HHV(H, NN); // The highest price of the day
TODAY_LOW := LLV(L, NN); // lowest price of the day
YESTERDAY_HIGH := REF(TODAY_HIGH, NN); // Yesterday's highest price
YESTERDAY_LOW := REF(TODAY_LOW, NN); // yesterday's lowest price
BAND := YESTERDAY_HIGH - YESTERDAY_LOW; // Yesterday amplitude
UPPERLINE : TODAY_OPEN + BAND; // upper line
LOWERLINE : TODAY_OPEN - BAND; // lower line
MYMA:MA(CLOSE, LENGTH); // Moving average
Luego, es el código lógico para abrir y cerrar posiciones. Cuando el precio de cierre es mayor que el tren superior y el tren superior es mayor que el promedio móvil, abra la posición larga; cuando el precio de cierre es menor que el tren inferior y el tren inferior es menor que el promedio móvil, abra la posición corta; la condición de la posición de cierre es justo opuesta a la condición de la posición de apertura: cuando el precio de cierre es menor que el tren inferior, o el precio de cierre es menor que el promedio móvil, cierre la posición larga; cuando el precio de cierre es mayor que el tren superior, o el precio de cierre es mayor que el promedio móvil, cierre la posición corta.
// open the position
C > UPPERLINE AND UPPERLINE > MYMA, BK; // Open long position
C < LOWERLINE AND LOWERLINE < MYMA, SK; // Open short position
// close the position
C < LOWERLINE OR C < MYMA, SP; // Close long position
C > UPPERLINE OR C > MYMA, BP; // Close short position
Por último, es la parte de stop-loss y take-profit que mencionamos en este artículo. Ya sea que sea una posición larga o corta para obtener ganancias, se divide en tres etapas. Cada etapa se ajusta automáticamente de acuerdo con las fluctuaciones actuales de los precios del mercado y la rentabilidad. Y este ajuste se establece en parámetros externos, puede hacer ajustes finos de acuerdo con diferentes condiciones del mercado y estado de variedad.
El stop loss también es una parte de nuestra estrategia que debemos considerar, porque es imposible ganar dinero abriendo cualquier posición. A veces el mercado es contrario a nuestras expectativas, por lo que el stop loss es absolutamente necesario. El stop loss de este artículo es simple y
// long position take profit
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER1) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER1, SP; // level 1
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER2) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER2, SP; // level 2
BKHIGH >= BKPRICE * (1 + 0.01 * STARTPER3) AND LOW <= BKHIGH - (BKHIGH - BKPRICE) * 0.01 * STOPPER3, SP; // level 3
// short position take profit
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER1) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER1, BP; // level 1
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER2) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER2, BP; // level 2
SKLOW <= SKPRICE * (1 - 0.01 * STARTPER3) AND HIGH >= SKLOW + (SKPRICE - SKLOW) * 0.01 * STOPPER3, BP; // level 3
// stop loss
C <= BKPRICE * (1 - STOP_LOSS * 0.01), SP; // long position
C >= SKPRICE * (1 + STOP_LOSS * 0.01), BP; // short position
Además, también establecemos el método de delegación de pedidos, así como el filtrado de señales, para hacer que el procesamiento sea más completo.
// Set the order commission method
SETSIGPRICETYPE(BK,NEW_ORDER);
SETSIGPRICETYPE(SK,NEW_ORDER);
SETSIGPRICETYPE(BP,NEW_ORDER);
SETSIGPRICETYPE(SP,NEW_ORDER);
// Set the signal filtering method
AUTOFILTER;
Entorno de ensayo
Informe sobre el rendimiento
Curva de los fondos
Haga clic para copiar el código fuente de la estrategia completa sin configurarhttps://www.fmz.com/strategy/166753