Брейкбоутная стратегия торговли колебаниями полос Боллинджера

Автор:Чао Чжан, Дата: 2024-02-21 14:39:14
Тэги:

img

Обзор

Брейк-аут Болинджер-банды Осилляционная торговая стратегия - это торговая стратегия, когда рынок находится в колеблющемся состоянии. Эта стратегия использует индикатор Болинджер-банды для оценки колебания состояния рынка и посылает торговые сигналы, когда цена касается верхних или нижних рельсов Болинджер-банды. В отличие от традиционных стратегий, следующих за трендом, эта стратегия более подходит для боковых рынков с диапазоном.

Логика стратегии

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

В частности, эта стратегия сначала использует индикатор DMI для определения того, находится ли рынок в колеблющемся состоянии. Когда разница между +DMI и -DMI меньше 20, рынок считается смещающимся в сторону. При этом условии, идти длинный, когда цена прерывается выше нижней рельсы, и идти короткий, когда цена прерывается ниже верхней рельсы. Точка остановки потери устанавливается вблизи противоположной рельсы.

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

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

Риски

Эта стратегия в основном опирается на полосы Боллинджера для определения колебаний рынка и условий перекупленности/перепродажи. Когда полосы Боллинджера расходятся или контрактятся ненормально, это может привести к неправильным сигналам. Кроме того, точка остановки близка, поэтому однократная остановка может быть относительно большой. Рекомендуется оптимизировать стратегию остановки с управлением деньгами.

Оптимизация

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

Заключение

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works on ETHUSD 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true

[pos_dm, neg_dm, adx] = dmi(14, 14)


lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

sideways = (abs(pos_dm - neg_dm) < 20)



//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)

//longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI


//Entry 
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())


//Exit
strategy.close("long", when = (crossunder(close, upper)))


Больше