Стратегия квантовых облаков Ичимоку

Автор:Чао Чжан, Дата: 2023-11-24 10:15:15
Тэги:

img

Обзор

Эта стратегия оценивает направление тренда через индикатор Ichimoku, в сочетании с K-линейными паттернами, скользящими средними и индикатором Stochastic RSI, чтобы отфильтровать сигналы и идти длинным в лучших точках входа, когда тенденция растет.

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

Основными критериями оценки стратегии являются:

  1. Линия 1 Ичимоку пересекает линию 2, что указывает на тенденцию к росту.
  2. Цена закрытия линии K пересекает линию 1, что соответствует условию следования тренду.
  3. К-линия - это зеленая свеча, тенденция растет
  4. При включении скользящих средних, быстрая МА пересекает медленную МА
  5. При включении стохастического RSI линия %K пересекает линию %D

Когда все вышеперечисленные условия будут выполнены одновременно, стратегия откроет длинные позиции.

Стратегия в основном использует облако Ичимоку для определения основного направления тренда, в сочетании с вспомогательными индикаторами для фильтрации сигналов и длинного хода в лучшие моменты, когда тенденция растет.

Преимущества стратегии

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

Риски стратегии

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

Контрмеры:

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

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

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

Резюме

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


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Ichimoku only Long Strategy", shorttitle="Ichimoku only Long", overlay = true, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=10000, currency=currency.USD)

// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2017,title="FromYear",minval=2017)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

//Enable RSI
enableema = input(true, title="Enable EMA?")
enablestochrsi = input(false, title="Enable Stochastik RSI?")

//EMA
emasrc = close, 
len1 = input(24, minval=1, title="EMA 1")
len2 = input(90, minval=1, title="EMA 2")

ema1 = ema(emasrc, len1)
ema2 = ema(emasrc, len2)

col1 = color.lime
col2 = color.red

//EMA Plots
plot(ema1, title="EMA 1", linewidth=1, color=col1)
plot(ema2, title="EMA 2", linewidth=1, color=col2)

//STOCH RSI
smoothK = input(3, minval=1, title="RSI K Line")
smoothD = input(3, minval=1, title="RSI D Line")
lengthRSI = input(14, minval=1, title="RSI Length")
lengthStoch = input(14, minval=1, title="Stochastik Length")
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

//Ichimoku
conversionPeriods = input(9, minval=1, title="Ichi Conversion Line Length")
basePeriods = input(26, minval=1, title="Ichi Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Ichi Lagging Span 2 Length")
displacement = input(1, minval=0, title="Ichi Displacement")
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 - 1, color=color.green,
	 title="Lead 1")
p2 = plot(leadLine2, offset = displacement - 1, color=color.red,
	 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red)


//Long Condition
crossup = k[0] > d[0] and k[1] <= d[1]
ichigreenabovered = leadLine1 > leadLine2
ichimokulong = close > leadLine1
greencandle =  close > open
redcandle = close < open
emacond = ema1 > ema2
longcondition = ichigreenabovered and ichimokulong and greencandle

//Exit Condition
ichimokuexit = close < leadLine1

exitcondition = ichimokuexit and redcandle

//Entrys

if (enablestochrsi == false) and (enableema == false) and (longcondition) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)
    
if (enablestochrsi == true) and (enableema == false) and (longcondition) and (crossup) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)

if (enableema == true) and (enablestochrsi == false) and (longcondition) and (emacond) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)

if (enableema == true) and (enablestochrsi == true) and (longcondition) and (emacond) and (crossup) and (afterStartDate) and (strategy.opentrades < 1)
    strategy.entry("Long", strategy.long)


//Exits
if (afterStartDate)
    strategy.close(id = "Long", when = exitcondition)









Больше