Esta estrategia es una estrategia de seguimiento de tendencias basada en un sistema de múltiples líneas medias, combinando la confirmación de la fuerza de la tendencia y el mecanismo de captura de la volatilidad. La estrategia utiliza el sistema de tres líneas medias de 5 ciclos, 25 ciclos y 75 ciclos como núcleo, filtrando las tendencias fuertes a través del indicador ADX, mientras que integra un sistema de monitoreo de fluctuaciones rápidas para obtener ganancias a tiempo.
La estrategia se basa en tres mecanismos centrales:
Las reglas específicas de las transacciones:
Introducción de los parámetros de adaptación:
Mecanismos de reconocimiento de tendencias:
Optimización de las pérdidas de frenado:
La clasificación del entorno del mercado:
La estrategia construye un sistema de negociación completo a través de un sistema de líneas medias múltiples, reconocimiento de la intensidad de la tendencia y monitoreo de la volatilidad en tres dimensiones. La ventaja central de la estrategia reside en su mecanismo de confirmación multicapa y su sistema de control de riesgo flexible. A través de las recomendaciones de optimización que se proporcionan, la estrategia puede mejorar aún más su adaptabilidad y estabilidad.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("5SMA-25SMA Crossover Strategy with ADX Filter and Sudden Move Profit Taking", overlay=true)
// パラメータの設定
sma5 = ta.sma(close, 5)
sma25 = ta.sma(close, 25)
sma75 = ta.sma(close, 75)
// ADXの計算
length = 14
tr = ta.tr(true)
plus_dm = ta.rma(math.max(ta.change(high), 0), length)
minus_dm = ta.rma(math.max(-ta.change(low), 0), length)
tr_sum = ta.rma(tr, length)
plus_di = 100 * plus_dm / tr_sum
minus_di = 100 * minus_dm / tr_sum
dx = 100 * math.abs(plus_di - minus_di) / (plus_di + minus_di)
adx = ta.rma(dx, length)
// ロングとショートのエントリー条件
longCondition = ta.crossover(sma5, sma25) and close > sma75 and adx > 20
shortCondition = ta.crossunder(sma5, sma25) and close < sma75 and adx > 20
// 急激な変動を検知する条件(ここでは、前のローソク足に比べて0.6%以上の値動きがあった場合)
suddenMove = math.abs(ta.change(close)) > close[1] * 0.006
// ポジション管理
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// 急激な変動があった場合、ポジションを利益確定(クローズ)する
if (strategy.position_size > 0 and suddenMove)
strategy.close("Long")
if (strategy.position_size < 0 and suddenMove)
strategy.close("Short")
// エグジット条件
if (strategy.position_size > 0 and shortCondition)
strategy.close("Long")
if (strategy.position_size < 0 and longCondition)
strategy.close("Short")
// SMAとADXのプロット
plot(sma5, color=color.blue, title="5SMA")
plot(sma25, color=color.red, title="25SMA")
plot(sma75, color=color.green, title="75SMA")
plot(adx, color=color.orange, title="ADX")
hline(20, "ADX Threshold", color=color.gray, linestyle=hline.style_dotted)