Stratégie de trading multi-temps basée sur le RSI et la moyenne


La date de création: Je vous en prie. La dernière modification: Je vous en prie.
Je suis désolée. 0 est 0. Le nombre de clics: 304
1
Attention
1105
Les personnes concernées

基于RSI和平均线的多时间框架交易策略

Résumé

Cette stratégie combine les indicateurs aléatoires RSI, SMA et WMA pour rechercher des signaux d'achat et de vente. Elle détermine la direction de la tendance sur des périodes de cinq minutes et d'une heure.

Les principes stratégiques

La stratégie commence par calculer le WMA à 144 cycles plus la moyenne mobile pondérée et la moyenne mobile simple à 5 cycles sur deux délais de 1 heure et 5 minutes respectivement. Le marché est considéré comme polyvalent uniquement lorsque la moyenne mobile pondérée à 5 minutes est supérieure à la WMA. La stratégie calcule ensuite l'indicateur polyvalent du RSI, ainsi que les lignes K et D correspondantes.

Analyse des avantages

Il s'agit d'une stratégie de suivi des tendances très efficace. Elle combine deux stratégies de jugement des tendances en même temps et réduit très efficacement les signaux erronés. De plus, elle filtre les signaux en combinant plusieurs indicateurs, y compris le RSI, le SMA et le WMA, pour les rendre plus fiables. En laissant le RSI piloter le KDJ, elle modifie également les problèmes de faux signaux qui peuvent facilement survenir dans les stratégies KDJ ordinaires.

L'analyse des risques

Le plus grand risque de cette stratégie réside dans l'erreur de jugement des tendances. Les moyennes courtes et longues peuvent monter ou descendre simultanément à des points tournants du marché, ce qui produit des signaux erronés. De plus, le RSI peut également générer des signaux de trading plus confus en période de volatilité du marché.

Optimisation

La stratégie peut être optimisée pour les domaines suivants: 1) Tester les SMA, WMA et RSI de différentes longueurs pour trouver la meilleure combinaison de paramètres 2) Ajouter d'autres critères de jugement, tels que MACD, la ligne de Bryn, etc., pour vérifier la fiabilité du signal 3) Optimiser les stratégies d'arrêt des pertes, tester des méthodes telles que l'arrêt des pertes proportionnelles, l'arrêt des points de glissement, l'arrêt des pertes de suivi. 4) Joindre un module de gestion des fonds pour contrôler la taille des investissements individuels et le seuil de risque global 5) Ajouter des algorithmes d'apprentissage automatique pour trouver les paramètres les plus performants grâce à un grand nombre de retouches

Résumé

La stratégie tire parti des avantages des moyennes mobiles et des indicateurs aléatoires pour créer un système de suivi des tendances plus fiable. Elle capte facilement la direction des tendances des moyennes longues lignes grâce à plusieurs délais et à la vérification d'indicateurs. La configuration de l'arrêt-perte et de l'arrêt-périmètre lui permet également de supporter un certain degré de turbulence du marché.

Le code source de la stratégie
                
                    /*backtest
start: 2023-12-22 00:00:00
end: 2024-01-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bufirolas

// Works well with a wide stop with 20 bars lookback
// for the SL level and a 2:1 reward ratio Take Profit .
// These parameters can be modified in the Inputs section of the strategy panel.

// "an entry signal it's a cross down or up on
// the stochastics. if you're in a downtrend
// on the hourly time frame you
// must also be in a downtrend on the five
// minute so the five period has to be below the 144
// as long as the five period is still trading below
// the 144 period on both the hourly and the five minutes
// we are looking for these short signals crosses down
// in the overbought region of the stochastic. Viceversa for longs"

//@version=4
strategy("Stoch + WMA + SMA strat", overlay=true)

//SL & TP Inputs
i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=10, step=1, title="SL Expander")
i_TPExpander=input(defval=30, step=1, title="TP Expander")
i_reverse=input(false, title="Reverse Trades")
i_TStop =input(false, title="Use Trailing Stop")

//Strategy Inputs
src4 = input(close, title="RSI Source")
stochOS=input(defval=20, step=5, title="Stochastics Oversold Level")
stochOB=input(defval=80, step=5, title="Stochastics Overbought Level")

//Stoch rsi Calculations
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
rsi1 = rsi(src4, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
h0 = hline(80, linestyle=hline.style_dotted)
h1 = hline(20, linestyle=hline.style_dotted)

//MA
wmalen=input(defval=144, title="WMA Length")
WMA = security(syminfo.tickerid, "60", wma(close, wmalen))
SMA = security(syminfo.tickerid, "60", sma(close, 5))
minWMA = wma(close, wmalen)
minSMA = sma(close, 5)

//Entry Logic
stobuy = crossover(k, d) and k < stochOS
stosell = crossunder(k, d) and k > stochOB
mabuy = minSMA > minWMA
daymabuy = SMA > WMA

//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
lTP=(strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0)))+((valuewhen(bought, atr(14), 0)/5)*i_TPExpander))
sTP=(strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0) - strategy.position_avg_price))-((valuewhen(bought, atr(14), 0)/5)*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0

//TrailingStop
dif=(valuewhen(strategy.position_size>0 and strategy.position_size[1]<=0, high,0))
 -strategy.position_avg_price
trailOffset     = strategy.position_avg_price - LSL
var tstop = float(na)
if strategy.position_size > 0
    tstop := high- trailOffset - dif
    if tstop<tstop[1]
        tstop:=tstop[1]
else
    tstop := na
StrailOffset     = SSL - strategy.position_avg_price
var Ststop = float(na)
Sdif=strategy.position_avg_price-(valuewhen(strategy.position_size<0 
 and strategy.position_size[1]>=0, low,0))
if strategy.position_size < 0
    Ststop := low+ StrailOffset + Sdif
    if Ststop>Ststop[1]
        Ststop:=Ststop[1]
else
    Ststop := na
    
//Stop Selector
SL= islong ? LSL : isshort ? SSL : na
if i_TStop 
    SL:= islong ? tstop : isshort ? Ststop : na
TP= islong ? lTP : isshort ? sTP : na


//Entries
if stobuy and mabuy and daymabuy
    strategy.entry("long", long=not i_reverse?true:false)
if stosell and not mabuy and not daymabuy
    strategy.entry("short", long=not i_reverse?false:true)


//Exit
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross)
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross)
plot(minWMA)
plot(minSMA, color=color.green)



                
            
En savoir plus