
La estrategia se llama Trader Trader Based on Heikin Ashi ROC Percentages y su objetivo es proporcionar un marco de negociación fácil de usar basado en Heikin Ashi ROC y sus porcentajes.
La estrategia genera una línea ascendente y descendente para la negociación mediante el cálculo del ROC del cierre de Heikin Ashi y sus máximos y mínimos en diferentes períodos de tiempo. En concreto, calcula el ROC del cierre de Heikin Ashi en el último ciclo de rocLength. Luego calcula el rocHigh y el rocLow en los últimos 50 ciclos de ROC.
La mayor ventaja de esta estrategia es que utiliza la poderosa capacidad de seguimiento de tendencias de los indicadores de ROC, junto con las características de la información de precios suaves de Heikin Ashi, para identificar eficazmente los cambios en la tendencia. En comparación con indicadores como las simples medias móviles, el ROC responde a los cambios en los precios de manera más aguda, lo que permite a la estrategia entrar en juego a tiempo. Además, el uso de la generación de porcentajes de subidas y bajadas puede filtrar eficazmente los temblores y evitar falsas rupturas que causan transacciones innecesarias.
El principal riesgo de esta estrategia reside en que la configuración incorrecta de los parámetros puede provocar que las transacciones sean frecuentes o no lo suficientemente sensibles. Se necesita una configuración cuidadosa de la rocLength y el ciclo de cálculo de los porcentajes, ya que de lo contrario se puede provocar que el ascenso y el descenso sean demasiado débiles o rígidos, lo que puede provocar la pérdida de oportunidades de negociación o provocar pérdidas innecesarias. Además, la configuración de los porcentajes también debe ajustarse en función de las pruebas repetidas en diferentes mercados para encontrar la combinación de parámetros óptima.
La estrategia se puede optimizar de las siguientes maneras: 1) en combinación con otros indicadores que filtran las señales de entrada, como el RSI, etc.; 2) utilizando parámetros de optimización dinámica de métodos de aprendizaje automático; 3) configurando un mecanismo de salida automática de la barra de pérdidas; 4) en combinación con otras estrategias no tendenciales para equilibrar el riesgo de la estrategia.
En resumen, la estrategia aprovecha la poderosa capacidad de seguimiento de tendencias de los indicadores de ROC para realizar juicios de tendencias y seguimiento de tendencias en combinación con las características de Heikin Ashi, y para realizar un filtro de pérdidas de alto y bajo nivel a través de la formación de porcentajes de ROC. Muestra un buen efecto de seguimiento de la tendencia. Su ventaja reside en la identificación de los cambios de tendencia a tiempo y el seguimiento de la gran tendencia, mientras que a través de la vía de filtrado de fluctuaciones ascendentes y descendentes. Sin embargo, la configuración inadecuada de los parámetros puede afectar el rendimiento de la estrategia, y se enfrenta al riesgo de la inversión de la tendencia.
/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
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/
// © jensenvilhelm
//@version=5
strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false)
// User Inputs
zerohLine = input(0, title="Midline") // Zero line, baseline for ROC (customer can modify this to adjust midline)
rocLength = input(100, title="roc Length") // Lookback period for SMA and ROC (customer can modify this to adjust lookback period)
stopLossLevel = input(2, title="Stop Loss (%)") // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level)
startDate = timestamp("2015 03 03") // Start date for the strategy (customer can modify this to adjust start date)
// Heikin Ashi values
var float haClose = na // Define Heikin Ashi close price
var float haOpen = na // Define Heikin Ashi open price
haClose := ohlc4 // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here)
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 // Calculate Heikin Ashi open price (no customer modification needed here)
// ROC Calculation
roc = ta.roc(ta.sma(haClose, rocLength), rocLength) // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs)
rocHigh = ta.highest(roc, 50) // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period)
rocLow = ta.lowest(roc, 50) // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period)
upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75) // Calculate upper kill line (customer can modify parameters to adjust this line)
lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25) // Calculate lower kill line (customer can modify parameters to adjust this line)
// Trade conditions
enterLong = ta.crossover(roc, lowerKillLine) // Define when to enter long positions (customer can modify conditions to adjust entry points)
exitLong = ta.crossunder(roc, upperKillLine) // Define when to exit long positions (customer can modify conditions to adjust exit points)
enterShort = ta.crossunder(roc, upperKillLine) // Define when to enter short positions (customer can modify conditions to adjust entry points)
exitShort = ta.crossover(roc, lowerKillLine ) // Define when to exit short positions (customer can modify conditions to adjust exit points)
// Strategy execution
if(time >= startDate) // Start strategy from specified start date
if (enterLong)
strategy.entry("Long", strategy.long) // Execute long trades
if (exitLong)
strategy.close("Long") // Close long trades
if (enterShort)
strategy.entry("Short", strategy.short) // Execute short trades
if (exitShort)
strategy.close("Short") // Close short trades
// Plotting
plot(zerohLine,title="Zeroline") // Plot zero line
plot(roc, "RSI", color=color.rgb(248, 248, 248)) // Plot ROC
plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76)) // Plot highest ROC
plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76)) // Plot lowest ROC
plot(upperKillLine, "Upper Kill Line", color = color.aqua) // Plot upper kill line
plot(lowerKillLine, "Lower Kill Line", color = color.aqua) // Plot lower kill line