Estrategia de inversión de doble clic de Quant Trading

El autor:¿ Qué pasa?, Fecha: 2023-11-22 10:03:04
Las etiquetas:

img

Resumen general

Esta estrategia utiliza primero el patrón 123 para determinar la señal de reversión, y luego combina el oscilador de volumen Klinger como un filtro para implementar la estrategia de ganancia cuantitativa de doble clic para capturar eficientemente las oportunidades de reversión.

Principio

La estrategia consta de dos partes:

  1. Modelo para determinar señales de reversión: cuando el precio de cierre cae continuamente durante 2 días consecutivos y el tercer día cierra positivo, y el indicador de acciones está en un nivel bajo durante mucho tiempo; cuando el precio de cierre aumenta continuamente durante 2 días consecutivos y el tercer día cierra negativo, y el indicador de acciones está en un nivel alto durante corto.

  2. Sección del oscilador de volumen de Klinger: El oscilador de volumen de Klinger combina el rango de fluctuación de precios y los cambios en el volumen de operaciones para determinar las entradas y salidas de capital.

Por último, la estrategia combina las señales de las dos partes anteriores y los dobles clics para determinar la entrada final.

Análisis de ventajas

La mayor ventaja de esta estrategia es que combina patrones de reversión e indicadores de volumen para capturar de manera eficiente las oportunidades de reversión.

Análisis de riesgos

Los principales riesgos de esta estrategia se encuentran en el problema del juicio del patrón de inversión y la configuración de parámetros. Debido al retraso en las señales de inversión, debe asegurarse de que los parámetros se establezcan razonablemente para evitar perder el mejor momento de inversión. Además, los propios patrones de inversión pueden fallar.

Para reducir los riesgos, puede optimizar los parámetros para hacer que las señales de reversión sean más sensibles y oportunas.

Dirección de optimización

El espacio de optimización principal para esta estrategia está en el ajuste de parámetros y la adición de otros juicios auxiliares. Específicamente, es posible acortar adecuadamente los parámetros del indicador de acciones para optimizar la sensibilidad de la discriminación de patrones. También es factible combinarlo con los indicadores y patrones actuales, como agregar cruces doradas y cruces mortales del MACD, o bajos múltiples de arriba/abajo dobles y otros juicios.

Además, considere ajustar dinámicamente las condiciones de stop loss y take profit para hacer que la estrategia sea más adaptable a los cambios del mercado.

Resumen de las actividades

Esta estrategia integra la aplicación de teorías clásicas de reversión e indicadores técnicos de volumen para capturar eficientemente las oportunidades de reversión.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-11-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/12/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The Klinger Oscillator (KO) was developed by Stephen J. Klinger. Learning 
// from prior research on volume by such well-known technicians as Joseph Granville, 
// Larry Williams, and Marc Chaikin, Mr. Klinger set out to develop a volume-based 
// indicator to help in both short- and long-term analysis.
// The KO was developed with two seemingly opposite goals in mind: to be sensitive 
// enough to signal short-term tops and bottoms, yet accurate enough to reflect the 
// long-term flow of money into and out of a security.
// The KO is based on the following tenets:
// Price range (i.e. High - Low) is a measure of movement and volume is the force behind 
// the movement. The sum of High + Low + Close defines a trend. Accumulation occurs when 
// today's sum is greater than the previous day's. Conversely, distribution occurs when 
// today's sum is less than the previous day's. When the sums are equal, the existing trend 
// is maintained.
// Volume produces continuous intra-day changes in price reflecting buying and selling pressure. 
// The KO quantifies the difference between the number of shares being accumulated and distributed 
// each day as "volume force". A strong, rising volume force should accompany an uptrend and then 
// gradually contract over time during the latter stages of the uptrend and the early stages of 
// the following downtrend. This should be followed by a rising volume force reflecting some 
// accumulation before a bottom develops.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

KVO(TrigLen,FastX,SlowX) =>
    pos = 0.0
    xTrend = iff(hlc3 > hlc3[1], volume * 100, -volume * 100)
    xFast = ema(xTrend, FastX)
    xSlow = ema(xTrend, SlowX)
    xKVO = xFast - xSlow
    xTrigger = ema(xKVO, TrigLen)
    pos := iff(xKVO > xTrigger, 1,
    	     iff(xKVO < xTrigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Klinger Volume Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
TrigLen = input(13, minval=1)
FastX = input(34, minval=1)
SlowX = input(55, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKVO = KVO(TrigLen,FastX,SlowX)
pos = iff(posReversal123 == 1 and posKVO == 1 , 1,
	   iff(posReversal123 == -1 and posKVO == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Más.