Probleme avec appel d’un indicateur MTF dans un backtest
Forums › ProRealTime forum Français › Support ProOrder › Probleme avec appel d’un indicateur MTF dans un backtest
- This topic has 4 replies, 3 voices, and was last updated 1 year ago by plbourse.
-
-
09/24/2023 at 11:57 AM #221498Bonjour à tousJ’utilise ProRealTime V12 sur IB, compte DemoJ’ai des difficultés avec l’appel d’un indicateur MTF dans un backtest. J’ai essayé de simplifier le pb au maximum pour la compréhension de tous et de poster dans le Forum Backtest et ProOrder puisque le pb semble spécifique au BacktestMes indicateurs, fonctionnent sans PB d’affichage
- indicateur de Force en Daily qui retourne 1 si le close est superieur de 15 % au close[200], 0 dans les autres cas
Indic Essai Force1234567891011// Indicateur de ForceOnce Force = 0If close/close[200] >= 1.10 thenForce = 1elseForce = 0endifReturn Force as "indicForce"
- Indicateur de Force en Weekly qui retourne 1 si le Close[1] est supérieur de 15% au close[41], 0 dans les autres cas
Indic EssaiFroceW123456789101112// Indicateur d'essai de Force en WeeklyTIMEFRAME(Weekly)Once Forcew = 0If close[1]/close[41] >= 1.10 thenForcew = 1elseForcew = 0endifTIMEFRAME(Daily)Return Forcew as "indicForcew"
- Copie de l’indicateur de Froce en Weekly qui ne fait que appeler l’indicateur précédent avec la fonction Call, fonctionne sans problème
Indic CopieForceW123myForce = CALL "Ind EssaiForceW"Return myForce as "CopieForceW"
Mes codes de backtest- Essai 1
- achat 1 position sur croisement haussier de 2 Moyennes mobiles 20 et 50
- Vente sur croisement baissier
Essai 1 2023092112345678910111213141516171819// Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50// Achat 1 Titre Rsique 1000 euros pour 4 ATR pour le StopLossini// Vente sur croisement inverse des 2 moyennes Mobile// Pas de StopLoss ni de Stop suiveurif Average[20](close) CROSSES OVER Average[50](close) and Not ONMARKET thenStopLossini = Close - 4*AverageTrueRange[20](Close)Buy 1 Shares at market nextbaropenendifIf close CROSSES UNDER StopLossini thenSell AT MARKET NextBarOpenendifif Average[20](close) CROSSES under Average[50](close) and ONMARKET thenSell AT MARKET NextBarOpenEndif
- Essai 2, idem 1, mais condition achat supplémentaire, la Force en daily doit être supérieure à 0.5
Essai 2 20230921123456789101112131415161718192021// Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50// Achat 1 Titre sur croisement des MM et ForceDaily// Vente sur croisement inverse des 2 moyennes Mobile// Pas de StopLoss ni de Stop suiveuronce myForce = 0myForce = CALL "Ind EssaiForce"if Average[20](close) CROSSES OVER Average[50](close) and myForce >= 0.5 and Not ONMARKET thenStopLossini = Close - 4*AverageTrueRange[20](Close)Buy 1 Shares at market nextbaropenendifIf close CROSSES UNDER StopLossini thenSell AT MARKET NextBarOpenendifif Average[20](close) CROSSES under Average[50](close) and ONMARKET thenSell AT MARKET NextBarOpenEndif
- Essai 3, idem 1, mais condition achat supplémentqire, la Force en daily doit être supérieure à 0.5
Essai 3 20230921123456789101112131415161718192021// Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50// Achat 1 Titre sur croisement des MM et ForceWeekely// Vente sur croisement inverse des 2 moyennes Mobile// Pas de StopLoss ni de Stop suiveuronce myForce = 0myForce = CALL "Ind EssaiForcew"if Average[20](close) CROSSES OVER Average[50](close) and myForce >= 0.5 and Not ONMARKET thenStopLossini = Close - 4*AverageTrueRange[20](Close)Buy 1 Shares at market nextbaropenendifIf close CROSSES UNDER StopLossini thenSell AT MARKET NextBarOpenendifif Average[20](close) CROSSES under Average[50](close) and ONMARKET thenSell AT MARKET NextBarOpenEndif
L’essai 3 plante systematiquement et me renvoie “Le backtest ne peut démarrer à cause d’une erreur d’analyse dans le code : ligne 4, colonne 0”En dehors des codes ci-dessus, ci-joint les copies d’écran du graphe des cours, Indicateurs et Backtests avec et sans le message d’erreurJ’ai essayé toutes sortes de possibilités et ne comprend pas la cause de l’erreur. Est-ce que la fonction serait mal appelée dans le programme de backtest ? (lorsque j’appelle la fonction dans un autre indicateur, celafonctionne sans problème°
Merci pour vos réponses et votre aideBonne programmation à tous et bons tradesplBourseCordialement
09/24/2023 at 12:07 PM #22150109/24/2023 at 1:46 PM #221510Je ne l’ai pas encore testé en V12, mais je me rappelle de la V11 qu’on ne peut pas appeler une subroutine avec du MTF dedans. La solution est d’intégrer la partie MTF dans la module principale. C’est connu que ce problème ne donne pas de message d’erreur intelligent. J’ai l’idée que la V12 n’a pas encore évoluée sur ce plan, dommage.
Essaiez d’intégrer le code de Ind EssaiForce dans le stratégie même pour vérifier. Le résultat m’intéresse.09/25/2023 at 7:46 AM #221538En effet, on ne peut pas encore CALL un indicateur MTF, il faut pour cela, comme l’indique Wim, faire un CALL de chaque indicateur en timeframe unique, puis de mixer leurs résultats dans le code ProBacktest.
1 user thanked author for this post.
09/26/2023 at 5:10 AM #221590Bonjour
Nicolas a déjà répondu sur l’impossibilité technique de ma demande : les opérations MTF ne peuvent être que dans le code du programme backtest appelant, pas dans le code d’un indicateur appele.
Pour répondre à la question de Win, j’ai intégré le code de l’indicateur dans le backtest
Essai 4 2023092612345678910111213141516171819202122232425262728293031323334// Essai simple Achat sur croisement de 2 Moyennes mobiles 20 50// Achat 1 Titre sur croisement des MM et ForceWeekely// Vente sur croisement inverse des 2 moyennes Mobile// Pas de StopLoss ni de Stop suiveuronce myForce = 0// code de l'indicateur EsssaiForceWTIMEFRAME(Weekly)Once myForceW = 0If close[1]/close[41] >= 1.10 thenmyForceW = 1elsemyForceW = 0endifTIMEFRAME(Daily)if Average[20](close) CROSSES OVER Average[50](close) and myForceW >= 0.5 and Not ONMARKET thenStopLossini = Close - 4*AverageTrueRange[20](Close)Buy 1 Shares at market nextbaropenendifIf close CROSSES UNDER StopLossini thenSell AT MARKET NextBarOpenendifif Average[20](close) CROSSES under Average[50](close) and ONMARKET thenSell AT MARKET NextBarOpenEndifLe screenshot ci dessous montre que le backtest ne prend des positions que lorsque l’indicateur le permet
Pas d’autres travaux sur ce sujet.
Merci
- indicateur de Force en Daily qui retourne 1 si le close est superieur de 15 % au close[200], 0 dans les autres cas
-
AuthorPosts
Find exclusive trading pro-tools on