
Esta estrategia se llama estrategia de cruce de la línea de la mediana de la brecha de la tendencia de la tendencia, y la idea principal es combinar el indicador de la tendencia y el cruce de la mediana para juzgar el exceso de la brecha. En concreto, esta estrategia utiliza el ciclo de tendencia de Schaff (Schaff Trend Cycle, STC) y el cruce de las dos medias.
La estrategia se basa en dos indicadores técnicos:
Indicador de tendencia: Indicador STC, que determina la dirección de la tendencia. El indicador STS contiene el indicador MACD, el indicador Stoch y la línea de indicadores STC.
Cruce de línea media: cruce entre una media móvil simple rápida (de ciclo 35 por defecto) y una media móvil simple lenta (de ciclo 200 por defecto). Cruce de línea lenta en la línea rápida como señal de múltiples cabezas, cruce de línea lenta bajo la línea rápida como señal de cabezas vacías.
La lógica de las señales de negociación de esta estrategia es la siguiente:
Hacer más señales: Hacer más cuando el indicador STC rompa la línea 25 hacia arriba, y el promedio móvil rápido y simple es más alto que el promedio móvil rápido y simple, y el precio es más alto que el promedio móvil rápido y simple.
Señales de vacío: Cuando el indicador STC rompa la línea 75 hacia abajo, y el promedio móvil rápido y simple está por debajo del promedio móvil rápido y simple, y el precio está por debajo del promedio móvil rápido y simple, se vacía.
La estrategia tiene las siguientes ventajas:
La combinación de un indicador de tendencia y un indicador de línea media, las señales de negociación son más confiables. El indicador STC determina la dirección de la tendencia general, y el doble indicador de línea media determina la entrada específica.
Los parámetros de la línea media se pueden ajustar según el mercado y la estrategia de optimización.
Riesgo controlado. El indicador STC determina las zonas de sobreventa y sobrecompra, evitando la búsqueda de un techo en las zonas extremas. El objetivo de stop loss establece un rango de stop loss de 400 puntos.
La estrategia también tiene ciertos riesgos:
El indicador STC puede presentar falsas rupturas. Se requiere un juicio en combinación con la entidad de precios.
El cruce de la línea media puede generar más señales falsas. Se requiere ajustar el parámetro de la línea media.
Solo puede hacer transacciones unilaterales. El espacio es limitado.
El riesgo de deslizamiento de las operaciones de garantía de divisas sin procesar. El deslizamiento en el disco duro puede ser mayor.
Esta estrategia puede ser optimizada en los siguientes aspectos:
Ajustar los parámetros de STC para optimizar el juicio de sobrecompra y sobreventa.
Optimización del ciclo de la línea media y mejora de la fiabilidad de la señal de cruce.
Añadir otros indicadores de filtración, filtrando falsas brechas. Por ejemplo, la banda de Brin.
Aumento de la lógica de transacción bidireccional. Reducción del riesgo espacial.
Añadir la lógica de stop loss. Controlar la pérdida individual.
Esta estrategia utiliza un conjunto de indicadores de tendencia y un indicador de cruce de línea para determinar la dirección de la tendencia y el punto de entrada específico. Si se aseguran ciertas condiciones de control de riesgo, se pueden obtener mejores ganancias. El modelo de estrategia es simple, claro y fácil de entender, y también facilita el ajuste de parámetros y la optimización de la función según los diferentes mercados.
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Shaff Trend Cycle coded by Alex Orekhov (everget)
// Strategy and its additional conditions provided by greenmask
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("STC", shorttitle="STC")
fastLength = input(title="MACD Fast Length", type=input.integer, defval=23)
slowLength = input(title="MACD Slow Length", type=input.integer, defval=50)
cycleLength = input(title="Cycle Length", type=input.integer, defval=10)
d1Length = input(title="1st %D Length", type=input.integer, defval=3)
d2Length = input(title="2nd %D Length", type=input.integer, defval=3)
src = close
highlightBreakouts = input(title="Highlight Breakouts ?", type=input.bool, defval=true)
macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))
stc = ema(kd, d2Length)
stc := stc > 100 ? 100 : stc < 0 ? 0 : stc
stcColor = not highlightBreakouts ? (stc > stc[1] ? color.green : color.red) : #ff3013
stcPlot = plot(stc, title="STC", color=stcColor, transp=0)
upper = 75
lower = 25
transparent = color.new(color.white, 100)
upperLevel = plot(upper, title="Upper", color=color.gray)
hline(50, title="Middle", linestyle=hline.style_dotted)
lowerLevel = plot(lower, title="Lower", color=color.gray)
fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)
upperFillColor = stc > upper and highlightBreakouts ? color.green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? color.red : transparent
fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
targetvalue = input(title="Target/stop", type=input.integer, defval=400)
ma1length = input(title="SMA1", type=input.integer, defval=35)
ma2length = input(title="SMA2", type=input.integer, defval=200)
ma1 = ema(close,ma1length)
ma2 = ema(close,ma2length)
bullbuy = crossover(stc, lower) and ma1>ma2 and close>ma1
bearsell = crossunder(stc, upper) and ma1<ma2 and close<ma1
if (bullbuy)
strategy.entry("Riposte", strategy.long, ordersize)
strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue)
if (bearsell)
strategy.entry("Riposte", strategy.short, ordersize)
strategy.exit( "Riposte close", from_entry="Riposte", qty_percent=100, profit=targetvalue,loss=targetvalue)
//plotshape(bullbuy, title= "Purple", location=location.belowbar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")
//plotshape(bearsell, title= "Purple", location=location.abovebar, color=#006600, transp=0, style=shape.circle, size=size.tiny, text="Riposte")