Tableau de statistiques danss un algo
Forums › ProRealTime forum Français › Support ProOrder › Tableau de statistiques danss un algo
- This topic has 4 replies, 4 voices, and was last updated 1 month ago by Iván.
-
-
11/15/2024 at 2:10 PM #240400
Bonjour !
Désirant améliorer l’analyse d’une stratégie de trading sur indice, j’aurais besoin d’afficher un tableau (sur le graphique de préférence) qui présenterait certaines données sous la forme de statistiques : par exemple : le nombre de trades perdant de plus de 100$, le nombre de trades gagnants de plus de 100 $, … (i peut y avoir des dizaines de points interessants à analyser !).
Est-il possible de coder cela (avec ou sans la fonction “$tableau”…) ?Merci de votre aide !
Michel
11/15/2024 at 3:23 PM #24040411/16/2024 at 3:47 PM #240411Merci de votre réponse. En fait je cherche à coder dans un BT (idéalement sous forme de tableau en fin de graphique) des données que l’on ne retrouve pas dans les rapports détaillés de PRT : par exemple, combien de trades shorts ont été déclenchés sur stop, pour quel montant de pertes ? combien de bougies se sont écoulées entre l’entrée et la sortie de trade ? … Bref des données d’analyse permettant d’adapter au mieux une stratégie.
Il me semblait que le mode tableau permettait cela, mais je n’en suis pas sûr.
Michel
1 user thanked author for this post.
11/16/2024 at 6:12 PM #240412Si vous n’avez besoin que des totaux, il n’est pas nécessaire d’utiliser des tableaux, juste des variables communes que vous incrémentez à chaque fois (je ne l’ai pas essayé):
123456789101112131415161718192021222324ONCE LossesOver100 = 0ONCE GainsOver100 = 0ONCE Duration = 0ONCE DurationAvg = 0ONCE NumberOfTrades = 0// update winning and losing statsIF (StrategyProfit - StrategyProfit[1]) >= 100 THENGainsOver100 = GainsOver100 + 1ELSIF (StrategyProfit - StrategyProfit[1]) <= -100 THENLossesOver100 = LossesOver100 + 1ENDIF// update the duration of trades and calculate the average durationIF OnMarket THENDuration = Duration + 1DurationAvg = Duration / NumberOfTradesENDIF// enter a Long position and update the number of tradesIF MyLongConditions THENBUY 1 CONTRACT AT MARKETNumberOfTrades = NumberOfTrades + 1SET STOP %LOSS 1SET TARGET %PROFIT 2ENDIFSi vous le souhaitez, vous pouvez également différencier les statistiques entre Long et Short:
123456789101112131415161718192021222324252627282930313233343536373839404142434445ONCE LONGLossesOver100 = 0ONCE LONGGainsOver100 = 0ONCE LONGDuration = 0ONCE LONGDurationAvg = 0ONCE LONGNumberOfTrades = 0//ONCE SHORTLossesOver100 = 0ONCE SHORTGainsOver100 = 0ONCE SHORTDuration = 0ONCE SHORTDurationAvg = 0ONCE SHORTNumberOfTrades = 0// update winning and losing statsIF (StrategyProfit - StrategyProfit[1]) >= 100 THENIF LongOnMarket[1] THENLONGGainsOver100 = LONGGainsOver100 + 1ElSIF ShortOnMarket[1] THENSHORTGainsOver100 = SHORTGainsOver100 + 1ELSIF (StrategyProfit - StrategyProfit[1]) <= -100 THENIF LongOnMarket[1] THENLONGLossesOver100 = LONGLossesOver100 + 1ElSIF ShortOnMarket[1] THENSHORTLossesOver100 = SHORTLossesOver100 + 1ENDIF// update the duration of trades and calculate the average durationIF LongOnMarket THENLONGDuration = LONGDuration + 1LONGDurationAvg = LONGDuration / LONGNumberOfTradesELSIF ShortOnMarket THENSHORTDuration = SHORTDuration + 1SHORTDurationAvg = SHORTDuration / SHORTNumberOfTradesENDIF// enter a Long position and update the number of tradesIF MyLongConditions THENBUY 1 CONTRACT AT MARKETLONGNumberOfTrades = LONGNumberOfTrades + 1SET STOP %LOSS 1SET TARGET %PROFIT 2ENDIF// enter a Short position and update the number of tradesIF MyShortConditions THENSELLSHORT 1 CONTRACT AT MARKETSHORTNumberOfTrades = SHORTNumberOfTrades + 1SET STOP %LOSS 1SET TARGET %PROFIT 2ENDIFSi toutefois vous souhaitez mémoriser les résultats de chaque opération alors vous devrez utiliser des tableaux au lieu de variables.
1 user thanked author for this post.
11/18/2024 at 2:34 PM #240478Si vous souhaitez calculer des statistiques, vous pouvez utiliser cet indicateur. Il vous suffit de modifier les conditions d'entrée et de sortie.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384DEFPARAM DRAWONLASTBARONLY = trueREM INDICADORES Y PARÁMETROS DEL SISTEMAONCE DENTRO = 0RSI5 = RSI[5](CLOSE)///////////ESTRATEGIA LARGOS///////////////////c1 = RSI5 CROSSES OVER 30entrada= c1IF DENTRO=0 AND entrada[1] and high>high[1] THENDENTRO = 1BUYPRICE = max(high[1],open)STOPLOSS = BUYPRICE*0.94TAKEPROFIT = 1*(BUYPRICE-STOPLOSS)+BUYPRICEREM CALCULAMOS EL NÚMERO DE ACCIONES QUE HAY QUE COMPRARTITULOS = ROUND(10000/BUYPRICE)ENDIF//////////////////CONDICIONES SALIDA///////////////////S1 = HIGH > TAKEPROFITS2 = LOW < STOPLOSSS3 = rsi5 crosses over 70SETUPOUT = (S1 OR S2 OR S3)IF DENTRO=1 AND SETUPOUT THENDENTRO=0REM VEMOS A QUÉ PRECIO SALIMOS EN FUNCIÓN DE LA CONDICIÓN DE SALIDAIF S1 AND OPEN > TAKEPROFIT THENSELLPRICE = OPENELSIF S1 AND OPEN <= TAKEPROFIT THENSELLPRICE = TAKEPROFITELSIF S3 THENSELLPRICE = closeELSEIF OPEN < STOPLOSS THENSELLPRICE = OPENELSESELLPRICE = STOPLOSSENDIFENDIFREM ALMACENAMOS LOS RESULTADOS DE LA OPERACIÓNRESULTADO2 = (SELLPRICE-BUYPRICE)*TITULOSREM CALCULAMOS EL CAPITAL DESPUÉS DE LA OPERACIÓNCAPITAL = CAPITAL[1]+RESULTADO2ENDIFREM CALCULAMOS EL RESULTADORESULTADO = CAPITAL - CAPITAL[1]REM ESTADÍSTICAS DE GANADORASIF RESULTADO > 0 THENNUMGANADORAS = NUMGANADORAS[1]+1RESULTADOGANADORAS = RESULTADO+RESULTADOGANADORAS[1]MEDIAGANADORAS = ROUND(RESULTADOGANADORAS/NUMGANADORAS)REM ESTADÍSTICAS DE PERDEDORASELSIF RESULTADO < 0 THENNUMPERDEDORAS = NUMPERDEDORAS[1]+1RESULTADOPERDEDORAS = RESULTADO + RESULTADOPERDEDORAS[1]MEDIAPERDEDORAS = ROUND(RESULTADOPERDEDORAS/NUMPERDEDORAS)ENDIF//NUMERO OPERACIONES TOTALNUMTOTAL = NUMGANADORAS+NUMPERDEDORAS//BENEFICIO NETOBENEFICIO = round(RESULTADOGANADORAS+RESULTADOPERDEDORAS)//BENEFICIO POR OPERACIÓNMEDIAOPERACION = ROUND(BENEFICIO/NUMTOTAL)//MÁXIMO DRAWDOWN $T = BARINDEX+1MAXIMOCAPITAL = HIGHEST[T](CAPITAL)DRAWDOWN = CAPITAL-MAXIMOCAPITALMAXIMODRAWDOWN = ROUND(LOWEST[T](DRAWDOWN))//PROFITFACTORPROFITFACTOR = RESULTADOGANADORAS/ABS(RESULTADOPERDEDORAS)//PORCENTAJE ACIERTOACIERTO = round(NUMGANADORAS/NUMTOTAL*100)//PAYOFF RATIOPAYOFF = MEDIAGANADORAS/ABS(MEDIAPERDEDORAS)//EXPECTATIVAEXPECTATIVA = (1+PAYOFF)*ACIERTO/100-1DRAWTEXT("Beneficio = #BENEFICIO# $", -100,-10)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("Ganancia Media = #MEDIAOPERACION# $/op", -100,-30)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("Operaciones = #NUMTOTAL#", -100,-50)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("% acierto = #ACIERTO# %", -100,-70)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("MDD = #MAXIMODRAWDOWN# $", -100,-90)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("PF = #PROFITFACTOR#", -100,-110)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("PAYOFF = #PAYOFF#", -100,-130)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)DRAWTEXT("EXPECTATIVA = #EXPECTATIVA#", -100,-150)ANCHOR(TOPRIGHT,XSHIFT,YSHIFT)RETURN1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on