Esta estrategia se llama
La estrategia se basa principalmente en dos indicadores técnicos:
Indicador de tendencia: Indicador STC para determinar la dirección de la tendencia. El STC incluye la línea del indicador MACD, Estocástico y STC. Una ruptura ascendente desde la zona 0-25 indica una tendencia alcista, mientras que una ruptura descendente desde la zona 75-100 indica una tendencia bajista.
Crossover de media móvil: media móvil simple rápida (período predeterminado 35) cruza por encima/por debajo de la SMA lenta (período predeterminado 200). Una señal alcista se activa cuando la SMA rápida cruza por encima de la SMA lenta. Una señal bajista se activa en el cruce opuesto.
La lógica de las señales de negociación se define de la siguiente manera:
Señales largas: STC rompe por encima de la línea 25, SMA rápida está por encima de SMA lenta y el precio de cierre está por encima de SMA rápida.
Señal corto: STC rompe por debajo de la línea 75, SMA rápida está por debajo de SMA lenta y el precio de cierre está por debajo de SMA rápida.
Las ventajas de esta estrategia incluyen:
STC determina la tendencia general, mientras que los MAs dobles generan señales de entrada específicas.
Períodos de media móvil personalizables. Los períodos de media móvil pueden optimizarse para diferentes condiciones de mercado.
El STC identifica los niveles de sobrecompra/sobreventa para evitar comprar los tops y vender los bottoms. Las paradas objetivo establecen un rango de ganancias/pérdidas de 400 puntos.
Hay algunos riesgos a tener en cuenta:
El potencial de falsas rupturas STC necesita ser confirmado por la acción del precio.
Más señales falsas de cruces de MA. Requiere ajuste de los períodos de MA.
Sólo negocia en una dirección a la vez limita el espacio para las posiciones abiertas considera permitir el comercio bidireccional
No se maneja el riesgo de diferencias en el comercio de divisas de margen.
Las posibles vías de optimización incluyen:
Ajustar los parámetros de sobrecompra/sobreventa de STC.
Optimizar los períodos de admisión para mejorar la fiabilidad de la señal cruzada.
Añadir filtros adicionales como Bandas de Bollinger para reducir las operaciones falsas de ruptura.
Implementar una lógica comercial bidireccional para aumentar la capacidad.
Añadir una lógica de stop loss para controlar la pérdida por operación.
En resumen, esta estrategia combina indicadores de tendencia y cruce de promedios móviles para determinar la dirección de la tendencia y el momento de las entradas. Con los controles de riesgo adecuados, puede lograr buenos rendimientos. La lógica sencilla hace que sea fácil de entender y optimizar en diferentes condiciones de mercado, adecuada para principiantes.
/*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")