
Эта стратегия основана на показателях Брин-Бенда, в сочетании с динамическими показателями, чтобы реализовать комбинацию торговых стратегий для достижения возврата Брин-Бенда и динамического прорыва. Сделайте лизинг, когда цена пересекает среднюю линию ниже Брин-Бенда, сделайте лизинг, когда цена пересекает среднюю линию выше Брин-Бенда, и отслеживайте стоп-лосс-стоп, чтобы достичь целевого соотношения между прибылью и убытком.
Эта стратегия использует среднюю линию ШМА в ленте Бринга в качестве средней линейки, а пропускная способность через параметр mult*stdev Динамическая коррекция. Когда цена пересекает среднюю линию снизу, это означает, что цена получает движение вверх, и это означает, что она делает больше. Когда цена пересекает среднюю линию сверху, это означает, что цена получает движение вниз, и это означает, что она делает больше.
В частности, вычисление по ленте Брин выполняется с помощью двух параметров length и mult, длина length определяет цикл средней линии, mult определяет размер полосы пропускания. enterLong и enterShort определяют время прорыва, exitLong и exitShort рассчитывают стоп-стоп-цену в зависимости от цены входа и целевого стоп-лосса.
Эта стратегия сочетает в себе среднелинейный регресс и динамический индикатор, позволяющий зафиксировать большую динамику на начальном этапе тренда. По сравнению с простой слежкой за средней линией, в ней добавлены динамические суждения, основанные на пропускной способности булина, которые могут отфильтровывать некоторые ложные прорывы.
Можно оптимизировать стратегию путем корректировки цикла средней линии буринга, параметров полосы пропускания и диапазона остановок, чтобы более адаптироваться к различным рыночным условиям.
Эта стратегия объединяет преимущества регрессионной и динамической стратегии Брин, позволяет последовательно захватывать некоторые тенденции в начале тренда, может быть адаптирована к различным этапам рынка с помощью корректировки параметров, является более универсальной системой прорыва. Установка стоп-лосса напрямую из расчета цен позволяет уменьшить человеческое вмешательство. В этой стратегии также есть некоторые возможности для улучшения, например, добавление большего количества вспомогательных показателей решений, которые будут дополнительно усовершенствованы в последующих исследованиях и оптимизации.
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("BURATINO", overlay=true)
// Входные параметры
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.1, maxval=5, title="Multiplier")
target_percent = input(0.5, minval=0.1, title="Target Percent")
stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent")
// Расчет полос Боллинджера
basis = sma(close, length)
dev = mult * stdev(close, length)
upper = basis + dev
lower = basis - dev
// Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга
enterLong = cross(close, basis) and close[1] < basis[1]
// Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта
enterShort = cross(basis, close) and close[1] > basis[1]
// Закрытие лонга после роста цены на указанный процент или падения на указанный процент
exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100))
// Закрытие шорта после падения цены на указанный процент или роста на указанный процент
exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100))
// Управление позициями и ограничениями на открытие противоположных позиций
strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0)
strategy.close("Long", when = exitLong)
strategy.close("Short", when = exitShort)
// Визуализация полос Боллинджера
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper")
plot(lower, color=color.green, title="Lower")