Stratégie de rupture de la gamme dynamique


Date de création: 2023-11-21 15:03:19 Dernière modification: 2023-12-01 15:00:31
Copier: 0 Nombre de clics: 691
1
Suivre
1617
Abonnés

Stratégie de rupture de la gamme dynamique

Aperçu

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.

Principe de stratégie

Calcul de l’indicateur

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.

Conditions du filtre

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).

Signaux de négociation

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

Gestion des positions

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]  

Contrôle des risques

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))

Avantages stratégiques

Zone de négociation dynamique

La courbe de Brin est une zone de support dynamique qui peut saisir des occasions de rebond après une tendance du marché.

Mécanisme de double filtration

La combinaison de l’entité de la ligne K et de la couleur permet de filtrer efficacement les fausses percées.

Gestion automatique des positions

Les positions augmentent de façon exponentielle jusqu’à 100% et les risques sont gérés automatiquement.

Spécifier la période de transaction

La fixation d’une fourchette de dates réduit les risques liés à la volatilité du marché à un moment donné.

Risque stratégique

Le stock est trop vide.

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.

Comment faire ?

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.

La percée est un échec

Il peut y avoir des retournements et des essais de descente après la rupture de la sous-route.

Comment faire ?

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.

Optimisation de la stratégie

Ajout de logique de stop-loss

En fonction des données de retracement, définissez une position de stop-loss sous le support raisonnable.

Optimiser les paramètres des conditions de filtrage

Ajuster le cycle abody du filtre d’entité, utiliser le filtre COLOR, etc.; trouver la combinaison optimale de paramètres;

Le jugement de la tendance

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.

Résumer

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.

Code source de la stratégie
/*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()