Strategi Mengikuti Trend Bar Elephant dengan Pelarasan Henti Kerugian Dinamik

SMA HAMMER RSI
Tarikh penciptaan: 2025-01-17 16:24:18 Akhirnya diubah suai: 2025-01-17 16:24:18
Salin: 4 Bilangan klik: 371
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Bar Elephant dengan Pelarasan Henti Kerugian Dinamik

Gambaran keseluruhan

Strategi ini ialah sistem penjejakan arah aliran berdasarkan pengecaman corak bar, yang terutamanya menangkap potensi titik permulaan aliran dengan mengenal pasti “bar gajah” dalam pasaran (iaitu bar harga yang jauh lebih besar daripada saiz purata). Ciri teras strategi adalah untuk mengguna pakai pelan henti rugi yang diselaraskan secara dinamik, yang menyesuaikan secara adaptif kedudukan henti rugi mengikut kemajuan pergerakan harga, dengan itu melindungi keuntungan sedia ada dan memberi harga ruang yang mencukupi untuk turun naik.

Prinsip Strategi

Operasi strategi adalah berdasarkan langkah utama berikut:

  1. Kira saiz purata bar dalam tempoh tertentu yang lalu sebagai nilai penanda aras
  2. Kenal pasti sama ada lajur semasa memenuhi ciri “lajur gajah”:
    • Saiz lajur jauh lebih tinggi daripada purata (berbilang boleh dikonfigurasikan)
    • Harga penutupan adalah dalam julat peratusan tertentu antara tinggi dan rendah
    • Atau ia menepati ciri-ciri corak tukul/tukul terbalik
  3. Tentukan arah perdagangan berdasarkan arah lajur gajah
  4. Tetapkan henti rugi awal dan sasaran keuntungan
  5. Apabila harga bergerak ke arah yang menggalakkan, laraskan kedudukan henti rugi secara dinamik:
    • Alihkan henti rugi di atas garis kos apabila sasaran 60% dicapai
    • Ketatkan lagi stop loss apabila mencapai sasaran 80%.
    • Apabila sasaran 90% dicapai, stop loss diketatkan dengan ketara dan sasaran keuntungan diselaraskan

Kelebihan Strategik

  1. Pengurusan risiko dinamik: Dengan melaraskan kedudukan stop loss secara dinamik, strategi boleh melindungi keuntungan sambil memberikan ruang arah aliran untuk berkembang sepenuhnya.
  2. Fleksibiliti dalam pengecaman corak: Selain bar gajah tradisional, ia juga termasuk pengecaman corak khas seperti garisan tukul
  3. Kebolehlarasan parameter yang kuat: parameter utama seperti gandaan saiz lajur, peratusan sasaran, dll. boleh dilaraskan secara fleksibel mengikut ciri pasaran
  4. Nisbah risiko-pulangan yang munasabah: stop loss awal agak konservatif, tetapi ia diselaraskan secara dinamik apabila arah aliran berkembang untuk memperoleh pulangan yang lebih besar

Risiko Strategik

  1. Risiko pecahan palsu: Corak lajur gajah mungkin mempunyai pecahan palsu, jadi adalah perlu untuk menetapkan syarat penapisan secara munasabah.
  2. Risiko pasaran yang tidak menentu: Henti kerugian mungkin dicetuskan dengan kerap dalam pasaran mendatar dan tidak menentu
  3. Risiko pelarasan stop loss: Pelarasan stop loss yang terlalu agresif boleh membawa kepada keluar awal
  4. Kepekaan parameter: Kesan strategi adalah sensitif kepada tetapan parameter dan memerlukan ujian yang mencukupi.

Arah pengoptimuman strategi

  1. Tambahkan penapis persekitaran pasaran:
    • Tambah penunjuk arah aliran untuk mengenal pasti persekitaran pasaran semasa
    • Gunakan tetapan parameter yang berbeza dalam persekitaran pasaran yang berbeza
  2. Meningkatkan mekanisme stop loss:
    • Memperkenalkan Trailing Stop
    • Laraskan jarak henti kerugian secara dinamik berdasarkan turun naik
  3. Optimumkan masa kemasukan:
    • Digabungkan dengan penunjuk volum
    • Menambah isyarat pengesahan pembalikan
  4. Penjanaan keuntungan yang lebih baik:
    • Mencapai keuntungan separa keluar
    • Laraskan sasaran keuntungan secara dinamik berdasarkan struktur pasaran

ringkaskan

Strategi ini mencapai penjejakan arah aliran yang berkesan dengan mengenal pasti corak harga utama dalam pasaran dan menggunakan pendekatan pengurusan risiko yang dinamik. Kelebihan teras strategi ini terletak pada mekanisme pengurusan henti rugi adaptifnya, yang boleh merebut peluang trend sepenuhnya sambil melindungi keuntungan. Dengan mengoptimumkan lagi mekanisme pengenalan persekitaran pasaran dan pengurusan risiko, strategi ini dijangka mencapai prestasi yang stabil dalam persekitaran pasaran yang berbeza.

Kod 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