Интегрированная торговая система Ишимоку-Кельтнера, основанная на стратегии скользящей средней


Дата создания: 2023-12-20 13:40:08 Последнее изменение: 2023-12-20 13:40:08
Копировать: 0 Количество просмотров: 745
1
Подписаться
1621
Подписчики

Интегрированная торговая система Ишимоку-Кельтнера, основанная на стратегии скользящей средней

Обзор

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

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

  1. Использование Keltner Channel для определения того, превышает ли цена канал вверх-вниз, в качестве сигнала для создания позиции
  2. Карта облаков Ичимоку, используемая в сочетании с каналом Келтнера для определения направления тенденций
  3. Стратегия равной линии дает сигнал о закрытии

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

  1. Интеграция различных технических показателей, комплексные суждения, повышение точности принятия решений
  2. Keltner Channel оценивает ситуацию с перекупками и перепродажами, чтобы избежать построения позиций вслед за взлетом и падением
  3. Ichimoku Cloud Map: Определяйте тенденции и избегайте обратной торговли
  4. Однородная стратегия фильтрации колебаний, предотвращающая чрезмерную чувствительность

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

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

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

  1. Оценка производительности серверов, соответствующее сокращение среднелинейных циклов, повышение частоты сделок
  2. Тестирование чувствительности различных акций к параметрам, установка адаптивных параметров
  3. Увеличение стратегии по удержанию убытков и снижение убытков в отдельности

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

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

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