Stratégie basée sur l'indicateur Supertrend et la moyenne mobile simple


Date de création: 2024-01-16 15:19:09 Dernière modification: 2024-01-16 15:19:09
Copier: 0 Nombre de clics: 616
1
Suivre
1617
Abonnés

Stratégie basée sur l’indicateur Supertrend et la moyenne mobile simple

Aperçu

La stratégie de bi-équilibre hypertrend est une stratégie de trading quantitatif basée sur l’indicateur hypertrend et la moyenne mobile simple. Cette stratégie utilise l’indicateur hypertrend pour déterminer la direction de la tendance du marché, puis filtre en combinaison avec la moyenne mobile simple de 200 jours, pour ouvrir des positions plus courtes dans la direction de la tendance.

Principe de stratégie

La stratégie utilise deux indicateurs:

  1. L’indicateur hypertrend: il calcule les hauts et les bas en fonction de l’amplitude réelle de l’ATR et d’un multiplicateur. Lorsque le prix de clôture est supérieur à la hauteur de la hauteur, il est haussier, et en dessous de la basse, il est baissier.

  2. Moyenne mobile simple à 200 jours: elle représente la moyenne arithmétique des prix de clôture des 200 derniers jours. Les prix de clôture supérieurs à cette ligne représentent les tendances à la hausse et les prix inférieurs à cette ligne représentent les tendances à la baisse.

La logique de la stratégie:

  1. Lorsque l’indicateur de tendance supérieure est en hausse (indicateur de tendance supérieure est supérieur à 0) et que le prix de clôture est supérieur à la moyenne quotidienne de 200 jours, effectuez une entrée à plusieurs têtes.

  2. L’entrée en position courte se produit lorsque l’indicateur de tendance supérieure est en baisse (indicateur de tendance supérieure est inférieur à 0) et que le prix de clôture est inférieur à la moyenne quotidienne de 200.

  3. Lorsque l’indicateur de tendance supérieure est inversé par rapport au signal précédent, la position est levée.

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

Analyse des avantages

Cette stratégie, combinée à un indicateur hypertrend pour déterminer la tendance à court terme et à une moyenne à 200 jours pour déterminer la tendance à long terme, permet de filtrer efficacement les fausses ruptures et de réduire la fréquence des transactions tout en améliorant le taux de victoire. Dans les grandes conditions, la tendance est suffisamment claire, la marge d’arrêt est grande et la marge de profit est grande.

Analyse des risques

Le risque principal de cette stratégie est le risque de liquidation forcée en cas de stop-loss élevé et de levier élevé. De plus, les indicateurs de tendance supérieure génèrent des signaux supplémentaires lorsque le marché se calme, ce qui augmente la fréquence et le coût des transactions.

Le risque peut être réduit en ajustant de manière appropriée le cycle ATR, les paramètres de multiplication et l’amplitude d’arrêt.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Ajuster les paramètres ATR cycliques et multiplicatifs et optimiser les paramètres de l’indicateur de dépassement de tendance;

  2. Essayez d’utiliser d’autres indicateurs comme l’EMA ou la VIDA pour les remplacer.

  3. ajouter d’autres indicateurs auxiliaires, tels que le canal BOLL ou l’indicateur KD, pour filtrer davantage le signal;

  4. Optimiser les stratégies de stop loss, comme le déplacement vers le point d’équilibre des pertes et des pertes ou le stop loss à grande échelle.

Résumer

Cette stratégie est très pratique pour l’ensemble, compte tenu des jugements de tendance à court terme et des jugements de tendance à long terme, le paramètre de stop-loss est également plus raisonnable. Les paramètres d’ajustement et d’optimisation permettent de mieux obtenir des résultats, ce qui vaut la peine d’être vérifié et utilisé en laboratoire.

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