Combinaison de stratégies à plusieurs facteurs

Auteur:ChaoZhang est là., Date: le 26 octobre 2023 15:18:34
Les étiquettes:

img

Voici un article détaillé sur l'analyse de la stratégie que j'ai écrit en fonction du code de stratégie de trading que vous avez fourni:

Résumé

Cette stratégie combine plusieurs facteurs pour former une stratégie commerciale globale.

  1. Indice de volatilité de l'indice de change
  2. RSI - Indice de résistance relative
  3. Deux stratégies - combinaison de stochastique et d'indicateur RSI
  4. Le CM Williams Vix Fix trouve le fond du marché
  5. DMI - Indice des mouvements directionnels

En combinant plusieurs facteurs, elle cherche à capitaliser sur les forces de chacun et à réduire les risques associés à la dépendance à un seul facteur.

La logique de la stratégie

Les principaux indicateurs techniques utilisés dans cette stratégie sont les suivants:

  1. Stoch.RSI- Un oscillateur stochastique appliqué aux valeurs de l'indice de volatilité plutôt qu'au prix.

  2. Indice de résistance- Indice de force relative, indicateur des conditions de surachat/survente: supérieur à 70 est suracheté, inférieur à 30 est survendu.

  3. Une double stratégie- Combine le stochastique et le RSI pour les signaux de trading. Acheter lorsque le stochastique %K dépasse le niveau de %D et le RSI dépasse le niveau de survente. Vendre lorsque l'inverse se produit.

  4. Le CM Williams Vix Fix- Calcule la fourchette de volatilité des prix au cours de la période d'observation.

  5. DMI- Indice de mouvement directionnel. Utilise le différentiel +DI/-DI pour déterminer la direction/la force de la tendance.

En intégrant les signaux de ces indicateurs, la stratégie fournit un système plus robuste pour identifier les tendances et les points tournants.

Les avantages

  • Diversification par plusieurs facteurs, compensation des faiblesses individuelles
  • Fournit à la fois des signaux de suivi de tendance et d'inversion moyenne
  • Identifie les extrêmes de surachat/survente et les revers
  • Paramètres optimisés adaptés aux différents régimes de marché
  • Incorpore le filtre direction/force de tendance

Les risques

  • La robustesse globale des systèmes multifactoriels n'est pas encore prouvée
  • Redondance potentielle entre certains indicateurs
  • Priorité incertaine entre les signaux contradictoires
  • Le réglage des paramètres nécessite un backtesting rigoureux
  • Les périodes de détention prolongées peuvent être moins performantes

Amélioration

  • Filtrer/optimiser davantage le jeu d'indicateurs
  • Paramètres affinés pour s'adapter aux marchés cibles
  • Établir des règles d'entrée/sortie claires
  • Incorporer le stop loss et la prise de profit pour contrôler le risque
  • Impact de l'essai de la période de détention sur les performances

Résumé

Cette stratégie combine les forces de Stoch.RSI, RSI, Double Strategy, CM Williams Vix Fix et DMI. Elle fournit des signaux plus complets mais complique également l'optimisation des paramètres. Des améliorations supplémentaires autour de l'optimisation des paramètres, du filtrage des facteurs uniques et de la définition des règles de trading peuvent améliorer la robustesse. La viabilité et la robustesse à long terme nécessitent toujours une validation rigoureuse.


/*backtest
start: 2023-10-18 00:00:00
end: 2023-10-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


     //////////////////////////////////////////////////////////////////////
    ////  STOCHASTIC_RSI+RSI+DOUBLE_STRATEGY+CM_WILLIAMS_VIX_FIX+DMI  ////
   //////////////////////////////////////////////////////////////////////


//  This is a simple combination of integrated and published scripts, useful 
//  if you don't have a PRO account and want to bypass the 3 indicator limit. 
//  It includes:
//  1) Stoch.RSI
//  2) Relative strenght index
//  3) Stochastic + RSI, Double Strategy (by ChartArt)
//  4) CM_Williams_Vix_Fix Finds Market Bottoms (by ChrisMoody)
//  5) Directional Movement Index (DMI)
//  For more details about 3) and 4) check the original scripts.


//@version=3

strategy(title="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+DMI", shorttitle="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+DMI")


///STOCH.RSI///
smoothK = input(3, minval=1, title="Stochastic %K Smoothing")
smoothD = input(3, minval=1, title="Stochastic %K Moving Average")
lengthRSI = input(14, minval=1, title="RSI Lenght")
lengthStoch = input(14, minval=1, title="Stochastic Lenght")
RSIprice = close
rsi1 = rsi(RSIprice, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
plot(k, color=blue, linewidth=2)
plot(d, color=silver, linewidth=2)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=purple, transp=78)


///RSI///
up = rma(max(change(RSIprice), 0), lengthRSI)
down = rma(-min(change(RSIprice), 0), lengthRSI)
rsi2 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi2, color=fuchsia, linewidth=2)
// band0 = hline(70, linestyle=dotted)
// band1 = hline(30, linestyle=dotted)
// fill(band0, band1, color=purple, transp=100)


///OVERBOUGHT-OVERSOLD STRATEGY///
StochOverBought = input(80, title="Stochastic overbought condition")
StochOverSold = input(20, title="Stochastic oversold condition")
ks = sma(stoch(close, high, low, lengthStoch), smoothK)
ds = sma(k, smoothD)
RSIOverBought = input( 70  , title="RSI overbought condition")
RSIOverSold = input( 30  , title="RSI oversold condition")
vrsi = rsi(RSIprice, lengthRSI)
if (not na(ks) and not na(ds))
    if (crossover(ks,ds) and k < StochOverSold)
        if (not na(vrsi)) and (crossover(vrsi, RSIOverSold))
            strategy.entry("LONG", strategy.long, comment="LONG")
if (crossunder(ks,ds) and ks > StochOverBought)
    if (crossunder(vrsi, RSIOverBought))
        strategy.entry("SHORT", strategy.short, comment="SHORT")
 
 
///CM WILLIAMS VIX FIX///
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bollinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range (Based on Percentile and LookBack Period)?")
sd = input(false, title="Show Standard Deviation Line?")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(wvf, title="Williams Vix Fix", style=columns, linewidth = 4, color=col, transp=85)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=line, linewidth = 3, color=aqua)


///DIRECTIONAL MOVEMENT INDEX///
len3 = input(14, minval=1, title="DI Length")
lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50)
up3 = change(high)
down3 = -change(low)
plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0)
minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0)
trur3 = rma(tr, len3)
plus3 = fixnan(100 * rma(plusDM3, len3) / trur3)
minus3 = fixnan(100 * rma(minusDM3, len3) / trur3)
sum3 = plus3 + minus3
adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3)
plot(plus3, color=green, style=circles, linewidth=2, title="+DI")
plot(minus3, color=red, style=circles, linewidth=2, title="-DI")
plot(adx3, color=aqua, style=circles, linewidth=3, title="ADX")

Plus de