La CBMA a adopté une stratégie de rupture des bandes de Bollinger.

Auteur:ChaoZhang est là., Date: 2023-11-06 16:25:01 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie utilise le CBMA comme indicateur technique principal combiné aux bandes de Bollinger pour identifier les tendances du marché et mettre en œuvre une stratégie de rupture.

La logique de la stratégie

  1. Calculer l'AMC: Utiliser l'AMC adaptatif pour lisser l'AMC qui peut suivre efficacement les variations de prix.

  2. Définir les paramètres des bandes de Bollinger: utiliser la CBMA comme bande intermédiaire et définir les bandes supérieures/inférieures à l'aide d'un multiplicateur d'écart type, qui peut être ajusté en fonction du marché.

  3. Traitement de rupture: Vendre lorsque le prix dépasse la marge supérieure, acheter lorsque le prix dépasse la marge inférieure, en utilisant la stratégie de rupture de tendance.

  4. Utilisez des ordres flash d'annulation, ne négociez qu'une direction à la fois.

  5. Définir une taille de commande fixe, peut être ajustée en fonction du capital.

Analyse des avantages

  1. La CBMA a une bonne fluidité et peut suivre efficacement les prix.

  2. L'EMA adaptative optimise la réactivité de la moyenne mobile.

  3. Les bandes supérieures/inférieures donnent des signaux directionnels clairs lorsque l'évasion se produit.

  4. Le modèle de suivi de tendance évite les transactions par pioche.

  5. La taille de la commande fixe contrôle le risque de transaction unique.

Analyse des risques

  1. Les paramètres des bandes de Bollinger ont besoin d'optimisation, trop large ou trop étroit peut causer des problèmes.

  2. Les signaux de fuite peuvent avoir de fausses fuites.

  3. Il faut arrêter la perte pour contrôler la perte.

  4. La taille fixe des ordres ne peut pas être ajustée en fonction du marché.

  5. Ne négociez qu'une seule direction, ne pouvez pas gagner plus.

Directions d'optimisation

  1. Optimiser dynamiquement les paramètres des bandes de Bollinger pour mieux s'adapter au marché.

  2. Ajoutez plus d'indicateurs pour filtrer, éviter les fausses fuites.

  3. Ajoutez un stop-loss pour verrouiller les profits.

  4. Le trading de couverture, aller à la fois long et court pour un plus grand profit.

  5. Ajouter un système de dimensionnement de position.

Conclusion

Cette stratégie est un système de suivi de tendance de rupture qui utilise la technologie de moyenne mobile adaptative combinée à des bandes de Bollinger pour des signaux de rupture clairs. Elle a une logique simple et contrôle les risques de taille d'ordre fixe, ayant une certaine valeur pratique. Mais des problèmes tels que les fausses ruptures et l'optimisation des paramètres demeurent, ce qui nécessite plus d'indicateurs pour améliorer et améliorer les performances réelles du trading tout en contrôlant le risque.


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="CBMA Bollinger Bands Strategy directed [ChuckBanger]", shorttitle="CBMA BB CB", 
   overlay=true )


length = input(title="Length", type=input.integer, defval=12, minval=1)
regular = input(title="Regular BB Or CBMA?", type=input.bool, defval=false)
src = input(title="Source", type=input.source, defval=close)
mult = input(title="Multipler", type=input.float, defval=2.3, minval=.001, maxval=50, step=.1)
emaLen = input(title="EMA Length", type=input.integer, defval=11, minval=1)
emaGL = input(title="EMA Gain Limit", type=input.integer, defval=50, minval=1)
highlight = input(title="Highlight On/Off", type=input.bool, defval=true)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//strategy.risk.max_drawdown(50, strategy.percent_of_equity)

calc_hma(src, length) =>
    hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
    hullma

calc_cbma(price, length, emaLength, emaGainLimit) =>
    alpha = 2 / (emaLength + 1)
    ema = ema(price, emaLength)
    int leastError = 1000000
    
    float ec = 0
    float bestGain = 0
    
    for i = emaGainLimit to emaGainLimit
        gain = i / 10
        ec := alpha * ( ema + gain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
        error = price - ec
        if (abs(error) < leastError)
            leastError = abs(error)
            bestGain = gain
    
    ec := alpha * ( ema + bestGain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
    hull = calc_hma(price, length)
    
    cbma = (ec + hull) / 2
    cbma

cbma = calc_cbma(src, length, emaLen, emaGL)
basis = regular ? sma(src, length) : cbma
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
cbmaColor = fixnan(highlight and not regular ? cbma > high ? color.purple : cbma < low ? color.aqua : na : color.red)
plot(basis, color=cbmaColor)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

if (crossover(src, lower))
    strategy.entry("CBMA_BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="CBMA_BBandLE")
else
    strategy.cancel(id="CBMA_BBandLE")

if (crossunder(src, upper))
    strategy.entry("CBMA_BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="CBMA_BBandSE")
else
    strategy.cancel(id="CBMA_BBandSE")


Plus de