Stratégie haussière-baissière à double voie avec moyenne mobile


Date de création: 2023-11-06 16:25:01 Dernière modification: 2023-11-06 16:25:01
Copier: 1 Nombre de clics: 646
1
Suivre
1617
Abonnés

Stratégie haussière-baissière à double voie avec moyenne mobile

Aperçu

Cette stratégie utilise la moyenne mobile de la pierre à ciment comme indicateur technique principal, en combinaison avec les deux bandes de Brin, pour identifier les tendances du marché. La stratégie de rupture est une stratégie de rupture.

Principe de stratégie

  1. Calculer la moyenne mobile des grains de fer ((CBMA): l’utilisation de la moyenne mobile des grains de fer, adaptée à l’EMA, permet de suivre efficacement les variations de prix.

  2. Configuration des paramètres de la ceinture de Brin: choisir la moyenne mobile des pierres cassées comme voie médiane, la voie supérieure et la voie inférieure en utilisant le réglage standard de la différence de la multiplication de l’estomac, qui peut être ajustée en fonction du marché.

  3. Les transactions de rupture: les prix sont à la hausse lorsqu’ils franchissent la trajectoire supérieure et à la baisse lorsqu’ils franchissent la trajectoire inférieure, en utilisant une stratégie de rupture de tendance.

  4. Le mode de commande est le “cancel lightning” qui consiste à effectuer des transactions unilatérales à la fois.

  5. Le volume des transactions est fixé et peut être ajusté en fonction du montant.

Analyse des avantages

  1. Les moyennes mobiles sont très fluides et permettent de suivre efficacement les prix.

  2. L’adaptation de l’algorithme EMA optimise la réactivité des moyennes mobiles.

  3. Le signal de rupture est clairement indiqué par Brin qui monte et descend de la voie.

  4. Il s’agit d’un modèle de suivi des tendances et d’éviter le whipsaw.

  5. Le volume fixe permet de contrôler les pertes ponctuelles.

Analyse des risques

  1. Les paramètres de la bande de Bryn nécessitent une optimisation, et il y a des problèmes avec la taille trop grande ou trop petite.

  2. Le signal de rupture peut entraîner une fausse rupture.

  3. Il est nécessaire de mettre en place un stop loss pour contrôler les pertes.

  4. Le volume fixe ne permet pas d’ajuster la position en fonction du marché.

  5. Il n’y a pas plus de profit que de faire des transactions unilatérales.

Direction d’optimisation

  1. Optimisation dynamique des paramètres de la bande de Brin pour la rendre plus adaptée aux conditions du marché.

  2. Pour éviter de fausses ruptures, ajoutez plus d’indicateurs pour filtrer.

  3. Ajouter un stop-loss pour verrouiller les bénéfices

  4. Il est possible de faire des opérations de couverture, mais aussi de faire plus de découverts et de gagner plus.

  5. Adhésion au système de gestion de position.

Résumer

Cette stratégie est une stratégie de suivi de la tendance de la rupture, utilisant des indicateurs techniques de moyenne mobile adaptés, combinés à une double voie de la ceinture de Brin. La stratégie est simple et facile à utiliser, le volume de transactions fixe peut contrôler le risque et a une certaine valeur réelle.

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