Estrategia de oscilador estocástico de múltiples marcos temporales y sistema de negociación de confirmación de tendencia

STOCH MTF HH/LL SL/TP KDJ
Fecha de creación: 2025-02-19 10:53:25 Última modificación: 2025-02-19 10:53:25
Copiar: 5 Número de Visitas: 413
1
Seguir
1617
Seguidores

Estrategia de oscilador estocástico de múltiples marcos temporales y sistema de negociación de confirmación de tendencia

Descripción general

La estrategia es un sistema de negociación basado en un indicador de oscilación aleatoria de múltiples marcos horarios (estocástico) combinado con la confirmación de tendencias y el análisis de la forma de los precios. La estrategia utiliza tres períodos de tiempo de 15, 30 y 60 minutos para identificar oportunidades de negociación a través de señales cruzadas de indicadores aleatorios y la confirmación de la forma de los puntos altos más altos (Higher High) y los puntos bajos más bajos (Lower Low).

Principio de estrategia

La lógica central de la estrategia incluye las siguientes partes clave:

  1. El uso de tres diferentes períodos de tiempo (de 15 minutos, 30 minutos y 60 minutos) para analizar el movimiento del mercado
  2. En el período de tiempo principal (15 minutos), cuando la línea K rompe la línea D y se encuentra en la zona de sobreventa, se combina con una señal de confirmación de compra de forma más alta y baja
  3. Del mismo modo, cuando la línea K cae por debajo de la línea D y está en la zona de sobreventa, se confirma una señal de venta en combinación con una forma de punto más baja
  4. El riesgo y la ganancia de cada operación se gestionan con un objetivo de stop loss del 3.7% y un objetivo de ganancia del 1.8%

Ventajas estratégicas

  1. El análisis de múltiples períodos de tiempo ofrece una visión más completa del mercado y permite filtrar mejor las falsas señales
  2. La combinación de análisis de la forma de los precios aumenta la fiabilidad de las señales de negociación
  3. Los parámetros de gestión de riesgos fijos hacen que los resultados de las transacciones sean más estables y controlables
  4. Estrategias para un entorno de mercado con mucha volatilidad
  5. Las señales de entrada y salida automáticas reducen el impacto emocional de los juicios subjetivos

Riesgo estratégico

  1. En mercados volátiles pueden producirse señales falsas frecuentes
  2. Las configuraciones fijas de stop loss y ganancias pueden no ser adecuadas para todos los entornos de mercado.
  3. Las señales de múltiples períodos de tiempo pueden generar retraso
  4. En un mercado de tendencia rápida, los paros pueden bloquear los beneficios prematuramente.
  5. Se requiere una mayor administración de fondos para soportar el stop loss del 3.7%

Dirección de optimización de la estrategia

  1. Se puede considerar ajustar los objetivos de pérdidas y ganancias en función de la fluctuación dinámica del mercado
  2. Aumentar el índice de transacción como señal de confirmación auxiliar
  3. Introducción de indicadores de intensidad de tendencia para mejorar el rendimiento en mercados convulsionados
  4. Optimización de la configuración de las ponderaciones entre períodos de tiempo múltiples
  5. Considerar la inclusión de indicadores de sentimiento de mercado para mejorar la precisión de las señales

Resumir

Se trata de un sistema de negociación completo que combina análisis de múltiples ciclos de tiempo y confirmación de tendencias. El uso de indicadores aleatorios y el uso combinado de la forma de los precios permite capturar mejor los puntos de inflexión del mercado. Los parámetros de gestión de riesgos fijos, aunque simples, garantizan la consistencia de las operaciones.

Código Fuente de la Estrategia
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Swing Fairas Oil", overlay=true)

// Pilih Timeframe Utama & 2 Timeframe Konfirmasi
tf_main = "15"
tf_mid = "30"
tf_high = "60"

// Parameter Stochastic
length = input(15, title="Stochastic Length")
k_smooth = input(4, title="K Smoothing")
d_smooth = input(5, title="D Smoothing")

// Overbought & Oversold Levels
overbought = input(85, title="Overbought Level")
oversold = input(15, title="Oversold Level")

// Stochastic pada Timeframe Utama
k1 = ta.sma(ta.stoch(close, high, low, length), k_smooth)
d1 = ta.sma(k1, d_smooth)

// Stochastic pada Timeframe Menengah
k2 = request.security(syminfo.tickerid, tf_mid, ta.sma(ta.stoch(close, high, low, length), k_smooth))
d2 = request.security(syminfo.tickerid, tf_mid, ta.sma(k2, d_smooth))

// Stochastic pada Timeframe Tinggi
k3 = request.security(syminfo.tickerid, tf_high, ta.sma(ta.stoch(close, high, low, length), k_smooth))
d3 = request.security(syminfo.tickerid, tf_high, ta.sma(k3, d_smooth))

// **Konfirmasi Higher High & Lower Low**
hh = ta.highest(high, 5)   // Highest High dalam 5 candle terakhir
ll = ta.lowest(low, 5)     // Lowest Low dalam 5 candle terakhir

// **Kondisi Buy**
confirm_buy = ta.crossover(k1, d1) and k1 < oversold  // Stochastic Bullish
higher_low = low > ta.lowest(low[1], 5)  // Higher Low terbentuk

longCondition = confirm_buy and higher_low

// **Kondisi Sell**
confirm_sell = ta.crossunder(k1, d1) and k1 > overbought  // Stochastic Bearish
lower_high = high < ta.highest(high[1], 5)  // Lower High terbentuk

shortCondition = confirm_sell and lower_high

// Stop Loss & Take Profit
sl = input(3.7, title="Stop Loss (%)") / 100
tp = input(1.8, title="Take Profit (%)") / 100

longStopLoss = close * (1 - sl)
longTakeProfit = close * (1 + tp)

shortStopLoss = close * (1 + sl)
shortTakeProfit = close * (1 - tp)

// Eksekusi Order
if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell TP/SL", from_entry="Buy", stop=longStopLoss, limit=longTakeProfit)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover TP/SL", from_entry="Sell", stop=shortStopLoss, limit=shortTakeProfit)

// Label Buy & Sell
if longCondition
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)

if shortCondition
    label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)

// Label Stop Loss & Take Profit
if longCondition
    label.new(bar_index, longStopLoss, "SL: " + str.tostring(longStopLoss, "#.##"), color=color.red, textcolor=color.white, size=size.small, style=label.style_label_left)
    label.new(bar_index, longTakeProfit, "TP: " + str.tostring(longTakeProfit, "#.##"), color=color.green, textcolor=color.white, size=size.small, style=label.style_label_left)

if shortCondition
    label.new(bar_index, shortStopLoss, "SL: " + str.tostring(shortStopLoss, "#.##"), color=color.red, textcolor=color.white, size=size.small, style=label.style_label_left)
    label.new(bar_index, shortTakeProfit, "TP: " + str.tostring(shortTakeProfit, "#.##"), color=color.green, textcolor=color.white, size=size.small, style=label.style_label_left)