Количественная краткосрочная стратегия облака Ишимоку


Дата создания: 2023-12-21 11:13:15 Последнее изменение: 2023-12-21 11:13:15
Копировать: 1 Количество просмотров: 1010
1
Подписаться
1623
Подписчики

Количественная краткосрочная стратегия облака Ишимоку

Обзор

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

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

Стратегия состоит из двух основных частей:

  1. Индекс облаков Ичимоку определяет направление тренда

    • Conversion Line: средняя линия последних 7 циклов
    • Базовая линия: среднее значение последних 26 циклов
    • Leading Span A: промежуток между линией конверсии и базовой линией
    • Leading Span B: средняя величина последних 52 циклов

Когда цена в облаке выше, то это многосторонний тренд, а внизу - воздушный тренд. Стратегия определяет обратный тренд с помощью прорыва линии конверсии.

  1. ADX отфильтровывает не трендовые рынки

ADX больше 20 показывает тенденцию, когда стратегия создает торговый сигнал. Менее 20 показывает свертывание, когда стратегия не торгуется.

Правила торговли:

  • Многоголосное вхождение: цена превышает линию конверсии и ADX превышает 20
  • Вход в пустой рынок: цена пробилась ниже линии конверсии и ADX превысил 20
  • Стоп-лост: 150 баллов
  • Стоп: 200 баллов

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

Эта стратегия имеет следующие преимущества:

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

  2. Контроль отмены. Стоп-лосс установлен на 150, эффективно контролирует одиночные потери.

  3. Высокое соотношение прибыли и убытка. Стоп-прекращение - 200 баллов, стоп-убыток - 150 баллов, соотношение прибыли и убытка - до 1,33, легкая прибыль.

  4. Частота торговли умеренная. Торгуйте только в условиях тренда, не часто выходите на рынок.

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

Также существуют следующие риски:

  1. Риск неудачи определения тренда. Показатель облака Ичимоку может привести к ошибочному сигналу, когда тенденция переходит к неудаче. Можно соответствующим образом продлить цикл параметров для оптимизации.

  2. Стоп рискует быть преследованным. Быстрое прерывание может быть прервано. Можно установить мобильный стоп или рассмотреть возможность увеличения зоны стоп.

  3. Риски торговли в ночное время и перед закрытием. Стратегия по умолчанию используется только для торговли в дневное время, а решение о движении в ночное время и перед закрытием может быть недействительным. Можно установить 24-часовую торговлю или разработать торговую стратегию отдельно после перед закрытием.

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

Эта стратегия может быть оптимизирована в следующих направлениях:

  1. Оптимизация параметров Ichimoku Cloud Indicator. Можно тестировать различные параметры конверсионной линии, базовой линии и запасной линии, чтобы найти оптимальную комбинацию параметров.

  2. Оптимизация параметров и отклонений ADX. Можно проверить параметры циклов ADX и отклонения фильтров, чтобы найти оптимальные параметры.

  3. Оптимизация остановочных потерь. Оптимизация остановочных потерь позволяет определить оптимальные точки остановочных потерь на основе отслеживания исторических данных.

  4. Стратегия движущегося стопа. Установка плавающего стопа для лучшего отслеживания трендов прибыли.

  5. Показатели, помогающие определить тенденцию. Добавление таких показателей, как MACD, KD, помогает определить тенденцию, повышает точность сигнала.

  6. Оптимизация адаптации. Разработка параметров стратегии торговли для различных видов.

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

Ichimoku Cloud Quantitative Short Line Strategy объединяет преимущества Ichimoku Cloud Indicator и ADX Indicator, позволяя точно определить переломный момент тренда, а также эффективно отсеивать рынок, избегая ложных сигналов. Стратегия имеет высокую доходность, контролируемый откат, подходящий для коротких операций с отслеживанием тренда.

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

//@version=2
strategy(title='[STRATEGY][RS]Spot/Binary Scalper V0', shorttitle='IC', overlay=true, initial_capital=100000, currency=currency.USD)
//  ||  Adapted from:
//  ||      http://www.binaryoptionsedge.com/topic/1414-ta-spot-scalping-it-works-damn-good/?hl=singh

//  ||  Ichimoku cloud:
conversionPeriods = input(title='Conversion Periods:',  defval=7, minval=1),
basePeriods = 26//input(title='Base Periods',  defval=26, minval=1)
laggingSpan2Periods = 52//input(title='Lagging Span:',  defval=52, minval=1),
displacement = 26//input(title='Displacement:',  defval=26, minval=1)

f_donchian(_len) => avg(lowest(_len), highest(_len))

f_ichimoku_cloud(_conversion_periods, _base_periods, _lagging_span)=>
    _conversion_line = f_donchian(_conversion_periods)
    _base_line = f_donchian(_base_periods)
    _lead_line1 = avg(_conversion_line, _base_line)
    _lead_line2 = f_donchian(_lagging_span)
    [_conversion_line, _base_line, _lead_line1, _lead_line2]

[conversionLine, baseLine, leadLine1, leadLine2] = f_ichimoku_cloud(conversionPeriods, basePeriods, laggingSpan2Periods)

//ps0 = plot(title='A', series=leadLine1, color=green, linewidth=2)
//ps1 = plot(title='B', series=leadLine2, color=red, linewidth=2)
//fill(title='AB', plot1=ps0, plot2=ps1, color=blue, transp=80)
//plot(title='Base', series=baseLine, color=blue, linewidth=1, offset=displacement)
plot(title='Conversion', series=conversionLine, color=blue, linewidth=1)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  ADX
len = input(title="Length",  defval=14)
th = input(title="threshold",  defval=20)

TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  Trade session:
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  Strategy:
trade_size = input(title='Trade Size:',  defval=1)
stop_loss_in_ticks = input(title='Stop Loss in ticks:',  defval=150)
take_profit_in_ticks = input(title='Take Profit in ticks:',  defval=200)

buy_icloud_signal = open < conversionLine and close > conversionLine
buy_adx_signal = DIPlus > 20
buy_signal = istradingsession and buy_icloud_signal and buy_adx_signal

sel_icloud_signal = open > conversionLine and close < conversionLine
sel_adx_signal = DIMinus > 20
sel_signal = istradingsession and sel_icloud_signal and sel_adx_signal


strategy.order('buy', long=true, qty=trade_size, comment='buy', when=buy_signal)
strategy.order('sel', long=false, qty=trade_size, comment='sel', when=sel_signal)

strategy.exit('exit buy', from_entry='buy', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)
strategy.exit('exit sel', from_entry='sel', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)