Динамические скользящие средние и стратегия торговли по каналу Келтнера

Автор:Чао Чжан, Дата: 2023-12-25 13:36:40
Тэги:

img

Обзор: Эта стратегия объединяет динамические скользящие средние, индикатор Super Trend, потенциальные уровни поддержки и сопротивления и Keltner Channels для проведения многоуровневых суждений о колебаниях цен и достижения автоматизированной торговли, следующей за трендом.

Логика стратегии:
Эта стратегия использует динамические скользящие средние для определения среднесрочного направления тренда цен. В частности, на основе выбора пользователя сценарий принимает Простую скользящую среднюю (SMA) или Экспоненциальную скользящую среднюю (EMA). Когда самая высокая цена, самая низкая цена и цена закрытия все выше, чем в предыдущий день, это указывает на бычью тенденцию. Когда все они ниже, чем в предыдущий день, это указывает на медвежий тренд. На основе этого, в сочетании с позицией динамических скользящих средних, генерируются сигналы купли и продажи.

Кроме того, стратегия также использует индикатор Super Trend для выявления долгосрочных тенденций. Индикатор Super Trend включает в себя средний истинный диапазон (ATR) и генерирует сигналы покупки, когда цены выше верхней полосы, в то время как предыдущий закрытие было ниже верхней полосы. Он генерирует сигналы продажи, когда цены проходят ниже нижней полосы, в то время как предыдущее закрытие было выше нижней полосы.

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

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

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

  1. В сочетании с динамическими скользящими средними и индикатором Super Trend он строго оценивает направление тренда и эффективно фильтрует ложные прорывы на рынке.

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

  3. Индикатор Super Trend может отслеживать долгосрочные тенденции и отслеживать направленные тенденции.

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

  5. В целом частота торгов умеренная без чрезмерно интенсивной торговли.

Риски:

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

  2. Точки остановки при выходе из диапазонов каналов могут быть слишком широкими с высокими рисками на одну сделку.

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

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

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

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

  2. Регулировать параметры периода ATR и фактора индикатора Super Trend для оптимизации его функциональности.

  3. Стойка потерь, основанная на времени, может дополнительно контролировать риски потери по торговле.

  4. Включить другие вспомогательные показатели, такие как полосы Боллинджера и KD, чтобы дополнительно оценить местные коррекции и возможности отмены.

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

  6. Провести оптимизацию параметров и обратное тестирование для сравнения результатов различных комбинаций параметров.

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


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mahesh_linux1989

//@version=5
strategy("Intraday Trend Identifier with Dynamic Moving Averages, Super Trend, VWAP, and Keltner Signals", overlay=true, shorttitle="ITI Keltner")

// Input for Moving Average Type
maType = input("SMA", title="Moving Average Type")

// Input for SMA Length
smaLength = input.int(20, title="SMA Length", minval=1, maxval=200)

// Input for EMA Length
emaLength = input.int(20, title="EMA Length", minval=1, maxval=200)

// Selecting Moving Average
selectedMA = maType == "SMA" ? ta.sma(close, smaLength) : ta.ema(close, emaLength)

// Bullish conditions
bullish = high > high[1] and low > low[1] and close > high[1]

// Bearish conditions
bearish = high < high[1] and low < low[1] and close < low[1]

// Strategy logic
longCondition = bullish and not bearish and close > selectedMA
shortCondition = bearish and not bullish and close < selectedMA

if (longCondition)
    strategy.entry("Buy", strategy.long)

if (shortCondition)
    strategy.entry("Sell", strategy.short)

// Exit conditions
bullishExit = close < selectedMA
bearishExit = close > selectedMA

if (bullishExit)
    strategy.close("Buy")

if (bearishExit)
    strategy.close("Sell")

// Keltner Channels
basisKC = maType == "SMA" ? ta.sma(close, smaLength) : ta.ema(close, emaLength)
atrKC = ta.atr(14)
upperKC = basisKC + atrKC
lowerKC = basisKC - atrKC

// Super Trend
atrLengthST = input.int(7, title="ATR Length for Super Trend")
factorST = input.int(2, title="Factor for Super Trend")

atrValueST = ta.atr(atrLengthST)

var float upperST = na
var float lowerST = na

if (close[1] > upperST[1])
    upperST := close[1] - factorST * atrValueST
else
    upperST := close - factorST * atrValueST

if (close[1] < lowerST[1])
    lowerST := close[1] + factorST * atrValueST
else
    lowerST := close + factorST * atrValueST

// Potential Support and Resistance
potentialSupport = ta.lowest(low, smaLength)
potentialResistance = ta.highest(high, smaLength)

// VWAP
//vwapValue = ta.vwap(close, volume)

// Keltner Signals
buySignalKC = close > upperKC and close[1] <= upperKC[1]
sellSignalKC = close < lowerKC and close[1] >= lowerKC[1]

// Super Trend Signals
buySignalST = close > upperST and close[1] <= upperST[1]
sellSignalST = close < lowerST and close[1] >= lowerST[1]

// Plotting
plot(basisKC, color=color.gray, title="Keltner Channel Basis")
plot(upperKC, color=color.blue, title="Upper Keltner Channel")
plot(lowerKC, color=color.blue, title="Lower Keltner Channel")

plot(upperST, color=color.green, title="Super Trend Upper")
plot(lowerST, color=color.red, title="Super Trend Lower")

plot(potentialSupport, color=color.green, title="Potential Support")
plot(potentialResistance, color=color.red, title="Potential Resistance")

//plot(vwapValue, color=color.orange, title="VWAP")

// Plot Bullish and Bearish arrows
plotarrow(buySignalST ? 1 : na, colorup=color.green, offset=-1, title="Bullish Arrow ST")
plotarrow(sellSignalST ? -1 : na, colordown=color.red, offset=-1, title="Bearish Arrow ST")

plotarrow(buySignalKC ? 1 : na, colorup=color.blue, offset=-1, title="Bullish Arrow KC")
plotarrow(sellSignalKC ? -1 : na, colordown=color.orange, offset=-1, title="Bearish Arrow KC")

// Plot candlesticks
plot(open, color=color.gray)
plot(close, color=bullish ? color.green : bearish ? color.red : color.gray)
plot(high, color=bullish ? color.green : bearish ? color.red : color.gray)
plot(low, color=bullish ? color.green : bearish ? color.red : color.gray)

Больше