
Cette stratégie est basée sur un indicateur de la ceinture de Brin, combiné à un indicateur de dynamisme, une stratégie de négociation combinée pour réaliser une reprise de la ceinture de Brin et une rupture de dynamisme. Faites un gain lorsque le prix franchit la ligne médiane en dessous de la ceinture de Brin, faites une perte lorsque le prix franchit la ligne médiane en haut de la ceinture de Brin, et suivez les arrêts de perte et les arrêts de perte.
Cette stratégie utilise la moyenne de la bande de Brynsma comme indicateur de la moyenne, la bande passante par le paramètre mult*stdev est un ajustement dynamique. Lorsque le prix franchit la ligne médiane en dessous, cela indique que le prix prend une action à la hausse, c’est-à-dire un plus; lorsque le prix franchit la ligne médiane en haut, cela indique que le prix prend une action à la baisse, c’est-à-dire un moins.
Plus précisément, le calcul de la bande de Brin est effectué à l’aide de deux paramètres, length et mult, dont la longueur détermine le cycle de la ligne médiane, et mult détermine la taille de la bande passante. EnterLong et enterShort déterminent le moment de la percée, tandis que exitLong et exitShort calculent le prix de l’arrêt de perte en fonction du prix d’entrée et du ratio de stop loss de la cible.
Cette stratégie, combinant une régression de la moyenne et un indicateur de dynamique, permet de capturer une plus grande dynamique au début d’une tendance. Par rapport à la simple traçabilité de la moyenne, un jugement de dynamique basé sur la bande passante de Brin est ajouté, ce qui permet de filtrer certaines fausses ruptures. Le paramètre de stop-loss est directement basé sur le calcul du prix d’entrée, sans intervention humaine.
L’optimisation peut être effectuée en ajustant le cycle de la ligne médiane de Brin, les paramètres de bande passante et le périmètre d’arrêt, afin de rendre la stratégie plus adaptée aux différentes conditions du marché.
Cette stratégie intègre les avantages de la régression de la courbe de Brin et de l’indicateur de dynamique, permet de capturer une partie de la tendance au début de la tendance, peut s’adapter à différents stades du marché par un ajustement des paramètres, est un système de percée plus général. Le paramétrage de stop loss peut être directement calculé à partir du prix et réduit l’intervention humaine. Il y a également de la place pour des améliorations, telles que l’ajout de plus d’indicateurs de jugement auxiliaires, qui seront encore améliorées dans la recherche et l’optimisation ultérieures.
/*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")