Strategi Penembusan Kuasa

Penulis:ChaoZhang, Tarikh: 2024-01-24 11:25:01
Tag:

img

Ringkasan

Strategi Penembusan Kuasa adalah strategi perdagangan kuantitatif berdasarkan purata bergerak dan Indeks Kekuatan Relatif (RSI). Ia mengesan arah trend pasaran dengan memantau penembusan harga purata bergerak utama dan menggunakan penunjuk RSI untuk menentukan isyarat kemasukan.

Logika Strategi

Strategi Penembusan Kuasa menggunakan dua purata bergerak. Yang pertama adalah EMA 10 tempoh sebagai purata bergerak pantas. Yang kedua adalah EMA 200 tempoh sebagai purata bergerak perlahan. Garis pantas mewakili trend harga semasa dan garis perlahan mewakili trend harga jangka panjang. Apabila harga naik dan menembusi di atas garis 10 hari, ia adalah isyarat kenaikan. Apabila harga jatuh dan menembusi di bawah garis 10 hari, ia adalah isyarat penurunan.

Strategi ini juga menggabungkan penunjuk RSI untuk menentukan saat kemasukan tertentu. Jika harga berada dalam trend menaik dan titik rendah RSI muncul di bawah purata bergerak pantas (RSI jatuh di bawah 5), isyarat panjang dicetuskan. Jika harga berada dalam trend menurun dan titik tinggi RSI muncul di atas purata bergerak pantas (RSI melebihi 95), isyarat pendek dicetuskan.

Prinsip stop loss selepas mengambil kedudukan panjang/pendek adalah untuk keluar dari kedudukan jika harga kembali memecahkan purata bergerak 10 hari.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah keupayaan trend berikut yang kuat. purata bergerak sendiri mempunyai fungsi menilai trend yang sangat baik. Strategi ini memanfaatkan sepenuhnya kekuatan garis cepat dan perlahan di mana garis cepat menilai trend jangka pendek dan garis perlahan menilai trend jangka panjang. Apabila garis cepat mempunyai penembusan ke atas garis perlahan, ia menunjukkan kedua-dua trend kenaikan jangka pendek dan jangka panjang, yang merupakan isyarat beli yang kuat.

Penambahan penunjuk RSI juga meningkatkan kelebihan strategi. Menggabungkan titik tinggi dan rendah RSI dapat mengeluarkan isyarat perdagangan dengan berkesan apabila keadaan overbought atau oversold berlaku, yang membolehkan penyertaan pada titik pembalikan yang berpotensi untuk meningkatkan prestasi sebenar.

Analisis Risiko

Walaupun strategi ini mempunyai keupayaan pengesanan trend yang agak kuat, tiada strategi penunjuk teknikal yang dapat mengelakkan kerugian sepenuhnya.

  1. Apabila harga turun naik dengan ganas, isyarat perdagangan yang dihasilkan oleh purata bergerak mungkin tertinggal.

  2. Penunjuk RSI cenderung kepada perbezaan yang boleh menyebabkan penilaian isyarat perdagangan yang salah.

  3. Parameter yang tidak betul dalam operasi jangka panjang boleh membawa kepada perdagangan berlebihan.

Untuk mengurangkan risiko, parameter seperti purata bergerak dan RSI boleh diselaraskan dan dioptimumkan, julat stop-loss boleh dilepaskan dengan munasabah, saiz kedudukan boleh dikawal dengan sewajarnya.

Arahan pengoptimuman

Terdapat ruang untuk pengoptimuman strategi yang lebih lanjut, terutamanya memberi tumpuan kepada:

  1. Tambah purata bergerak adaptif untuk menyesuaikan parameter secara automatik berdasarkan turun naik pasaran untuk meningkatkan fleksibiliti.

  2. Menggabungkan penunjuk turun naik seperti Bollinger Bands untuk menangani perubahan harga pasaran yang ganas.

  3. Meningkatkan algoritma pembelajaran mesin melalui latihan AI untuk kombinasi parameter yang lebih baik dan peraturan perdagangan untuk meningkatkan automasi.

  4. Memperluas sampel ujian melalui portfolio pelbagai pasaran untuk mengesahkan keberkesanan lintas pasaran.

  5. Memperkenalkan modul analisis asas berdasarkan dasar makro, peristiwa utama, dan lain-lain untuk memberikan sokongan keputusan strategi.

Ringkasan

Strategi Penembusan Kuasa adalah strategi berasaskan purata bergerak yang praktikal. Ia menilai trend melalui penembusan harga purata bergerak pantas dan perlahan dan dengan tepat memasuki pasaran dengan bantuan penunjuk RSI. Gabungan ini sepenuhnya menggunakan kekuatan purata bergerak dan penunjuk overbought / oversold. Strategi ini disahkan di pelbagai pasaran dengan pulangan yang stabil dan risiko yang boleh dikawal. Ini adalah strategi perdagangan kuantitatif yang disyorkan. Pengoptimuman lanjut berpotensi dapat meningkatkan prestasi strategi.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JoseMetal
//@version=5

//== Constantes
c_blanco              = color.rgb(255, 255, 255, 0)
c_negro               = color.rgb(0, 0, 0, 0)
c_amarillo_radiactivo = color.rgb(255, 255, 0, 0)
c_cian_radiactivo     = color.rgb(0, 255, 255, 0)
c_verde_radiactivo    = color.rgb(0, 255, 0, 0)
c_verde               = color.rgb(0, 128, 0, 0)
c_verde_oscuro        = color.rgb(0, 80, 0, 0)
c_rojo_radiactivo     = color.rgb(255, 0, 0, 0)
c_rojo                = color.rgb(128, 0, 0, 0)
c_rojo_oscuro         = color.rgb(80, 0, 0, 0) 
c_naranja_oscuro      = color.rgb(200, 120, 0, 0)
noneColor             = color.new(color.white, 100)
max_float             = 10000000000.0



