
Эта стратегия основана на двухразовой стратегии прорыва торговли в брин-поясе. Она использует верхний и нижний рельсы в брин-поясе в качестве сигналов покупки и продажи, а также устанавливает точки стоп-лосса для контроля риска.
В этой стратегии используются верхние и нижние линии линии брин-пояса. Брин-пояса состоят из двух стандартных дифференциальных каналов, соответствующих равновесию и равновесию. Сигнал продажи возникает, когда цена касается или прорывает брин-пояса. Сигнал покупки возникает, когда цена касается или прорывает брин-пояса.
В частности, стратегия рисует полосу Бурин, рассчитывая среднюю величину за заданный период (например, 20 дней) и ее стандартную разницу в два раза. Верхняя линия - это средняя величина плюс стандартная разница в два раза, а нижняя линия - это средняя величина минус стандартная разница в два раза.
Эта стратегия использует свойства буринской полосы, чтобы дать торговый сигнал при необычных колебаниях цены, чтобы воспользоваться возможностью обратного курса. В отличие от простой стратегии следования за равномерной линией, эта стратегия может дать торговый сигнал при увеличении колебаний, в какой-то степени избегая риска ложного прорыва.
По сравнению с простыми двунаправленными стратегиями прорыва, эта стратегия добавляет механизм остановки убытков. Это позволяет эффективно контролировать убытки, вызванные отдельными ошибочными сигналами. Настройка остановки убытков также является более разумной, она находится ближе к средней линии, что позволяет избежать чрезмерных убытков, вызванных слишком радикальными остановками.
Наибольший риск этой стратегии заключается в том, что сама по себе буринская полоса не гарантирует эффективности торговых сигналов. При возникновении особых ситуаций на рынке могут возникать необоснованные значительные колебания цен, в которых торговый сигнал, поданный буринской полосой, может быть ошибочным. В этом случае может быть причинен значительный убыток.
Кроме того, настройки стоп-пойнтов могут быть слишком радикальными или консервативными, что может повлиять на конечную прибыль. Если стоп-пойнт слишком большой, то эффективный сигнал может быть часто остановлен; а если стоп-пойнт слишком маленький, то потеря не может быть эффективно контролирована.
Эта стратегия может быть оптимизирована в следующих аспектах:
тестирование различных комбинаций параметров, таких как среднелинейный цикл, кратность стандартного отклонения, стоп-процент и т. д., для поиска оптимальных параметров;
Добавление других показателей, создание многочисленных условий фильтрации, чтобы избежать ошибочных сигналов;
оптимизация стратегий по прекращению убытков, например, замена простого прекращения убытков методами мобильного прекращения убытков, поэтапного прекращения убытков и др.;
В сочетании с различными временными циклами, брин-полоса используются для подтверждения торговых сигналов, чтобы избежать подтасовки.
Эта стратегия в целом является практической стратегией, которая сочетает в себе слежение за тенденцией и двойной прорыв. Она позволяет использовать возможности для обратного обхода при увеличении ценовых колебаний и устанавливает остановки для контроля риска. С помощью таких средств, как оптимизация параметров, увеличение фильтрации сигналов и оптимизация стратегии остановки, можно еще больше повысить стабильность и прибыльность этой стратегии.
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands Strategy by Royce Mars", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
stopLossPercent = input.float(1.0, title="Stop Loss Percent", minval=0.1, maxval=10, step=0.1)
ma(source, length, _type) =>
switch _type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Buy and Sell Conditions
buyCondition = close <= lower
sellCondition = close >= upper
// Stop Loss Condition
stopLossCondition = close < basis * (1 - stopLossPercent / 100)
// Strategy Execution
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition or stopLossCondition)
strategy.entry("Sell", strategy.short, when=sellCondition)
strategy.close("Sell", when=buyCondition)
// Plotting on the Chart
plotshape(buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(sellCondition or stopLossCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)
// Plotting the Bollinger Bands
plot(basis, "Basis", color=color.orange)
p1 = plot(upper, "Upper Band", color=color.blue)
p2 = plot(lower, "Lower Band", color=color.blue)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))