Эта стратегия использует динамический индикатор Брин-бенда для совершения порыва, основное значение которого заключается в том, чтобы определить, прорвет ли цена Брин-бенд и выйдет ли на погоню, чтобы дать сигнал о покупке или продаже.
Эта стратегия основана на направлении тренда, основанном на индикаторе брин-пояса. Брин-пояса - это полоса, состоящая из движущихся средних и их стандартного отклонения.
В частности, стратегия сначала вычисляет n-дневные максимумы и минимумы, а также вычисляет среднюю цену (((максимумы + минимумы) / 2). Затем вычисляет расстояние от средней цены до цены закрытия, с помощью которого образуется средняя линия по Бринской полосе, а средняя линия по средней полосе составляет среднюю полосу по верхней и нижней полосе.
Если цены в конце торгового дня пробиваются вверх, это указывает на тенденцию к росту; если они пробиваются вниз, это указывает на тенденцию к снижению. Когда они пробиваются вверх, они делают больше, а когда они пробиваются вниз, они делают больше.
Кроме того, в стратегии также введен механизм обратного открытия позиций. Когда цена прорывает границы буринского пояса, если MACD падает, будет предпринята обратная операция по ликвидации.
Используя ленты Брин, можно определить направление тенденции и иметь определенную способность отслеживать тенденции.
Иными словами, если вы используете обратную позицию, вы получаете отрицательную прибыль.
Настраиваемые параметры, такие как цикл Бринбинга, кратность стандартной разницы и т. д., адаптируются к торговле в разные периоды.
Позиции могут быть закрыты и открыты в обратном направлении, чтобы снизить риск.
Брин-полоса часто используется для высоко волатильных акций, и может не подходить для таких видов, как ресурсы с длительным циклом или индексы. Можно проверить эффективность различных циклических параметров.
Сигнал прорыва может быть ложным прорывом. Сигнал фильтрации может сочетаться с другими факторами.
Возможно дальнейшее увеличение убытков. Можно закрыть модуль обратного открытия позиций.
Возврат может быть большим. Можно соответствующим образом изменить размер позиции.
Можно рассмотреть возможность включения фильтрации трендов, чтобы избежать колебаний рынка в неопределенном направлении.
Можно проверить стандартное расхождение множественного числа по Бринской полосе, чтобы найти наиболее подходящий параметр.
Строго ограничить убытки можно с помощью стратегии стоп-лосс.
Можно оптимизировать логику открытия и пополнения позиций, чтобы сделать торговые сигналы более ясными.
Эта стратегия использует основной индикатор Брин, чтобы оценить ценовой тренд. Основные стратегии отслеживания тренда могут быть реализованы с помощью простой параметровой настройки. Однако существует определенный риск ложного прорыва, который требует фильтрации в сочетании с другими показателями.
This strategy uses Bollinger Bands momentum indicator for breakout trading, mainly judging if price breaks through the upper or lower Bollinger Bands for trading signals.
The strategy is primarily based on Bollinger Bands indicator to determine trend direction. Bollinger Bands consist of a middle band based on a moving average and upper/lower bands defined by standard deviations. The middle band is a n-period moving average, the upper band is middle band + 2 standard deviations, and the lower band is middle band - 2 standard deviations. When price approaches the upper band it indicates overbought conditions, and when it approaches the lower band it signals oversold conditions.
Specifically, the strategy first calculates the highest high and lowest low over last n periods, and the middle price ((highest high + lowest low)/2). It then calculates the distance between close price and middle price, uses exponential moving average of the distance to form the middle band, and adds/subtracts 2 times standard deviation above and below to form the upper and lower bands.
When close price breaks through the upper band, it signals an uptrend; when it breaks the lower band, it signals a downtrend. The strategy goes long when the upper band is broken, and goes short when the lower band is broken.
In addition, the strategy incorporates a counter-trend mechanism. When price breaks the upper band but MACD is falling, it will take a counter-trend short position.
Using Bollinger Bands to determine trend direction provides certain trend following capability.
Counter-trend design allows profiting from reversals.
Customizable parameters like period and standard deviation multiples make it adaptable to different trading horizons.
Disable counter-trend trading to reduce risk.
Bollinger Bands work best for high volatility stocks, may not be suitable for stable commodities or indices. Can test different period parameters.
Breakout signals may have false breakouts. Can add filters with other indicators.
Counter-trend trading can further increase losses. Can disable counter-trend module.
Drawdowns may be significant. Can adjust position sizing.
Consider adding trend filter to avoid whipsaw in non-directional markets.
Test different standard deviation multiples to find optimal parameters.
Incorporate stop loss to control single trade loss.
Optimize entry and add-on logic for clearer trading signals.
The strategy uses Bollinger Bands as the primary indicator and trades based on trend breakouts. With simple parameters it provides basic trend following capabilities. But false breakout risks exist, requiring additional filters. Parameters, stop loss and risk controls can be enhanced. Overall it serves as a reasonable baseline breakout strategy.
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy("Noro's Bands Scalper Strategy v1.6", shorttitle = "Scalper str 1.6", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length")
trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
src = close
//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]
//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]
//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Body
body = abs(close - open)
smabody = ema(body, 30) / 10 * bodylen
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0
if up7 == 1 or up8 == 1
strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
if dn7 == 1 or dn8 == 1
strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
if time > timestamp(toyear, tomonth, 31, 00, 00)
strategy.close_all()