Стратегия тройного скользящего среднего канала для терпеливой добычи ценной информации из линий свечей

Автор:Чао Чжан, Дата: 2024-02-01 11:12:47
Тэги:

img

Обзор

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

Принципы

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

  1. Индикатор BodyResistanceChannel используется для выявления уровней сопротивления тела свечи.
  2. Индикатор поддержки/сопротивления используется для получения многодневных уровней поддержки и сопротивления.
  3. Двойная система EMA помогает определить направление тренда.
  4. Индикатор Hull MA сглаживает кривую цен.

На этой основе, возможности обращения определяются с помощью распознавания моделей для формулирования стратегий арбитража.

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

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

  1. Создание ценовых каналов с использованием нескольких EMAS помогает четко определить тенденцию цен.
  2. Индикатор Hull MA эффективно сглаживает ценовые перепады.
  3. Сочетание моделей реверсии и индикаторов каналов позволяет осуществлять торговлю с высокой вероятностью и низким риском.
  4. Создание многоуровневой системы показателей обеспечивает стабильные и надежные торговые сигналы.

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

Потенциальные риски этой стратегии также существуют:

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

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

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

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

Заключение

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


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:', defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////

Больше