Stratégie des moyennes mobiles doubles de super-tendance

Auteur:ChaoZhang est là., Date: 2024-01-16 15:19:09 Je vous en prie.
Les étiquettes:

img

Résumé

La Super Trend Dual Moving Average est une stratégie de trading quantitative basée sur l'indicateur Super Trend et la moyenne mobile simple.

La logique de la stratégie

La stratégie utilise deux indicateurs:

  1. Super Trend Indicator: Il calcule les rails supérieurs et inférieurs en fonction de l'ATR de volatilité réelle et d'un multiplicateur.

  2. Moyenne mobile simple de 200 jours: Il prend la moyenne arithmétique des prix de clôture au cours des 200 derniers jours. Lorsque le prix de clôture est supérieur à cette ligne, il représente une tendance haussière majeure.

La logique de la stratégie:

  1. Lorsque l'indicateur Super Trend donne un signal haussier (valeur Super Trend supérieure à 0) et que le prix de clôture est supérieur à l'AM de 200 jours, passez long.

  2. Lorsque l'indicateur Super Trend donne un signal baissier (valeur Super Trend inférieure à 0) et que le prix de clôture est inférieur à l'AM de 200 jours, passez à la vente à découvert.

  3. Fermez la position lorsque l'indicateur Super Trend donne un signal inverse par rapport à la position précédente.

  4. Le stop loss est fixé à 25%.

Analyse des avantages

La stratégie combine l'indicateur Super Trend pour déterminer la tendance à court terme et la MA de 200 jours pour déterminer la tendance à long terme, ce qui peut filtrer efficacement les fausses ruptures, réduire la fréquence des transactions tout en améliorant le taux de gain.

Analyse des risques

Le principal risque de cette stratégie est que la plage de stop loss est relativement grande. Elle peut augmenter le risque de liquidation forcée dans des situations à fort effet de levier. De plus, lorsque le marché est limité à la plage, l'indicateur Super Trend générera des signaux redondants, augmentant ainsi les coûts de transaction et la fréquence de négociation.

Le risque peut être réduit en ajustant de manière appropriée la période d'ATR, les paramètres du multiplicateur et la plage de stop loss.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Ajuster la période ATR et les paramètres du multiplicateur pour optimiser l'indicateur Super Trend.

  2. Essayez d'autres indicateurs MA tels que EMA et VIDYA pour les remplacer.

  3. Ajouter d'autres indicateurs auxiliaires tels que le canal BOLL ou l'indicateur KD pour une filtration supplémentaire du signal.

  4. Optimiser la stratégie de stop-loss, par exemple en la déplaçant vers le point d'équilibre ou le stop de trailing avec des niveaux de temps plus élevés.

Résumé

Dans l'ensemble, cette stratégie est très pratique. Elle prend en compte à la fois le jugement de la tendance à court terme et le jugement de la tendance à long terme avec des paramètres de stop loss raisonnables. Elle peut obtenir de meilleurs résultats grâce à l'ajustement et à l'optimisation des paramètres, ce qui vaut la peine d'être vérifié et appliqué.


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5

strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01)


// Parametry wskaźnika SuperTrend
atrLength = input(10, title="Lenght ATR")
factor = input(3.0, title="Mult.")

// Parametry dla SMA
lengthSMA = input(200, title="Lenght SMA")

// Parametry dla Stop Loss
sl = input.float(25.0, '% Stop Loss', step=0.1)

// Obliczanie ATR
atr = ta.atr(atrLength)

// Obliczanie podstawowej wartości SuperTrend
up = hl2 - (factor * atr)
dn = hl2 + (factor * atr)

// Obliczanie 200-SMA
sma200 = ta.sma(close, lengthSMA)

// Inicjalizacja zmiennych
var float upLevel = na
var float dnLevel = na
var int trend = na
var int trendWithFilter = na

// Logika SuperTrend
upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up
dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn

trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1)

// Filtr SMA i aktualizacja trendWithFilter
trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0)

// Logika wejścia
longCondition = trend == 1  
shortCondition = trend == -1  

// Wejście w pozycje
if (longCondition) and  close > sma200
    strategy.entry("Long", strategy.long)
if (shortCondition) and close < sma200
    strategy.entry("Short", strategy.short)

// Warunki zamknięcia pozycji
Long_close = trend == -1 and close > sma200
Short_close = trend == 1  and close < sma200

// Zamknięcie pozycji
if (Long_close)
    strategy.close("Long")
if (Short_close)
    strategy.close("Short")

// Kolory superTrendu z filtrem sma200
trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue

//ploty
plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend")

// Stop Loss ( this code is from author RafaelZioni, modified by wielkieef )
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------

strategy.exit('SL',loss=per(sl))



//by wielkieef


Plus de