Стратегия скальпинга Ichimoku

Автор:Чао Чжан, Дата: 2021-12-21 11:13:15
Тэги:

img

Обзор

Ichimoku Cloud Quant Scalping Strategy - это краткосрочная количественная стратегия, интегрирующая Ichimoku Cloud и Average Directional Index (ADX). Она использует Ichimoku Cloud для определения направления тренда и ADX для фильтрации не трендовых рынков для скальпирования в трендовых условиях.

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

Стратегия состоит из двух основных компонентов:

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

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

    Цена выше облака указывает на восходящий тренд, а ниже означает нисходящий.

  2. ADX для фильтрации рынка без трендов

    Принимать сигналы только тогда, когда ADX превышает 20, что указывает на трендовый рынок.

Торговые правила:

  • Длинный вход: перерывы цены выше линии конверсии и ADX>20
  • Краткий вход: перерыв цены ниже линии конверсии и ADX>20
  • Стоп-лосс: 150 тиков
  • Приобрести прибыль: 200 тиков

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

Преимущества этой стратегии:

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

  2. Контроль вывода. 150 тиков остановки потери эффективно ограничивает по торговым потерям.

  3. Высокий коэффициент прибыли. 200 тиков получают прибыль против 150 тиков стоп-лосс дает коэффициент прибыли 1,33, легко получить прибыль.

  4. Требуется иметь соответствующую частоту торговли, чтобы предотвратить переоценку.

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

Риски:

  1. Риск неудачи определения тренда. Неправильный сигнал, когда облако Ичимоку не может обнаружить изменение тренда. Может оптимизировать параметры для повышения точности.

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

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

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

Потенциальные направления оптимизации:

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

  2. Параметр ADX и оптимизация порога для определения оптимальных значений.

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

  4. Остановить потерю, чтобы лучше следовать тренду.

  5. Дополнительные индикаторы, такие как MACD и KD, помогают определить тенденцию.

  6. Адаптивная оптимизация для различных продуктов.

Заключение

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


/*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)


Больше