Стратегия прорыва Kana Candle на основе скользящей средней и поддержки сопротивления

Автор:Чао Чжан, Дата: 2023-12-27 15:27:45
Тэги:

img

Обзор

Это стратегия быстрого прорыва, основанная на техническом анализе японских свечей, в сочетании с индикаторами скользящей средней и индикаторами поддержки сопротивления для определения тренда и позиции.

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

Стратегия использует 20-периодную простую скользящую среднюю (SMA) и 200-периодную экспоненциальную скользящую среднюю (EMA) для определения направления тренда. Когда цена находится в восходящем тренде (SMA выше EMA), и текущее японское свечковое реальное тело закрывается выше открытого (белое тело), это указывает на усиление покупательной способности. Когда цена находится в нисходящем тренде (SMA ниже EMA), и текущее японское свечковое реальное тело закрывается ниже открытого (черное тело), это указывает на усиление давления на продажу.

С подтверждением тренда и импульса стратегия ждет быстрого прорыва цены и входит на рынок. Так называемый прорыв означает, что цена пересекает первую линию канала из трех заранее установленных каналов ATR (вычисляется на основе 200-дневного ATR и коэффициентов) и входит во вторую линию канала. Это высоковероятный сигнал прорыва.

После выхода на рынок правила получения прибыли и остановки потерь очень просты. До тех пор, пока цена касается внешних границ канала (таких как линия получения прибыли или линия остановки потери), она сразу же получает прибыль или остановку потери. Это обеспечивает быструю прибыль стратегии.

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

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

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

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

Стратегия в основном опирается на индикаторы скользящих средних показателей для определения направления тренда, с риском отклонения и консолидации.

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

Чтобы контролировать риски, мы можем расширить диапазон каналов, чтобы уменьшить частоту открытия; или добавить модуль управления позициями для динамической корректировки одной позиции на основе общего капитала.

Оптимизация

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

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

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

  3. Комбинировать управление фондовым фондом. Устанавливать правила для динамической корректировки фондового фонда. Выбирать оптимальный фондовый фонд на разных этапах для улучшения стабильности.

  4. Используйте ИИ для прогнозирования тенденций и ключевых уровней цен, помогая определить диапазон каналов и сроки входа.

Заключение

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


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

//@version=2
strategy("Kana with S/R Strategy", title = "KANA with S/R", overlay=true)

len = input(20, minval=1, title="Length")
multiplier1 = input(1, minval=1, title="multiplier1")
multiplier2 = input(2, minval=1, title="multiplier2")
multiplier3 = input(3, minval=1, title="multiplier3") 
srTimeFrame = input(240, minval=1, title="Support Resistance TimeFrame")
useSR = input(true, type = bool, title="Use Support/Resistance")
tpPercent = input(0.5, type=float, title = "Take Profit Percent")
useTP = input(false, type=bool, title = "Use Take Profit")
tp = (close * tpPercent / 100) / syminfo.mintick

src = input(close, title="Source")
mid = sma(src, len)
plot(mid, title="SMA", color=blue)

trend = ema(close, 200)
plot(trend, title="Trend", color=green)


upper1 = mid + atr(200) * multiplier1
upper2 = mid + atr(200) * multiplier2
upper3 = mid + atr(200) * multiplier3

lower1 = mid - atr(200) * multiplier1
lower2 = mid - atr(200) * multiplier2
lower3 = mid - atr(200) * multiplier3

plot(upper1, color = orange)
plot(upper3, color = red)

plot(lower1, color = orange)
plot(lower3, color = red)

haClose = request.security(heikinashi(syminfo.tickerid), timeframe.period, close)
haOpen = request.security(heikinashi(syminfo.tickerid), timeframe.period, open)

resistance = request.security(syminfo.tickerid,tostring(srTimeFrame), high)
support  = request.security(syminfo.tickerid,tostring(srTimeFrame), low)
rsPos = (close - support[srTimeFrame]) / (resistance[srTimeFrame] - support[srTimeFrame])

MACD = ema(close, 120) - ema(close, 260)
aMACD = ema(MACD, 90)
hisline = MACD - aMACD

longCondition = (mid > trend) and (haOpen[1] < haClose[1]) and (mid > mid[1]) and (close < upper1) and hisline > 0 and (useSR == true ? (rsPos > 100) : true)
shortCondition = (mid < trend) and (haOpen[1] > haClose[1]) and (mid < mid[1]) and (close > lower1) and hisline < 0 and (useSR == true ? (rsPos < 0) : true)

longExit = (close > upper3 ) or (close < lower2)
shortExit = (close < lower3) or (close > upper2)

if (longCondition)
    strategy.entry("Long", strategy.long)
    if (useTP)
        strategy.exit("Exit Long", "Long", profit = tp)
        
if (longExit)
    strategy.close("Long")
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    if (useTP)
        strategy.exit("Exit Short", "Short", profit = tp)
    
if (shortExit)
    strategy.close("Short")

Больше