Strategi Mengikuti Tren Elephant Bar dengan Penyesuaian Stop Loss Dinamis

SMA HAMMER RSI
Tanggal Pembuatan: 2025-01-17 16:24:18 Akhirnya memodifikasi: 2025-01-17 16:24:18
menyalin: 4 Jumlah klik: 371
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Elephant Bar dengan Penyesuaian Stop Loss Dinamis

Ringkasan

Strategi ini adalah sistem pelacakan tren berdasarkan pengenalan pola batang, yang terutama menangkap titik awal tren potensial dengan mengidentifikasi “batang gajah” di pasar (yaitu batang harga yang secara signifikan lebih besar daripada ukuran rata-rata). Fitur inti dari strategi ini adalah mengadopsi rencana stop-loss yang disesuaikan secara dinamis, yang secara adaptif menyesuaikan posisi stop-loss menurut kemajuan pergerakan harga, dengan demikian melindungi keuntungan yang ada dan memberi harga ruang yang cukup untuk fluktuasi.

Prinsip Strategi

Pengoperasian strategi ini didasarkan pada langkah-langkah kunci berikut:

  1. Hitung ukuran rata-rata batang pada periode tertentu di masa lalu sebagai nilai patokan
  2. Identifikasi apakah kolom saat ini memenuhi karakteristik “kolom gajah”:
    • Ukuran kolom secara signifikan lebih tinggi dari rata-rata (beberapa konfigurasi)
    • Harga penutupan berada dalam kisaran persentase tertentu dari harga tertinggi dan terendah
    • Atau memenuhi karakteristik pola palu/palu terbalik
  3. Tentukan arah perdagangan berdasarkan arah kolom gajah
  4. Tetapkan stop loss awal dan target keuntungan
  5. Saat harga bergerak ke arah yang menguntungkan, sesuaikan posisi stop loss secara dinamis:
    • Pindahkan stop loss di atas garis biaya ketika target 60% tercapai
    • Kencangkan stop loss lebih lanjut saat mencapai target 80%
    • Ketika target 90% tercapai, stop loss diperketat secara signifikan dan target profit disesuaikan

Keunggulan Strategis

  1. Manajemen risiko dinamis: Dengan menyesuaikan posisi stop loss secara dinamis, strategi dapat melindungi keuntungan sekaligus memberi ruang bagi tren untuk berkembang sepenuhnya.
  2. Fleksibilitas dalam pengenalan pola: Selain palang gajah tradisional, ini juga mencakup pengenalan pola khusus seperti garis palu
  3. Kemampuan penyesuaian parameter yang kuat: parameter utama seperti kelipatan ukuran kolom, persentase target, dll. dapat disesuaikan secara fleksibel sesuai dengan karakteristik pasar
  4. Rasio risiko-imbal hasil yang wajar: stop loss awal relatif konservatif, tetapi disesuaikan secara dinamis seiring perkembangan tren untuk memperoleh imbal hasil yang lebih besar

Risiko Strategis

  1. Risiko breakout palsu: Pola kolom gajah mungkin memiliki breakout palsu, jadi kondisi penyaringan perlu ditetapkan secara wajar.
  2. Risiko pasar yang fluktuatif: Stop loss dapat dipicu secara sering pada pasar yang sideways dan fluktuatif
  3. Risiko penyesuaian stop loss: Penyesuaian stop loss yang terlalu agresif dapat menyebabkan keluar lebih awal
  4. Sensitivitas parameter: Efek strategi sensitif terhadap pengaturan parameter dan memerlukan pengujian yang memadai.

Arah optimasi strategi

  1. Tambahkan filter lingkungan pasar:
    • Tambahkan indikator tren untuk mengidentifikasi lingkungan pasar saat ini
    • Gunakan pengaturan parameter yang berbeda di lingkungan pasar yang berbeda
  2. Memperbaiki mekanisme stop loss:
    • Memperkenalkan Trailing Stop
    • Sesuaikan jarak stop loss secara dinamis berdasarkan volatilitas
  3. Optimalkan waktu entri:
    • Dikombinasikan dengan indikator volume
    • Menambahkan sinyal konfirmasi pembalikan
  4. Peningkatan perolehan keuntungan:
    • Mencapai keuntungan parsial
    • Sesuaikan target laba secara dinamis berdasarkan struktur pasar

Meringkaskan

Strategi ini mencapai pelacakan tren yang efektif dengan mengidentifikasi pola harga utama di pasar dan mengadopsi pendekatan manajemen risiko yang dinamis. Keuntungan inti dari strategi ini terletak pada mekanisme manajemen stop-loss adaptif, yang dapat sepenuhnya menangkap peluang tren sambil melindungi laba. Dengan lebih mengoptimalkan identifikasi lingkungan pasar dan mekanisme manajemen risiko, strategi ini diharapkan dapat mencapai kinerja yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Estratégia Barra Elefante com Stop Dinâmico", overlay=true)

// Parâmetros configuráveis
num_barras = input.int(15, title="Número de Barras para Média", minval=1, maxval=100)
percentual_fechamento_valido = input.float(10, title="Percentual do Máximo de Pavio (%)", minval=1, maxval=100)
percentual_condicao_tamanho = input.float(1.8, title="Multiplicador do Tamanho Médio da Barra", minval=0.1, step=0.1)
percentual_lucro = input.float(1.8, title="% de Lucro do Alvo ref. Tam. da Barra", minval=0.1, step=0.1)

