
Esta estrategia se basa en los indicadores técnicos de las medias móviles y el volumen de transacciones, y diseña una estrategia cuantitativa de seguimiento de la caída de la caída. Cuando el precio de la acción se encuentra en la línea de los 20 días, y el volumen de compras de ese día es mayor que el volumen de ventas y mayor que el volumen de transacciones promedio de los últimos n días, se considera que el mercado está en un estado de cabeza múltiple, y se compra; cuando el precio de la acción se desvía y el volumen de ventas del día es mayor que el volumen de compras y mayor que el volumen de transacciones promedio de los últimos n días, se considera que el mercado está en un estado de cabeza vacía, y se vende.
La estrategia se basa principalmente en dos indicadores:
Línea de doble promedio: calcula la línea de 20 días y la línea de 60 días, cuando la línea de 20 días cruza la línea de 60 días, el mercado se considera en un estado de alza; cuando la línea de 20 días cruza la línea de 60 días, el mercado se considera en un estado de baja.
Cantidad de transacciones: se calcula el volumen de compras y ventas de transacciones por día, si el volumen de compras es mayor que el volumen de ventas y mayor que el volumen de transacciones promedio de los últimos n días, se considera una operación de más de una cabeza; si el volumen de ventas es mayor que el volumen de compras y mayor que el volumen de transacciones promedio de los últimos n días, se considera una operación de cabeza vacía.
Las estrategias y la lógica de las operaciones concretas son las siguientes:
Entrada múltiple: cuando el precio de cierre está en la línea del día 20 y el volumen de compras es mayor que el volumen de ventas y el volumen de transacciones promedio de los últimos n días, se considera que el mercado está en un estado de venta, se calcula la banda de Brin según la fluctuación. Si el precio de cierre se encuentra entre el medio y el bajo de la banda de Brin, la entrada hace más.
Entrada en blanco: cuando el precio de cierre cae por debajo de la línea y el volumen de ventas del día es mayor que el volumen de compras y el volumen de transacciones promedio de los últimos n días, se considera que el mercado está en un estado de baja, se calcula la banda de Brin en función de la volatilidad, y si el precio de cierre es menor que la banda de Brin, la entrada está cerrada.
Detener y detener: establecer límites razonables para detener y detener, fijar ganancias o reducir las pérdidas. Por ejemplo, detenerse cuando el precio de la acción aumenta un 5% en comparación con el precio de entrada; detenerse cuando la pérdida alcanza el 10%; o detenerse cuando el precio de la acción retrocede un poco después de alcanzar un máximo reciente.
La estrategia tiene las siguientes ventajas:
La combinación de la línea de doble promedio y el indicador de volumen de transacciones evita la zona ciega de un solo indicador técnico.
Las bandas de Brin utilizan diferentes parámetros para determinar el precio de la transacción específica, lo que hace que la entrada sea más precisa.
Las estrategias de stop-loss son razonables para bloquear ganancias y controlar el riesgo.
La retroalimentación es buena, los ingresos son estables y se pueden usar en operaciones cuantitativas.
La estrategia también tiene sus riesgos:
Las estrategias de doble línea son propensas a generar señales erróneas y requieren la combinación de indicadores de potencia para filtrar.
La configuración incorrecta de los parámetros de la banda de Bryn puede causar que las entradas sean demasiado frecuentes o escasas.
La configuración incorrecta del punto de parada fijo puede afectar los beneficios de la estrategia.
Se requiere una gran cantidad de datos históricos para la verificación de retroalimentación, y es posible que se produzcan pérdidas accidentales en el disco.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros del sistema de medianías para encontrar la combinación de medianías óptima.
Optimización de los parámetros de la banda de Bryn para una entrada más precisa.
Ajuste dinámico de los puntos de parada y pérdidas, estableciendo un ratio de ganancias y pérdidas razonables según las condiciones del mercado.
Aumentar la precisión de la estrategia mediante la adición de otros indicadores técnicos, como MACD, KD, etc.
Utiliza métodos de aprendizaje automático para buscar parámetros de ventaja y hacer que las estrategias sean más robustas.
En general, esta estrategia es una estrategia de comercio cuantitativo muy práctica, con un buen rendimiento de retroalimentación, fácil de implementar, con riesgos controlables, y es una estrategia estable adecuada para el mercado real, que vale la pena que los comerciantes cuantitativos aprendan. Por supuesto, el espacio para optimizar la estrategia sigue siendo grande, y esperamos que más expertos en comercio cuantitativo lo mejoren.
/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KAIST291
//@version=4
strategy("prototype",initial_capital=0.01,commission_type=strategy.commission.percent,commission_value=0.1, format=format.volume, precision=0,overlay=true)
// SETTING //
length1=input(1)
length3=input(3)
length7=input(7)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=(close>Supper and BV>SV and BV>Davgvol)
bull2=(close>ma20 and BV>SV and BV>Davgvol)
bux =(close<Supper and close>Slower and volume<Wavgvol)
bear=(close<Slower and close<lower and SV>BV and SV>Wavgvol)
hi=highest(exit,10)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>ma3 and ma20>ma60 and rsi<70)
strategy.entry("Long",strategy.long,0.1)
if (strategy.position_avg_price*1.05<close)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.999<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.997<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (highestPriceAfterEntry*0.995<close and close>strategy.position_avg_price*1.002)
strategy.close("Long",0.1)
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
strategy.close("Long",0.1)
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////