
Cette stratégie est basée sur l’indicateur de la ceinture de Brin qui a conçu une stratégie de négociation de rupture dynamique. Elle combine les conditions de filtrage des entités en ligne K et de filtrage des couleurs pour rechercher des opportunités d’entrée de rupture près de la trajectoire de la ceinture de Brin. La stratégie est basée sur le filtrage des entités.
Tout d’abord, la ligne de base et la voie de descente de la ceinture de Brindisi en fonction du point le plus bas:
src = low
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
src est le point bas, length est le cycle de calcul, basis est la moyenne, dev est la déviation standard, lower est la descente.
Généralement, mult est réglé sur 2, ce qui représente un écart-type.
La stratégie ajoute deux conditions de filtrage:
Filtre d’entité de ligne K En utilisant la taille de l’entité nbody et sa valeur moyenne abody, le signal de transaction n’est généré que si nbody est supérieur à la moitié de abody.
Filtre de couleur Il n’y a pas d’excédent lorsque K est fermé (close > open).
Un signal de multiplication se produit lorsque les conditions suivantes sont remplies:
low < lower // 价格突破下轨
close < open or usecol == false // 色彩过滤
nbody > abody / 2 or usebod == false // 实体过滤
Lorsque la taille de l’entité est de nouveau supérieure à la moitié de la moyenne, un plafond est créé:
close > open and nbody > abody / 2
Les stratégies permettent de calculer automatiquement le nombre de transactions et d’obtenir une croissance exponentielle:
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
Conditions d’adhésion par année, mois et jour, limitant les transactions à la date spécifiée:
when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
La courbe de Brin est une zone de support dynamique qui peut saisir des occasions de rebond après une tendance du marché.
La combinaison de l’entité de la ligne K et de la couleur permet de filtrer efficacement les fausses percées.
Les positions augmentent de façon exponentielle jusqu’à 100% et les risques sont gérés automatiquement.
La fixation d’une fourchette de dates réduit les risques liés à la volatilité du marché à un moment donné.
Lorsque le marché est en période de bull market, les bandes de bourgeons se déplacent rapidement vers le haut et vers le bas, ce qui peut entraîner des temps d’escalade trop longs.
Il est possible de combiner les indicateurs de tendance et de suspendre la stratégie lorsque la ligne moyenne est considérée comme un marché haussier, afin d’éviter une position vide trop longue.
Il peut y avoir des retournements et des essais de descente après la rupture de la sous-route.
Ajout d’une ligne d’arrêt de perte, avec un certain pourcentage de perte sous le support. Ou ajout d’une logique de jugement d’échec de réessayage, avec un arrêt rapide.
En fonction des données de retracement, définissez une position de stop-loss sous le support raisonnable.
Ajuster le cycle abody du filtre d’entité, utiliser le filtre COLOR, etc.; trouver la combinaison optimale de paramètres;
Augmenter le jugement de la tendance à la ligne moyenne et longue, arrêter le fonctionnement de la stratégie lorsque le jugement est un marché haussier. Réduire le temps de position vide.
Cette stratégie, combinée au support de la courbe de Brin, a conçu une logique stratégique de filtrage d’entités, de filtrage de couleurs et de transactions de rupture pour rechercher des opportunités de rebond à haute probabilité. Dans la pratique, il est possible d’optimiser en permanence les paramètres en fonction des résultats de la rétroaction et d’ajouter des modules de jugement de stop loss et de tendance pour contrôler le risque, ce qui permet de mieux performer.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Wizard Strategy v1.0", shorttitle = "Wizard str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(25, defval = 25, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
showar = input(false, defval = false, title = "Show Arrows")
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")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Bollinger
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false
//Signals
up1 = low < lower and (close < open or usecol == false) and body
exit = close > open and nbody > abody / 2
//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up1
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()