Estratégia de oscilador estocástico multi-timeframe e sistema de negociação de confirmação de tendência

STOCH MTF HH/LL SL/TP KDJ
Data de criação: 2025-02-19 10:53:25 última modificação: 2025-02-19 10:53:25
cópia: 5 Cliques: 413
1
focar em
1617
Seguidores

Estratégia de oscilador estocástico multi-timeframe e sistema de negociação de confirmação de tendência

Visão geral

A estratégia é um sistema de negociação baseado em stochastic, uma combinação de confirmação de tendência e análise de forma de preço. A estratégia usa três períodos de tempo de 15, 30 e 60 minutos para identificar oportunidades de negociação por meio de sinais de cruzamento de indicadores aleatórios e confirmação de forma de pontos mais altos (Higher High) e mais baixos (Lower Low).

Princípio da estratégia

A lógica central da estratégia inclui as seguintes partes principais:

  1. Utilizando três indicadores aleatórios com diferentes períodos de tempo (de 15 minutos, 30 minutos e 60 minutos) para analisar a movimentação do mercado
  2. No período de tempo principal (15 minutos), quando a linha K ultrapassa a linha D e está na zona de oversold, o sinal de compra é confirmado em combinação com uma forma mais alta de baixa
  3. Da mesma forma, quando a linha K cai abaixo da linha D e está na área de sobrevenda, a confirmação de venda de forma combinada com um pico mais baixo
  4. Gestão de riscos e ganhos por transação com um objetivo de stop loss de 3,7% e ganho de 1,8%

Vantagens estratégicas

  1. A análise de períodos múltiplos de tempo oferece uma visão mais abrangente do mercado e permite melhor filtrar os falsos sinais
  2. Combinação de análise de configuração de preços aumenta a confiabilidade dos sinais de negociação
  3. Parâmetros de gerenciamento de risco fixos tornam os resultados de negociação mais estáveis e controlados
  4. Estratégias para ambientes de mercado mais voláteis
  5. Os sinais de entrada e saída automatizados reduzem o impacto emocional dos julgamentos subjetivos

Risco estratégico

  1. Sinais falsos frequentes podem ocorrer em mercados voláteis
  2. A configuração fixa de stop loss e profit pode não ser adequada para todos os cenários de mercado.
  3. Sinais com múltiplos períodos de tempo podem gerar atraso
  4. No mercado de tendências rápidas, o stop-loss pode bloquear lucros prematuramente
  5. Uma maior gestão de fundos é necessária para suportar um stop loss de 3,7%

Direção de otimização da estratégia

  1. Podem ser considerados objetivos de stop loss e de profit ajustados à dinâmica da volatilidade do mercado.
  2. Aumento do volume de transações como sinal de confirmação auxiliar
  3. Introdução de indicadores de intensidade de tendência para melhorar o desempenho em mercados turbulentos
  4. Otimizar as preferências entre períodos de tempo múltiplos
  5. Considere a inclusão de indicadores de sentimento de mercado para melhorar a precisão dos sinais

Resumir

Trata-se de um sistema de negociação completo que combina análise de múltiplos períodos de tempo e confirmação de tendências. Através do uso combinado de indicadores aleatórios e configurações de preços, é possível capturar melhor os pontos de inflexão do mercado. Os parâmetros fixos de gerenciamento de risco, embora simples, garantem a consistência das negociações.

Código-fonte da estratégia
/*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)