
La estrategia es un sistema de negociación de solo compra, que genera una señal de compra basada en el cruce de la media móvil y el índice de canales de mercancías periódicos (CCI) o el índice de dirección de la media periódica (ADX). Se genera una señal de compra cuando la media móvil cruza la media móvil lenta en una media móvil rápida y la CCI periódica y / o la ADX periódica cumplen ciertas condiciones.
La estrategia también permite la reentrada dinámica, lo que significa que se puede abrir una nueva posición de más si el precio atraviesa nuevamente los tres promedios móviles. Sin embargo, la estrategia liquidará la posición de más si el precio de cierre cae por debajo del tercer promedio móvil.
El script define las condiciones para generar una señal de compra. Examina dos condiciones para determinar si una señal de compra es válida:
La gente no tiene ni idea de lo que está sucediendo.Si no hay una posición de más de un día sin liquidar y el precio es superior a tres promedios móviles, abra una nueva posición de más de un día.
Condiciones para la salida:Si el precio de cierre cae por debajo de la tercera media móvil, la estrategia liquida la posición de más de la cabeza.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene los siguientes riesgos:
Resolución de las mismas:
La estrategia puede ser optimizada en los siguientes aspectos:
La estrategia de reingreso dinámico integra varios indicadores técnicos para determinar el momento de comprar, y utiliza un diseño de reingreso dinámico para seguir la tendencia en tiempo real; al mismo tiempo, solo hace más para evitar el riesgo adicional que conlleva el descubierto. A través de la optimización de parámetros, la configuración de stop loss y la administración de posiciones, la estrategia se puede utilizar en operaciones reales para obtener ganancias excedentarias mientras se controla el riesgo.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)
// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")
// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)
// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close, cci_period))
// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)
// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)
// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100
// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)
// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
strategy.entry("Long", strategy.long)
if strategy.position_size > 0 and close < third_ma
strategy.close("Long")
// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)