Торговая стратегия Ichimoku Cloud Oscillator

Автор:Чао Чжан, Дата: 2024-02-20 11:12:44
Тэги:

img

Обзор

Это количественная торговая стратегия, которая сочетает в себе индикатор Ichimoku Cloud и индикатор Bollinger Bands. Стратегия использует линию конверсии, базовую линию, ведущий диапазон A и ведущий диапазон B Облака Ichimoku для генерации торговых сигналов, используя при этом Bollinger Bands для оценки волатильности рынка и принятия решения о подходящих сроках входа.

Логика стратегии

Индикатор облаков Ичимоку

Индикатор Ichimoku Cloud состоит из четырех линий: линии конверсии, базовой линии, ведущего спена А и ведущего спена В. Линия конверсии - это средняя цена закрытия за короткий период (9 дней). Базовая линия - это средняя цена закрытия за более длительный 26-дневный период. Ведущий спен А - это средняя цена между линией конверсии и базовой линией, которая ведет к ценовому действию. Ведущий спен В - это средняя цена закрытия за еще более длительный 52-дневный период, который отстает от цены. Сигналы покупки и продажи генерируются, когда краткосрочная скользящая средняя пересекает более или менее долгосрочной.

Боллингерские полосы

Полосы Боллинджера включают три линии: среднюю линию, верхнюю полосу и нижнюю полосу. Средняя линия представляет собой простую скользящую среднюю стоимость закрытия за n-дневный период (установлена здесь на 20 дней). Верхняя полоса представляет собой среднюю линию плюс k раз (установлена здесь на 2 раза) стандартное отклонение. Нижняя полоса представляет собой среднюю линию минус k раз стандартное отклонение. Она определяет, находятся ли цены в пределах нормального диапазона колебаний и определяет уровень волатильности рынка.

Эта стратегия использует золотой крест и смертельный крест ведущего спена B для построения торговых сигналов. Она также включает полосы Боллинджера для определения волатильности цен и решает выйти на рынок, когда волатильность низкая.

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

Эта стратегия сочетает в себе индикатор Ichimoku Cloud и полосы Боллинджера для всестороннего определения тенденций и волатильности рынка, которые могут эффективно улавливать информацию об изменениях рынка для определения местоположения торговых сигналов.

Параметры этой стратегии регулируются для оптимизации для различных продуктов и рыночных условий, что делает ее высоко адаптивной.

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

Эта стратегия в основном опирается на полосы Боллинджера для определения волатильности рынка. Полосы могут потерпеть неудачу, когда экстремальная волатильность вызвана событиями черного лебедя. В этом случае торговые сигналы, построенные на основе облака Ичимоку, могут генерировать ложные сигналы.

Кроме того, сами линии Ichimoku Cloud также чувствительны к резким колебаниям рынка. Конверсия и базовые линии могут давать неправильные сигналы, когда цены сильно колеблются. Выход из позиций или приостановка торговли, вероятно, лучший выбор в таких ситуациях.

Руководство по оптимизации

Другие индикаторы могут рассматриваться в сочетании для определения времени входа, такие как KDJ, чтобы увидеть, является ли рынок перекупленным/перепроданным, и MACD для проверки долгосрочных/короткосрочных скользящих средних отношений.

Кроме того, машинное обучение может быть использовано для оптимизации параметров облака Ichimoku. Различные параметры оказывают значительное влияние на циклы и продукты. Поиск оптимальных комбинаций параметров может значительно улучшить прибыльность стратегии.

Заключение

Эта стратегия сочетает в себе индикатор Ichimoku Cloud и полосы Боллинджера, чтобы учитывать как рыночные тенденции, так и волатильность.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("一目均衡表シグナル + ボリンジャーバンド", overlay=true)

conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2.0, title="Bollinger Bands Multiplier")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// ボリンジャーバンドの計算
basis = ta.sma(close, bbLength)
bbUpper = basis + bbMultiplier * ta.stdev(close, bbLength)
bbLower = basis - bbMultiplier * ta.stdev(close, bbLength)

// 1σ、2σ、3σのライン
bbUpper1 = basis + ta.stdev(close, bbLength)
bbLower1 = basis - ta.stdev(close, bbLength)

bbUpper2 = basis + 2 * ta.stdev(close, bbLength)
bbLower2 = basis - 2 * ta.stdev(close, bbLength)

bbUpper3 = basis + 3 * ta.stdev(close, bbLength)
bbLower3 = basis - 3 * ta.stdev(close, bbLength)

// 遅行スパンがローソクに交差した際のBuyとSellシグナル
buySignalLeadLine = ta.crossover(close, leadLine2)
sellSignalLeadLine = ta.crossunder(close, leadLine2)

// Strategy Entry and Exit Conditions for Lead Line
strategy.entry("BuyLeadLine", strategy.long, when = buySignalLeadLine)
strategy.close("BuyLeadLine", when = sellSignalLeadLine)

strategy.entry("SellLeadLine", strategy.short, when = sellSignalLeadLine)
strategy.close("SellLeadLine", when = buySignalLeadLine)

// Plotting Ichimoku Cloud
plot(conversionLine, color=color.new(color.blue, 0), title="Conversion Line")
plot(baseLine, color=color.new(color.red, 0), title="Base Line")
plot(close, offset = -displacement + 1, color=color.new(color.green, 0), title="Lagging Span")
p1 = plot(leadLine1, offset = displacement - 1, color=color.new(color.green, 0),
     title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=color.new(#cdf80d, 0),
     title="Leading Span B")

fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))



// 2σ、3σのラインをプロット

plot(bbUpper2, color=color.rgb(100, 96, 100), title="BB Upper 2σ")
plot(bbLower2, color=color.rgb(100, 96, 100), title="BB Lower 2σ")

plot(bbUpper3, color=color.rgb(67, 61, 68), title="BB Upper 3σ")
plot(bbLower3, color=color.rgb(67, 61, 68), title="BB Lower 3σ")

// Plotting Entry and Exit Signals
plotshape(series=buySignalLeadLine, title="Buy Signal (Lead Line)", color=color.green, style=shape.triangleup, location=location.belowbar, size=size.small)
plotshape(series=sellSignalLeadLine, title="Sell Signal (Lead Line)", color=color.rgb(255, 115, 0), style=shape.triangledown, location=location.abovebar, size=size.small)


Больше