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:
Cette stratégie combine plusieurs facteurs pour former une stratégie commerciale globale.
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.
Les principaux indicateurs techniques utilisés dans cette stratégie sont les suivants:
Stoch.RSI- Un oscillateur stochastique appliqué aux valeurs de l'indice de volatilité plutôt qu'au prix.
Indice de résistance- Indice de force relative, indicateur des conditions de surachat/survente: supérieur à 70 est suracheté, inférieur à 30 est survendu.
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.
Le CM Williams Vix Fix- Calcule la fourchette de volatilité des prix au cours de la période d'observation.
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.
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")