Количественная торговая стратегия на основе модифицированной скользящей средней Халла и Ichimoku Kinko Hyo

HMA IKHS WMA
Дата создания: 2024-04-28 13:39:00 Последнее изменение: 2024-04-28 13:39:00
Копировать: 11 Количество просмотров: 564
1
Подписаться
1617
Подписчики

Количественная торговая стратегия на основе модифицированной скользящей средней Халла и Ichimoku Kinko Hyo

Обзор

Стратегия объединяет в себе два технических показателя: скорректированный Hull Moving Average (HMA) и первичное равновесие (Ichimoku Kinko Hyo), чтобы зафиксировать среднесрочные и долгосрочные тенденции рынка. Основная идея стратегии заключается в использовании перекрестных сигналов HMA и первичного равновесия (Kijun Sen), а также первичного равновесия (Kumo) в качестве фильтрующих условий для определения направления тенденции рынка и торговли.

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

  1. Расчет скорректированного Hull Moving Average (HMA)
    • Вычислить WMA (весовая скользящая средняя) и провести двойную гладкую обработку, получив исправленную HMA
  2. Рассчитывание показателей, которые на первый взгляд кажутся равновесными
    • Вычислить переходную линию (Tenkan Sen), базовую линию (Kijun Sen), первую линию (Senkou Span A) и первую линию (Senkou Span B)
  3. Создание торгового сигнала
    • Когда HMA пересекает базисную линию, а цена закрытия находится выше облака, образуется полисигнал
    • Сигналы об убывании создаются, когда HMA пересекает базисную линию, а цена закрытия находится ниже облака
  4. Выполнение сделки
    • Соответствующие торговые операции по сигналам о плюсе или минусе
  5. Выход из сделки
    • Выход из текущей позиции, когда HMA пересекает базовую линию в противоположном направлении

Стратегические преимущества

  1. В сочетании с HMA и равновесием на первый взгляд, два эффективных индикатора отслеживания тенденций позволяют лучше улавливать тенденции рынка
  2. Использование облака сбалансированности в качестве фильтрации может эффективно снизить количество ложных сигналов и повысить вероятность выигрыша торгов
  3. Поправленные HMA имеют более быструю скорость отклика и меньшую задержку по сравнению с традиционными подвижными средними, что позволяет своевременно отражать изменения рынка
  4. Четкая логика стратегии, легко понятная и реализуемая, применимая к различным рынкам и временным периодам

Стратегический риск

  1. Эта стратегия может создавать больше ложных сигналов во время рыночных потрясений или неясных тенденций, что приводит к частым сделкам и потерем средств.
  2. Настройка параметров стратегии имеет большое влияние на результаты торговли, и различные комбинации параметров могут привести к различным результатам
  3. Стратегия не учитывает внезапные события на рынке и нерациональное поведение, которое может быть более рискованным в экстремальных рыночных условиях

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

  1. Введение других технических или рыночных настроений для повышения надежности и стабильности сигналов
  2. Оптимизация параметров стратегии, например, поиск оптимальных комбинаций параметров с помощью машинного обучения или генетических алгоритмов
  3. Подумайте о том, чтобы включить модули управления рисками, такие как установка стоп-стоп, управление позициями и т. Д., чтобы контролировать рисковые пробелы в стратегии
  4. Целенаправленная адаптация и оптимизация стратегий в соответствии с особенностями различных рынков и временных периодов

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

Эта стратегия, в сочетании с скорректированным Hull Moving Average и первичным равновесием, создает относительно стабильную систему торговли, отслеживающую тенденции. Логика стратегии ясна, ее легко реализовать, но она также обладает определенными преимуществами. Тем не менее, эффективность стратегии по-прежнему зависит от рыночных условий и параметров параметров, и требует дальнейшей оптимизации и улучшения. В практическом применении стратегия должна быть соответствующим образом скорректирована и управлена в сочетании с конкретными рыночными особенностями и предпочтениями в отношении риска, чтобы получить лучшие результаты торговли.

Исходный код стратегии
/*backtest
start: 2024-04-20 00:00:00
end: 2024-04-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull MA_X + Ichimoku Kinko Hyo Strategy", shorttitle="HMX+IKHS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)

// Hull Moving Average Parameters
keh = input(12, title="Double HullMA")
n2ma = 2 * wma(close, round(keh/2)) - wma(close, keh)
sqn = round(sqrt(keh))
hullMA = wma(n2ma, sqn)

// Ichimoku Kinko Hyo Parameters
tenkanSenPeriods = input(9, title="Tenkan Sen Periods")
kijunSenPeriods = input(26, title="Kijun Sen Periods")
senkouSpanBPeriods = input(52, title="Senkou Span B Periods")
displacement = input(26, title="Displacement")

// Ichimoku Calculations
highestHigh = highest(high, max(tenkanSenPeriods, kijunSenPeriods))
lowestLow = lowest(low, max(tenkanSenPeriods, kijunSenPeriods))
tenkanSen = (highest(high, tenkanSenPeriods) + lowest(low, tenkanSenPeriods)) / 2
kijunSen = (highestHigh + lowestLow) / 2
senkouSpanA = ((tenkanSen + kijunSen) / 2)
senkouSpanB = (highest(high, senkouSpanBPeriods) + lowest(low, senkouSpanBPeriods)) / 2

// Plot Ichimoku
p1 = plot(tenkanSen, color=color.blue, title="Tenkan Sen")
p2 = plot(kijunSen, color=color.red, title="Kijun Sen")
p3 = plot(senkouSpanA, color=color.green, title="Senkou Span A", offset=displacement)
p4 = plot(senkouSpanB, color=color.orange, title="Senkou Span B", offset=displacement)
fill(p3, p4, color=color.gray, title="Kumo Shadow")

// Trading Logic
longCondition = crossover(hullMA, kijunSen) and close > senkouSpanA[displacement] and close > senkouSpanB[displacement]
shortCondition = crossunder(hullMA, kijunSen) and close < senkouSpanA[displacement] and close < senkouSpanB[displacement]

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Logic - Exit if HullMA crosses KijunSen in the opposite direction
exitLongCondition = crossunder(hullMA, kijunSen)
exitShortCondition = crossover(hullMA, kijunSen)

if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")