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.
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.
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.
Walaupun strategi ini mempunyai keupayaan pengesanan trend yang agak kuat, tiada strategi penunjuk teknikal yang dapat mengelakkan kerugian sepenuhnya.
Apabila harga turun naik dengan ganas, isyarat perdagangan yang dihasilkan oleh purata bergerak mungkin tertinggal.
Penunjuk RSI cenderung kepada perbezaan yang boleh menyebabkan penilaian isyarat perdagangan yang salah.
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.
Terdapat ruang untuk pengoptimuman strategi yang lebih lanjut, terutamanya memberi tumpuan kepada:
Tambah purata bergerak adaptif untuk menyesuaikan parameter secara automatik berdasarkan turun naik pasaran untuk meningkatkan fleksibiliti.
Menggabungkan penunjuk turun naik seperti Bollinger Bands untuk menangani perubahan harga pasaran yang ganas.
Meningkatkan algoritma pembelajaran mesin melalui latihan AI untuk kombinasi parameter yang lebih baik dan peraturan perdagangan untuk meningkatkan automasi.
Memperluas sampel ujian melalui portfolio pelbagai pasaran untuk mengesahkan keberkesanan lintas pasaran.
Memperkenalkan modul analisis asas berdasarkan dasar makro, peristiwa utama, dan lain-lain untuk memberikan sokongan keputusan strategi.
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)