
Стратегия прорыва поля силы - это количественная торговая стратегия, основанная на движущихся средних и относительно сильных индексах. Эта стратегия определяет направление тенденции рынка путем обнаружения ключевых движущихся средних, в сочетании с показателем RSI, чтобы определить время входа.
Стратегия прорыва силового поля использует два движущихся средних, первый - 10-циклическая ЭМА в качестве быстрого движущегося среднего, второй - 200-циклическая ЭМА в качестве медленно движущегося среднего. Быстрая линия представляет собой текущую ценовую тенденцию, а медленная линия представляет собой долгосрочную ценовую тенденцию.
Стратегия также объединяет RSI, чтобы определить конкретный момент входа. Если цена находится в восходящем тренде, то появляется сигнал выбытия, когда RSI находится ниже средней скорости (RSI меньше 5), а если цена находится в нисходящем тренде, то появляется сигнал выбытия, когда RSI находится выше средней скорости (RSI больше 95).
Принцип остановки убытков после дополнительного дефолта заключается в том, что, если цена снова упадет или превзойдет 10-дневную линию, она будет остановлена.
Наибольшее преимущество этой стратегии заключается в том, что она обладает высокой способностью отслеживать тенденции. Сама по себе движущаяся средняя обладает хорошей функцией определения тенденции. Стратегия использует преимущества быстрого и медленного среднего, быстрого направления для определения краткосрочной тенденции, медленного направления для определения долгосрочной тенденции.
Включение RSI также увеличивает преимущества стратегии. Сочетание высоких и низких точек RSI может эффективно подавать торговые сигналы при перепродаже, что позволяет ввести в игру возможные переломные моменты и повышает эффективность стратегии.
Несмотря на то, что эта стратегия обладает высокой способностью отслеживать тенденции, любая стратегия технических показателей не может полностью избежать убытков, и есть определенные риски. В частности, могут быть следующие риски:
Для снижения риска можно регулировать параметры скользящих средних, оптимизировать комбинацию параметров RSI, надлежащим образом расширять расстояние между стоп-линиями, разумно контролировать размер позиции и т. д.
В этой стратегии есть место для дальнейшей оптимизации, которая будет сосредоточена на следующих аспектах:
Добавление адаптивных скользящих средних, которые автоматически корректируют параметры скользящих средних в зависимости от рыночных колебаний, что делает их более гибкими.
Включение волатильных показателей, таких как Брин-банды, позволяет эффективно реагировать на рыночные условия с резким колебанием цен.
Добавление алгоритмов машинного обучения, получение более оптимальных пакетов параметров и правил торгов через обучение ИИ, что делает стратегию более интеллектуальной.
Многорыночный портфель, расширение количества пробных образцов, подтверждение эффективности стратегий на разных рынках.
Введение модуля фундаментального анализа, который в сочетании с макрополитикой, важными событиями и другими способами оценивает рыночные тенденции и служит основой для принятия стратегических решений.
Стратегия прорыва поля силы - это очень практичная стратегия движущихся средних. Она применяет принципы быстрого и медленного прорыва цены средней линии для определения тенденции, а также поддерживает показатель RSI для точного входа. Эта комбинация в полной мере использует преимущества средней линии и показателя перекупа перепродажи.
/*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)