
Эта стратегия использует три различных технических показателя в комбинации, чтобы создать арбитражную стратегию с несколькими временными рамками, чтобы получить сверхприбыль с низким риском за счет захвата ценовых тенденций в разные периоды времени.
Три технических показателя, используемых в этой стратегии, - это Кельтский канал (KC), Волатильность остановки (Vstop) и Вильгельмский индикатор сбора сбора (WAE). Кельтский канал используется для определения того, находится ли цена за пределами диапазона канала, и, следовательно, посылает торговый сигнал. Волатильность остановки используется для динамического регулирования позиции остановки, чтобы уменьшить ненужные остановки, гарантируя при этом остановку.
Когда цена выше, чем вверх по Келтскому каналу, рассматривается как сигнал bullish. Когда цена ниже, чем вниз по Келтскому каналу, рассматривается как сигнал bearish.
Устойчивость к колебаниям устанавливается в зависимости от колебаний цены и ширины канала. Она может динамически корректироваться, чтобы избежать слишком консервативной позиции, гарантируя при этом убытки.
Индекс Уильяма определяет, находится ли цена в сильной тенденции к росту или падению, путем расчета MACD и ширины каналов пояса Брин.
Комбинируя эти три показателя, сигналы на разных временных промежутках осуществляют взаимную верификацию. Это уменьшает вероятность ошибочного суждения, создавая стабильную оптимизированную стратегическую логику.
Наибольшим преимуществом этой стратегии является точный торговый сигнал, вызванный комбинацией нескольких индикаторов. Три индикатора действуют на разных временных периодах, проверяют друг друга, что позволяет эффективно снизить вероятность ошибочного суждения и повысить точность сигнала. Кроме того, параметры остановки колебаний динамичны, позволяя корректировать положение остановки в зависимости от колебаний в реальном времени, чтобы дополнительно контролировать риск.
По сравнению с единой стратегией показателей, эта комбинация стратегий может обеспечить более точный и эффективный торговый сигнал. В то же время, три показателя взаимодействуют друг с другом, формируя торговые суждения в течение нескольких временных рамок. Эта логическая конструкция очень научна и разумна, и ее следует использовать.
Основной риск этой стратегии заключается в том, что неправильная настройка параметров может привести к пересоответствию. Всего в трех показателях 8 параметров, неправильная настройка может негативно повлиять на стратегию. Кроме того, весовые отношения между показателями также должны быть разумно настроены, иначе сигналы могут компенсировать друг друга и привести к недействительности.
Для снижения этих рисков в процессе установки параметров необходимо учитывать адаптацию к различным рыночным условиям и адаптировать их к оптимальному пакету параметров с помощью обратного анализа. Кроме того, следует соответствующим образом регулировать весовые отношения между показателями, чтобы обеспечить эффективное срабатывание торговых сигналов.
Пространство для оптимизации этой стратегии сосредоточено в основном в двух аспектах: оптимизация параметров и улучшение стратегии стоп-лосс. В частности, можно начать с следующих аспектов:
Более научно и рационально выбирать параметры показателя, оптимизировать комбинацию параметров. Можно с помощью алгоритмов искать оптимальные параметры в соответствии с такими целями, как максимизация доходов, минимизация рисков.
Улучшение стратегии остановки убытков, при условии гарантирования остановки убытков, дальнейшее сокращение ненужных остановок, повышение выигрышной вероятности. Например, объединение большего количества индикаторов в качестве сигнала остановки убытков или установка постепенного отклонения позиции остановки убытков.
Оптимизация весовых отношений индикаторов и логики суждения торговых сигналов, снижение погрешности суждения. Можно ввести больше характеристик поведения цен, создать более стабильные и надежные правила суждения.
Попробуйте внедрить модели машинного обучения для автоматической оптимизации параметров или использовать программирование глубокого реинструктирования для оценки и улучшения стратегий.
Эта стратегия создает систему арбитража с использованием комбинации канала Келта, паузы волатильности и трех индикаторов Вильгельма. Многоиндикаторная комбинация повышает точность торговых сигналов, а динамическая стоп-пауза контролирует риск. Однако есть еще место для улучшения параметров и оптимизации.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuarryLake", overlay=true) ///Ultilized modified full kelly for this strategy = 36%
///Keltner channel///
nPeriod = input(title="Keltner Period", type=input.integer, defval=200, minval=1)
Mult = input(title="Keltner Mult", type=input.integer, defval=5, minval=1)
xPrice = ema(hlc3, nPeriod)
xMove = ema(high - low, nPeriod)
xMoveMult = xMove * Mult
xUpper = xPrice + xMoveMult
xLower = xPrice - xMoveMult
// plot(xPrice, color=red, title="KSmid")
p1 = plot(xUpper, color=color.white, title="KSup")
p2 = plot(xLower, color=color.white, title="KSdn")
fill(p1, p2, color=close > xUpper ? color.green : close < xLower ? color.red : color.white)
kclongcondition = close > xUpper
kcshortcondition = close < xLower
kccloselongcondition = crossunder(close, xUpper)
kccloseshortcondition = crossover(close, xLower)
///Volatility Stop///
length = input(title="Vstop length", type=input.integer, defval=3, minval=1)
mult1 = 1.5
atr_ = atr(length)
max1 = 0.0
min1 = 0.0
is_uptrend_prev = false
stop = 0.0
vstop_prev = 0.0
vstop1 = 0.0
is_uptrend = false
is_trend_changed = false
max_ = 0.0
min_ = 0.0
vstop = 0.0
max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)
is_uptrend_prev := nz(is_uptrend[1], true)
stop := is_uptrend_prev ? max1 - mult1 * atr_ : min1 + mult1 * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult1 * atr_ : min_ + mult1 * atr_ :
vstop1
plot(vstop, color=is_uptrend ? color.green : color.red, style=plot.style_line, linewidth=1)
vstoplongcondition = close > vstop
vstoplongclosecondition = crossunder(close, vstop)
vstopshortcondition = close < vstop
vstopshortclosecondition = crossover(close, vstop)
///Waddah Attar Explosion///
sensitivity = input(150, title="Sensitivity")
fastLength = input(20, title="FastEMA Length")
slowLength = input(40, title="SlowEMA Length")
channelLength = input(20, title="BB Channel Length")
mult = input(2.0, title="BB Stdev Multiplier")
DEAD_ZONE = nz(rma(tr(true), 100)) * 3.7
calc_macd(source, fastLength, slowLength) =>
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
fastMA - slowMA
calc_BBUpper(source, length, mult) =>
basis = sma(source, length)
dev = mult * stdev(source, length)
basis + dev
calc_BBLower(source, length, mult) =>
basis = sma(source, length)
dev = mult * stdev(source, length)
basis - dev
t1 = (calc_macd(close, fastLength, slowLength) -
calc_macd(close[1], fastLength, slowLength)) * sensitivity
t2 = (calc_macd(close[2], fastLength, slowLength) -
calc_macd(close[3], fastLength, slowLength)) * sensitivity
e1 = calc_BBUpper(close, channelLength, mult) -
calc_BBLower(close, channelLength, mult)
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0
waelongcondition = trendUp and trendUp > DEAD_ZONE and trendUp > e1
waeshortcondition = trendDown and trendDown > DEAD_ZONE and trendDown > e1
///Long Entry///
longcondition = kclongcondition and vstoplongcondition and waelongcondition
if longcondition
strategy.entry("Long", strategy.long)
///Long exit///
closeconditionlong = kccloselongcondition or vstoplongclosecondition
if closeconditionlong
strategy.close("Long")
///Short Entry///
shortcondition = kcshortcondition and vstopshortcondition and waeshortcondition
if shortcondition
strategy.entry("Short", strategy.short)
///Short exit///
closeconditionshort = kccloseshortcondition or vstopshortclosecondition
if closeconditionshort
strategy.close("Short")
///Free Hong Kong, the revolution of our time///