Стратегия волнового канала и стоп-лосс


Дата создания: 2023-11-23 15:49:12 Последнее изменение: 2023-11-23 15:49:12
Копировать: 1 Количество просмотров: 772
1
Подписаться
1617
Подписчики

Стратегия волнового канала и стоп-лосс

Обзор

Волновая стратегия (Bollinger Bands Strategy) - классическая стратегия, использующая волновые полосы булинговой линии для отслеживания тренда и сверхпокупки сверхпродажных сигналов. Эта версия на основе первоначальной стратегии добавляет механизм остановки убытков для контроля риска.

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

Принципы

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

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

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

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

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

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

  2. Использование волатильности пояса бурин для отслеживания трендов

  3. Увеличение механизма хранения убытков, чтобы эффективно контролировать максимальные убытки от одной сделки

  4. Тенденционное отслеживание и остановка приводят к стабильной прибыли

Риск и оптимизация

  1. Настройка параметров Брин-пояса влияет на качество торгового сигнала. Длина средней полосы n и стандартное расхождение k должны быть разумно настроены в соответствии с различными рынками, иначе это повлияет на точность торгового сигнала.

  2. Слишком большая или слишком маленькая стоп-установка может повлиять на стабильность прибыли. Слишком большая стоп-установка увеличивает риск получения убытков, а слишком маленькая увеличивает вероятность того, что стоп-установка будет вызвана.

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

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

Подвести итог

Эта стратегия в сочетании с установлением позиций в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи в пределах перепродажи.

Исходный код стратегии
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50, step=0.001)
stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1)

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

var float lastTradePrice = na
var float stopLossLow = na
var float stopLossHigh = na
var bool currentIsLong = na

var bool nextExpectedIsLong = true

var bool existedLong = false
var bool existedShort = false

buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)

if (buyEntry and nextExpectedIsLong == true)
	strategy.entry("BBandLE", strategy.long, comment="BBandLE")
	nextExpectedIsLong := false
	if(nz(strategy.position_size[1], 0) < 0) // new position detected
	    lastTradePrice := close
	    stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
	    stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandLE")

if (sellEntry and nextExpectedIsLong == false)
	strategy.entry("BBandSE", strategy.short, comment="BBandSE")
	nextExpectedIsLong := true
	if(nz(strategy.position_size[1], 0) > 0) // new position detected
        lastTradePrice := close
        stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
        stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandSE")

strategy.close("BBandLE", close < stopLossLow)
strategy.close("BBandSE", close > stopLossHigh)

// if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh)
//     strategy.entry("BBandLE", strategy.long, comment="BBandLE")
// 	lastTradePrice := close
// 	stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// 	stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
// if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow)
//     strategy.exit("BBandSE", strategy.short, comment="BBandSE")
//     lastTradePrice := close
//     stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
//     stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))

plot(source, "close", color.blue)
plot(lower, "lower", color.red)
plot(upper, "upper", color.red)
plot(stopLossLow, "StopLossLow", color.black)
plot(stopLossHigh, "StopLossHigh", color.black)
plot(lastTradePrice, "lastTradePrice", color.green)
plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green)
plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)