
La estrategia utiliza los indicadores técnicos de acciones STC, el promedio móvil MA y el promedio de fluctuación real ATR, combinado con varios indicadores técnicos para determinar la tendencia y lograr un comercio de seguimiento de tendencias más estable.
El indicador STC determina la reversión de la tendencia. El indicador utiliza la línea rápida para ralentizar la línea, luego se realiza un segundo proceso de suavización, formando una señal de tendencia consistente. Cuando el indicador cruza el eje 0 en la parte superior es una señal de compra, y cuando cruza el eje 0 en la parte inferior es una señal de venta.
Los promedios móviles MA determinan la dirección de la tendencia. Cuando el precio de la acción pasa por MA, se considera que sigue en alza en el mercado, para tener una señal de más de una sola. Cuando el precio pasa por MA, se considera que es una tendencia a la baja, para tener una señal de una sola.
El indicador ATR establece un stop loss. El ATR puede ajustar el punto de stop loss en función de la volatilidad del mercado. Y utiliza el ATR como señal de dirección comercial.
La estrategia toma la oportunidad de invertir el juicio del STC como el punto de venta y venta principal, con la MA como la tendencia auxiliar de juicio, con el ATR para el stop loss. Cuando el STC emita una señal de compra, si el MA también es una tendencia alcista, el ATR es ascendente, abre una orden adicional; Si el STC emite una señal de venta, si la MA es una tendencia descendente, el ATR es descendente, abre una orden en blanco.
La estrategia utiliza un conjunto de indicadores para determinar tendencias y puntos de inflexión, lo que mejora la precisión de las señales de negociación.
El indicador STC capta las señales de reversión y evita que las operaciones sean bloqueadas. El indicador MA filtra las señales de reversión inestables y asegura el seguimiento de la tendencia principal.
El indicador ATR puede establecer un stop loss en función de la volatilidad del mercado para evitar grandes pérdidas. Y utiliza el ATR como una señal auxiliar para juzgar la tendencia.
La combinación de múltiples indicadores puede generar una mayor capacidad de seguimiento de tendencias, y el retroceso histórico tiene una mejor capacidad de rentabilidad estable.
El índice STC tiene un retraso de tiempo y puede perder el mejor momento para que el precio se invierta.
El indicador MA tiende a retrasarse cuando los precios cambian drásticamente, lo que puede generar una señal errónea.
Los paros ATR pueden ser sacados en segundos, con una relajación adecuada del multiplicador ATR, o cerrados temporalmente en una gran tendencia.
Si bien la combinación de múltiples indicadores mejora la tasa de éxito, también aumenta la oportunidad de desencadenar un stop loss, se deben ajustar los parámetros de manera adecuada para reducir el stop loss innecesario.
Ajustar los parámetros STC para encontrar combinaciones de parámetros que respondan a la reversión más rápido
Optimización de los parámetros del ciclo MA para un mejor seguimiento de las tendencias
Efectos de los parámetros de prueba de diferentes multiplicadores de ATR en las estrategias
Intentar sustituir el STC por otros indicadores en busca de mejores coincidencias
Agrega algoritmos de aprendizaje automático para optimizar múltiples parámetros
Aumentar el juicio sobre las tendencias del Gran Ciclo, diferenciando las diferentes etapas del Gran Ciclo
La estrategia STC MA ATR utiliza un conjunto de tres indicadores para capturar el punto de inflexión de la tendencia y lograr un comercio de seguimiento de tendencia estable. La combinación de indicadores filtra las señales falsas y controla el riesgo de parada de pérdidas, con una mayor compatibilidad y estabilidad.
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 4h
basePeriod: 15m
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/
// © Romedius
//@version=5
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100)
// STC
EEEEEE=input(12,"Length",group="STC")
BBBB=input(26,"FastLength",group="STC")
BBBBB=input(50,"SlowLength",group="STC")
AAAA(BBB, BBBB, BBBBB) =>
fastMA = ta.ema(BBB, BBBB)
slowMA = ta.ema(BBB, BBBBB)
AAAA = fastMA - slowMA
AAAA
AAAAA(EEEEEE, BBBB, BBBBB) =>
//AAA=input(0.5)
var AAA = 0.5
var CCCCC = 0.0
var DDD = 0.0
var DDDDDD = 0.0
var EEEEE = 0.0
BBBBBB = AAAA(close,BBBB,BBBBB)
CCC = ta.lowest(BBBBBB, EEEEEE)
CCCC = ta.highest(BBBBBB, EEEEEE) - CCC
CCCCC := (CCCC > 0 ? ((BBBBBB - CCC) / CCCC) * 100 : nz(CCCCC[1]))
DDD := (na(DDD[1]) ? CCCCC : DDD[1] + (AAA * (CCCCC - DDD[1])))
DDDD = ta.lowest(DDD, EEEEEE)
DDDDD = ta.highest(DDD, EEEEEE) - DDDD
DDDDDD := (DDDDD > 0 ? ((DDD - DDDD) / DDDDD) * 100 : nz(DDDDDD[1]))
EEEEE := (na(EEEEE[1]) ? DDDDDD : EEEEE[1] + (AAA * (DDDDDD - EEEEE[1])))
EEEEE
mAAAAA = AAAAA(EEEEEE,BBBB,BBBBB)
stc = mAAAAA > mAAAAA[1] ? true : false
stc_sig = stc == true and stc[1] == false ? 1 : stc == false and stc[1] == true ? -1 : 0
stc_long = stc_sig == 1
stc_short = stc_sig == -1
// STC end
// ATR stops
nATRPeriod = input(5,group="ATR Stops")
nATRMultip = input(3.5,group="ATR Stops")
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) : close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
pos = 0
pos := close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 : close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
atr_sig = pos == -1 ? false : true
// ATR stops end
// ma
ma_len = input(200, title="MA Length", group="Moving Average")
ma = ta.sma(close, 200)
ma_sig = close < ma ? false : true
// ma end
// strategy entries
tp_mult = input(2, title="Take Profit ATR Multiplier", group="Strategy")
sl_mult = input(1, title="Stop Loss ATR Multiplier", group="Strategy")
early_stop = input(true, title="Close position when ATR changes color")
atr_stop = if close < xATRTrailingStop
close - (close - xATRTrailingStop) * sl_mult
else
close + (xATRTrailingStop - close) * sl_mult
longCondition = atr_sig == true and stc_sig == 1 and ma_sig == true
shortCondition = atr_sig == false and stc_sig == -1 and ma_sig == false
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", limit=close + xATR * tp_mult, stop=atr_stop)
else if atr_sig == false and early_stop
strategy.close("Long")
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", limit=close - xATR * tp_mult, stop=atr_stop)
else if atr_sig == true and early_stop
strategy.close("Short")
// plot stuff
atr_color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(atr_stop, title="ATR Stop", color=atr_color)
ma_color = ma_sig ? color.green : color.red
plot(ma, title="Moving Average", color=ma_color)
stc_color = stc_long ? color.green : color.red
plotshape(stc_long, style=shape.triangleup, color=stc_color, title="STC Long Signal", size=size.tiny)
plotshape(stc_short, style=shape.triangledown, color=stc_color, title="STC Short Signal", size=size.tiny)
// plot stuff end