Интегрированная торговая система Ichimoku Keltner, основанная на стратегии скользящей средней

Автор:Чао Чжан, Дата: 2023-12-20 13:40:08
Тэги:

img

Обзор

Эта стратегия объединяет в себя движущуюся среднюю стратегию, графики облаков Ichimoku и технические индикаторы канала Келтнера для достижения следующего тренда и прорывной торговли, которая подходит для высокочастотной алгоритмической торговли.

Принцип стратегии

  1. Использовать канал Келтнера для оценки того, превышает ли цена акции верхние и нижние рельсы канала в качестве сигнала для открытия позиций
  2. Графики облаков Ichimoku оценивают направление тренда и используют канал Келтнера
  3. Стратегия скользящей средней посылает сигналы закрытия

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

  1. Интегрировать несколько технических показателей для всеобъемлющего суждения для повышения точности принятия решений
  2. Канал Келтнера оценивает условия перекупки и перепродажи, чтобы избежать погони за максимумами и уничтожения минимумов при открытии позиций.
  3. Графики облаков Ichimoku оценивают основные тенденции, чтобы избежать торговли против тренда.
  4. Стратегия скользящей средней фильтрует шоки и предотвращает чрезмерную чувствительность

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

  1. Интеграция нескольких показателей делает параметры более сложными и требует тщательного тестирования
  2. Пересечение линии конверсии и базовой линии облачных графиков не всегда является надежным торговым сигналом
  3. Канал Келтнера должен корректировать параметры для адаптации к характеристикам различных запасов

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

  1. Оценка производительности сервера и соответствующее сокращение циклов скользящих средних для увеличения частоты торговли
  2. Испытать чувствительность различных запасов к параметрам и установить адаптивные параметры
  3. Увеличить стратегию стоп-лосса для сокращения единичных потерь

Резюме

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


/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Author: Persio Flexa
// Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading 
strategy("Ichimoku Keltner Strategy", overlay=true) 

// -- Keltner ------------------------------------------------------------------
source = close

useTrueRange = input(true)
length = input(18, minval=1) 
mult = input(1.8)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="BASE", color=orange,transp=85)
plot(upper, title="UPPER", color=red)
plot(lower, title="LOWER", color=green)

//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
crossUpper = source > upper
crossLower = source  < lower

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

// ---------------------------------------------------------------------


// -- Ichimoku

ATRlength = input(200, minval=1)
ATRMult = input(2.272, minval=1)

ATR = rma(tr(true), ATRlength)

len = input(26, minval=1, title="EMA Length")
src = input(close, title="Source")
out = ema(src, len)

emaup = out+(ATR*ATRMult)
emadw = out-(ATR*ATRMult)

conversionPeriods = input(15, minval=1),
basePeriods = input(35, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2")
fill(p1, p2,silver) 

longCond    = crossover(conversionLine, baseLine)
shortCond   = crossunder(conversionLine, baseLine)
// -------------------------------------------------------------------------

if (crossUpper and (conversionLine > baseLine))
    strategy.entry("long", strategy.long, stop=bprice, comment="LONG")

if (crossLower and (conversionLine < baseLine))
    strategy.entry("short", strategy.short, stop=sprice, comment="SHORT")
    
strategy.close("long", when = (shortCond and source < lower))
strategy.close("short", when = (longCond and source > upper))

Больше