Торговая стратегия на основе процентилей Heikin Ashi ROC


Дата создания: 2023-10-23 15:41:40 Последнее изменение: 2023-10-23 15:41:40
Копировать: 0 Количество просмотров: 842
1
Подписаться
1617
Подписчики

Торговая стратегия на основе процентилей Heikin Ashi ROC

Обзор

Стратегия называется “Стратегия трейдинга на основе процентов Heikin Ashi ROC”, и ее целью является предоставление простой в использовании торговой структуры, основанной на Heikin Ashi ROC и его процентах.

Стратегический принцип

Стратегия генерирует верхний и нижний трейлер для торговли, рассчитывая ROC закрытия Heikin Ashi и его максимумы и минимумы в разные периоды времени. В частности, она рассчитывает ROC закрытия Heikin Ashi за прошедшие 50 циклов. Затем высчитывает максимальные значения ROC rocHigh и минимальные значения rocLow. Затем рассчитывает верхнюю линию KillLine в соответствии с rocHigh, а нижнюю линию KillLine в соответствии с rocLow.

Анализ преимуществ

Наибольшим преимуществом этой стратегии является то, что она использует мощную способность отслеживания тенденций индикатора ROC, а также свойства выравнивания информации о ценах Heikin Ashi, чтобы эффективно идентифицировать изменения в тенденции. По сравнению с такими показателями, как простая подвижная средняя, ROC реагирует на изменения в ценах более осторожно, что позволяет стратегии вовремя войти в игру. Кроме того, использование процентов, генерируемых вверх и вниз, может эффективно отфильтровывать колебания, чтобы избежать нежелательных сделок с ложными прорывами.

Анализ рисков

Основной риск этой стратегии заключается в том, что неправильная настройка параметров может привести к тому, что торговля будет часто или недостаточно чувствительной. Необходимо тщательно настроить циклы rocLength и вычисления процентной величины, иначе это может привести к слишком слабой или жесткой траектории, что приведет к упущенным торговым возможностям или вызову ненужных потерь. Кроме того, настройка процентной величины также должна быть скорректирована в соответствии с многократными испытаниями на разных рынках, чтобы найти оптимальную комбинацию параметров.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах: 1) в сочетании с другими индикаторами, фильтрующими входные сигналы, такие как RSI и т. Д.; 2) с использованием методов машинного обучения для динамической оптимизации параметров; 3) с установкой механизма автоматического грубого выхода из стоп-стоп; 4) в сочетании с другими не трендовыми стратегиями для балансирования риска стратегии.

Подвести итог

В целом, стратегия использует мощные возможности отслеживания тенденций в показателях ROC для определения и отслеживания тенденций в сочетании с характеристиками Heikin Ashi и для фильтрации убытков вверх и вниз по траекториям, сформированным в процентах ROC, что позволяет реализовать Показать лучший эффект отслеживания тренда. Его преимущество заключается в своевременном выявлении изменений в тренде и отслеживании больших тенденций, а также через фильтрацию колебаний вверх и вниз. Однако неправильная настройка параметров может повлиять на эффективность стратегии и рисковать обратным трендом.

Исходный код стратегии
/*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