Bonjour à tous
J’utilise ProRealTime V12 sur IB, compte Demo
J’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 Backtest
Mes 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
// Indicateur de Force
Once Force = 0
If close/close[200] >= 1.10 then
Force = 1
else
Force = 0
endif
Return 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
// Indicateur d'essai de Force en Weekly
TIMEFRAME(Weekly)
Once Forcew = 0
If close[1]/close[41] >= 1.10 then
Forcew = 1
else
Forcew = 0
endif
TIMEFRAME(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
myForce = CALL "Ind EssaiForceW"
Return myForce as "CopieForceW"
Mes codes de backtest
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’erreur
J’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 aide
Bonne programmation à tous et bons trades
plBourse
Cordialement
Pour compléter la description du pb précédent, ci joint 2 copies d’écran avec les 3 backtests, avec le message d’erreur et montrant que le backtest reste flat dans le cas 3
WimParticipant
Junior
Je 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.
En 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.
Bonjour
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 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 suiveur
once myForce = 0
// code de l'indicateur EsssaiForceW
TIMEFRAME(Weekly)
Once myForceW = 0
If close[1]/close[41] >= 1.10 then
myForceW = 1
else
myForceW = 0
endif
TIMEFRAME(Daily)
if Average[20](close) CROSSES OVER Average[50](close) and myForceW >= 0.5 and Not ONMARKET then
StopLossini = Close - 4*AverageTrueRange[20](Close)
Buy 1 Shares at market nextbaropen
endif
If close CROSSES UNDER StopLossini then
Sell AT MARKET NextBarOpen
endif
if Average[20](close) CROSSES under Average[50](close) and ONMARKET then
Sell AT MARKET NextBarOpen
Endif
Le 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