Stratégie de trading combinant plusieurs indicateurs ADX, RSI, SMA


Date de création: 2023-09-14 16:19:46 Dernière modification: 2023-09-14 16:19:46
Copier: 3 Nombre de clics: 1004
1
Suivre
1617
Abonnés

Principe de stratégie

La stratégie utilise une combinaison de plusieurs indicateurs techniques pour identifier la direction de la tendance et les zones de survente et de survente pour générer des signaux de transaction.

Les principaux indicateurs sont les suivants:

  1. Indice de direction moyen ((ADX): mesure la force de la tendance

  2. Indicateur relativement faible (RSI): sur-achat et sur-vente

  3. Les moyennes pondérées (SMA): évaluer les tendances à court terme

  4. Indicateur SAR extrême: juger des tendances à court et à long terme

  5. Une percée: une entrée de tendance

Logique de la transaction:

  1. L’ADX estime que la tendance est présente et assez forte

  2. La SAR juge les tendances à court et à long terme cohérentes

  3. Le RSI identifie une zone de survente

  4. Entrée en bourse lorsque le prix dépasse la moyenne SMA

  5. Entrée au cours de la rupture du canal

La validation mutuelle d’indicateurs multiples améliore l’exactitude des jugements et la combinaison de stratégies différentes forme un système de négociation systémique.

Avantages stratégiques

  • Une combinaison de plusieurs indicateurs pour améliorer la qualité du signal

  • Une combinaison de stratégies et une admission systématique

  • L’ADX identifie la tendance, le RSI détermine le surachat

  • Le SAR saisit la tendance, le SMA et le canal font leur entrée

Risque stratégique

  • Résolution de paramètres multiples nécessitant des tests répétés et une optimisation

  • Conditions de combinaison moins fréquentes

  • Les indicateurs sont difficiles à traiter lorsqu’ils génèrent des signaux de conflit

Résumer

La stratégie exploite pleinement les avantages de différents types d’indicateurs pour construire un système de négociation robuste. Cependant, il est nécessaire d’optimiser les paramètres pour s’assurer que la fréquence de négociation est raisonnable. Dans l’ensemble, la stratégie intègre la reconnaissance de tendances fortes et une entrée efficace.

Code source de la stratégie
/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// strategy("Combined Strategy", overlay=true, default_qty_value=100, initial_capital=1000, margin_long=0.1)

adxlen = input(7, title="ADX Smoothing")
dilen = input(7, title="DI Length")
dirmov(len) =>
    up = ta.change(high)
    down = -ta.change(low)
    plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truerange = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
    minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

// The same on Pine Script™
pine_supertrend(factor, atrPeriod) =>
    src = hl2
    atr = ta.atr(atrPeriod)
    upperBand = src + factor * atr
    lowerBand = src - factor * atr
    prevLowerBand = nz(lowerBand[1])
    prevUpperBand = nz(upperBand[1])

    lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
    upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
    int direction = na
    float superTrend = na
    prevSuperTrend = superTrend[1]
    if na(atr[1]) and ta.rsi(close, 21) < 66 and ta.rsi(close,3) > 80 and ta.rsi(close, 28) > 49 and sig > 20
        direction := 1
    else if prevSuperTrend == prevUpperBand
        direction := close > upperBand ? -1 : 1
    else
        direction := close < lowerBand ? 1 : -1
    superTrend := direction == -1 ? lowerBand : upperBand
    [superTrend, direction]

[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
upTrend = pineDirection < 0
downTrend = pineDirection > 0

// Define the 20-period SMA
sma20 = ta.sma(close, 20)

a = ta.rsi(close,14)
OB = input(70)
OS = input(30)
os = a > OB
ob = a < OS

if upTrend and close > pineSupertrend and close > sma20 and os
    strategy.entry("Buy", strategy.long)

if ta.crossunder(close, sma20) or ob
    strategy.close_all()

//define when to breakout of channel 
//("ChannelBreakOutStrategy", overlay=true)
length = input.int(title="Length", minval=1, maxval=1000, defval=5)
upBound = ta.highest(high, length)
downBound = ta.lowest(low, length)
if (not na(close[length]))
	strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")