var bool executou_entrada = false

// Calcula o tamanho de cada barra
barra_tamanho = math.abs(close - open)

// Calcula a média do tamanho das últimas 'num_barras' barras
media_tamanho = ta.sma(barra_tamanho, num_barras)

// Definição das variáveis para o corpo do candle, sombra superior e sombra inferior
corpo = barra_tamanho
sombra_superior = high - math.max(close, open)
sombra_inferior = math.min(close, open) - low

// Condições para verificar se a sombra é pelo menos 2x maior que o corpo
sombra_sup_maior = sombra_superior >= 2 * corpo
sombra_inf_maior = sombra_inferior >= 2 * corpo

// Define a relação mínima entre a sombra e o corpo
relacao_minima = 2.0

fechamento_valido = ((close >= high - (percentual_fechamento_valido / 100) * (high - low)) or (close <= low + (percentual_fechamento_valido / 100) * (high - low)))

// Condição para verificar se o fechamento está próximo da máxima ou mínima
fechamento_proximo_max = close >= (high - (high - low) * 0.1)  // Fechamento nos 20% superiores
fechamento_proximo_min = close <= (low + (high - low) * 0.1)   // Fechamento nos 20% inferiores

// definição de candle martelo
eh_martelo = (sombra_sup_maior and fechamento_proximo_max) and (math.abs(high - low) > 1.5*media_tamanho)
eh_martelo_invertido = (sombra_inf_maior and fechamento_proximo_min) and (math.abs(low - high) > 1.5*media_tamanho)

// Compara o tamanho da barra atual com a média usando o percentual configurável
condicao_tamanho = (barra_tamanho > percentual_condicao_tamanho * media_tamanho) and (fechamento_valido or (eh_martelo or eh_martelo_invertido))

// Variáveis para entrada
comprar_condicao = (condicao_tamanho and close > open)
vender_condicao = (condicao_tamanho and close < open)

// Stop Loss inicial
stop_loss_compra = low[1] + (barra_tamanho / 5)  // Para compra, stop é na mínima do candle anterior ajustado
stop_loss_venda = high[1] - (barra_tamanho / 5) // Para venda, stop é na máxima do candle anterior ajustado

// Take Profit inicial (multiplicador configurado)
take_profit_compra = close + percentual_lucro * barra_tamanho
take_profit_venda = close - percentual_lucro * barra_tamanho

// Variáveis para controle do progresso do preço
lucro_alvo_60 = close + 0.6 * (take_profit_compra - close)  // 60% do alvo
lucro_alvo_80 = close + 0.8 * (take_profit_compra - close)  // 80% do alvo
lucro_alvo_90 = close + 0.9 * (take_profit_compra - close)  // 90% do alvo

// Ajustes dinâmicos do Stop Loss e Alvo
if (strategy.position_size > 0)  // Para compras
    if (high >= lucro_alvo_60)
        stop_loss_compra := close + 0.1 * barra_tamanho  // Ajusta Stop para 10% acima da entrada
    if (high >= lucro_alvo_80)
        stop_loss_compra := close + 0.5 * barra_tamanho  // Ajusta Stop para 50% acima da entrada
    if (high >= lucro_alvo_90)
        stop_loss_compra := close + 0.8 * barra_tamanho  // Ajusta Stop para 80% acima da entrada
        take_profit_compra := close + 0.5 * barra_tamanho  // Ajusta Alvo para +50% do último fechamento

if (strategy.position_size < 0)  // Para vendas
    if (low <= lucro_alvo_60)
        stop_loss_venda := close - 0.1 * barra_tamanho  // Ajusta Stop para 10% abaixo da entrada
    if (low <= lucro_alvo_80)
        stop_loss_venda := close - 0.5 * barra_tamanho  // Ajusta Stop para 50% abaixo da entrada
    if (low <= lucro_alvo_90)
        stop_loss_venda := close - 0.8 * barra_tamanho  // Ajusta Stop para 80% abaixo da entrada
        take_profit_venda := close - 0.5 * barra_tamanho  // Ajusta Alvo para -50% do último fechamento

// Executando as ordens de compra e venda
if (not executou_entrada) and (comprar_condicao)
    strategy.entry("Compra", strategy.long)
    strategy.exit("Stop Compra", "Compra", stop=stop_loss_compra, limit=take_profit_compra)
    executou_entrada := true  // Marca que a entrada foi feita

if (not executou_entrada) and (vender_condicao)
    strategy.entry("Venda", strategy.short)
    strategy.exit("Stop Venda", "Venda", stop=stop_loss_venda, limit=take_profit_venda)
    executou_entrada := true  // Marca que a entrada foi feita

// Para visualização, vamos colorir as barras
barcolor(comprar_condicao ? color.rgb(14, 255, 22) : na)
barcolor(vender_condicao ? #d606ff : na)
bgcolor((eh_martelo) ? color.new(color.green, 60) : na)
bgcolor((eh_martelo_invertido) ? color.new(color.red, 60) : na)

// Reseta o controle de execução no início de cada nova barra
if barstate.isnew
    executou_entrada := false