//== Funciones

//== Declarar estrategia y período de testeo
strategy("Estrategia Larry Connors", shorttitle="Estrategia Larry Connors", overlay=true)
fecha_inicio     = input(timestamp("1 Jan 2000"), title="• Fecha de inicio", group="Período de pruebas", inline="periodo_de_pruebas")
vela_en_fecha    = true
posicion_abierta = strategy.position_size != 0
LONG_abierto     = strategy.position_size > 0
SHORT_abierto    = strategy.position_size < 0

GRUPO_P           = "Posiciones"
P_permitir_LONGS  = input.bool(title="LONGS", group=GRUPO_P, defval=true, inline="posiciones")
P_permitir_SHORTS = input.bool(title="SHORTS", group=GRUPO_P, defval=true, inline="posiciones")

GRUPO_general = "General"
mostrar_color_velas = input.bool(title="Colorear velas", defval=true, group=GRUPO_general)



//== Inputs de indicadores
// Medias móviles simples
GRUPO_SMAs = "SMAs"
SMA_1_fuente = input.source(title="• (Media de salida) Fuente / Long.", group=GRUPO_SMAs, defval=close, inline="sma_1")
SMA_1_length = input.int(title="", group=GRUPO_SMAs, defval=10, minval=1, inline="sma_1")
SMA_2_fuente = input.source(title="• (Media tendencial) Fuente / Long.", group=GRUPO_SMAs, defval=close, inline="sma_2")
SMA_2_length = input.int(title="", group=GRUPO_SMAs, defval=200, minval=1, inline="sma_2")
SMA_1        = ta.ema(SMA_1_fuente, SMA_1_length)
SMA_2        = ta.ema(SMA_2_fuente, SMA_2_length)

// RSI
GRUPO_RSI    = "RSI"
RSI_src      = input.source(title="• Fuente / Longitud", group=GRUPO_RSI, defval=close, inline="rsi_calc")
RSI_length   = input.int(title="", group=GRUPO_RSI, defval=2, minval=1, inline="rsi_calc")
RSI          = ta.rsi(RSI_src, RSI_length)
RSI_nivel_os = input.int(title="• Sobreventa / Sobrecompra", group=GRUPO_RSI, defval=5, minval=0, maxval=99, inline="rsi_niveles")
RSI_nivel_ob = input.int(title="", group=GRUPO_RSI, defval=95, minval=1, maxval=100, inline="rsi_niveles")


//== Cálculo de condiciones
cierre_sobre_SMA_1 = close > SMA_1
tendencia_alcista  = close > SMA_2
RSI_en_sobreventa  = RSI < RSI_nivel_os
RSI_en_sobrecompra = RSI > RSI_nivel_ob



//== Entrada (deben cumplirse todas para entrar)
LONG_condition_1    = tendencia_alcista
LONG_condition_2    = not cierre_sobre_SMA_1 // Vela con cierre bajo la media rápida
LONG_condition_3    = RSI_en_sobreventa[1] and not RSI_en_sobreventa // Sobreventa en la vela anterior y ya no en la actual
all_LONG_conditions = LONG_condition_1 and LONG_condition_2 and LONG_condition_3
entrar_en_LONG      = P_permitir_LONGS and all_LONG_conditions and vela_en_fecha and not LONG_abierto

SHORT_condition_1    = not tendencia_alcista
SHORT_condition_2    = cierre_sobre_SMA_1 // Vela con cierre sobre la media rápida
SHORT_condition_3    = RSI_en_sobrecompra[1] and not RSI_en_sobrecompra // Sobrecompra en la vela anterior y ya no en la actual
all_SHORT_conditions = SHORT_condition_1 and SHORT_condition_2 and SHORT_condition_3
entrar_en_SHORT      = P_permitir_SHORTS and all_SHORT_conditions and vela_en_fecha and not SHORT_abierto

if (entrar_en_LONG)
    strategy.entry("Abrir Long", strategy.long)

if (entrar_en_SHORT)
    strategy.entry("Abrir Short", strategy.short)



//== Salida
exit_LONG_conditions  = cierre_sobre_SMA_1
exit_SHORT_conditions = not cierre_sobre_SMA_1


if (LONG_abierto and exit_LONG_conditions)
    strategy.close("Abrir Long")

if (SHORT_abierto and exit_SHORT_conditions)
    strategy.close("Abrir Short")


//== Ploteo en pantalla
// SMAs
plot(SMA_1, "Media de salida", color=color.aqua, linewidth=2)
plot(SMA_2, "Media tendencial", color=tendencia_alcista ? color.green : color.red, linewidth=4)

// Color de fondo
bgcolor = entrar_en_LONG ? color.new(color.green, 85) : entrar_en_SHORT ? color.new(color.red, 85) : color.new(color.black, 100)
bgcolor(bgcolor)

// Color de las velas según sobrecompra/sobreventa del RSI
color_velas = mostrar_color_velas ? (RSI_en_sobreventa ? #00a800 : RSI_en_sobrecompra ? #ca0000 : na) : na
barcolor(color_velas)


Lebih lanjut