Este sistema de negociación llamado
El sistema sigue los siguientes pasos:
Calcular el ATR de 14 períodos y normalizarlo dividiéndolo por el precio de cierre.
Calcular la media móvil simple (SMA) de 100 días del ATR normalizado.
Calcular la relación entre el ATR normalizado y su SMA de 100 días.
Determinar el apalancamiento objetivo basado en la inversa de la relación (2/ratio).
Calcular el número objetivo de operaciones abiertas multiplicando el apalancamiento objetivo por 5.
Objetivo de gráfico y operaciones abiertas actuales en el gráfico.
Compruebe si existe la posibilidad de comprar (si las operaciones abiertas actuales son inferiores a la meta) o cerrar operaciones (si las operaciones abiertas actuales son superiores a la meta más 1).
Si tienes la oportunidad de comprar, abre el comercio largo y añade a la matriz de openTrades.
Si existe la posibilidad de cerrar el comercio y las operaciones en la matriz openTrades, cierre la operación más reciente haciendo referencia a la matriz y eliminarla de la matriz.
El sistema tiene como objetivo capturar tendencias ajustando dinámicamente las operaciones abiertas y el apalancamiento basado en la volatilidad del mercado.
Las ventajas de esta estrategia:
El ajuste dinámico del apalancamiento y del tamaño de la posición basado en los cambios de la volatilidad del mercado puede gestionar eficazmente el riesgo.
El uso del indicador ATR para calcular el tamaño de la posición objetivo, que refleja la volatilidad del mercado, es una opción razonable.
La pirámide con múltiples posiciones puede beneficiarse de las tendencias.
El registro de cada operación en la matriz permite un control explícito de las operaciones de apertura y cierre.
La estrategia tiene pocos parámetros y es fácil de implementar y operar.
La lógica es clara y la estructura del código está bien organizada para una fácil optimización e iteración.
Los riesgos de esta estrategia:
El ATR solo refleja la volatilidad pasada, no es capaz de predecir cambios futuros y puede dar lugar a un ajuste incorrecto del apalancamiento.
Las pirámides pueden acumular pérdidas cuando la tendencia se invierte.
Las operaciones de registro de matriz solo se aplican a operaciones de apertura / cierre simples.
El apalancamiento objetivo y la configuración del tamaño de la posición deben ajustarse en función de las características específicas del símbolo en lugar de parámetros fijos.
La dependencia de un solo indicador puede ser engañosa. Otros indicadores de volatilidad o algoritmos de aprendizaje automático pueden mejorar la solidez.
La estrategia se puede optimizar en los siguientes aspectos:
Se añadirá el stop loss al cut loss activo al alcanzar el nivel de stop loss.
Optimizar los parámetros del indicador mediante pruebas de diferentes períodos de ATR.
Pruebe otras estrategias de entrada como las entradas de cantidad fija y pruebe los resultados.
Se añaden otras métricas de volatilidad como Bollinger Bands WIDTH, KD, RSI, etc. para su uso combinado.
Utilice modelos de aprendizaje automático para predecir la volatilidad en lugar de la suavización simple.
Optimizar el cálculo del tamaño de la posición, por ejemplo mediante el uso de múltiplos ATR o funciones de volatilidad.
Registre más detalles de entrada como precio de entrada, tiempo, etc. para el análisis y optimización de la estrategia.
Agregue la optimización de parámetros para la optimización automática para encontrar conjuntos de parámetros óptimos.
La estrategia ajusta dinámicamente el apalancamiento y el tamaño de la posición basado en ATR para gestionar la exposición al riesgo durante las tendencias, y tiene ciertas ventajas.
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false) atr = ta.atr(14) / close avg_atr = ta.sma(atr,100) ratio = atr / avg_atr targetLeverage = 2 / ratio targetOpentrades = 5 * targetLeverage plot(targetOpentrades) plot(strategy.opentrades) isBuy = strategy.opentrades < targetOpentrades isClose = strategy.opentrades > targetOpentrades + 1 var string[] openTrades = array.new_string(0) if(isBuy) strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long) array.push(openTrades, "Buy" + str.tostring(array.size(openTrades))) if(isClose) if array.size(openTrades) > 0 strategy.close(array.get(openTrades, array.size(openTrades) - 1)) array.pop(openTrades)