Bonsoir,
J’ai lancé mon algo en mode réel, et après une heure d’éxécution, PRT affiche le message suivant : server.strategy.probacktest.error.obacktest.error.negative_or_zero_param.call
Pourriez vous m’éclairer de quoi il s’agit ?
PS : Cet algo a été backtesté 500 fois sans aucun problème
L’utilisation du terme backtest dans le message d’erreur prête à confusion … ce n’est pas une erreur rencontrée dans le backtest (le backtest ignore ces erreurs 🙁 ).
Le message d’erreur vous indique que votre code calcule une valeur nulle ou négative. Cela se produit souvent lorsque, par exemple, une barre est manquante ou a une valeur élevée, basse, ouverte et fermée à la même valeur, etc.
J’ai corrigé plusieurs de mes stratégies (après avoir reçu le même message que vous montrez) en utilisant ci-dessous …
max(1, xyz)
Ci-dessus donne la valeur = 1 si xyz se traduit par une valeur nulle ou négative.
L’espoir ci-dessus a du sens, dites simplement si ce n’est pas le cas ? Si vous publiez votre code, nous pourrons peut-être vous aider davantage.
L’idée du
max(1, xyz)
me donnait un suspect à propos de ce bloc d’instruction :
TimeFrame(15 Minutes, UpdateOnClose)
//-----OHLC-----
My15MnOpen = Open
My15MnHigh = High
My15MnLow = Low
My15MnClose = Close
//-----OHLC-----
//--- Heikin Ashi ---
xClose = (My15MnOpen + My15MnHigh + My15MnLow + My15MnClose)/4
If BarIndex=0 Then
xOpen = My15MnOpen
xHigh = My15MnHigh
xLow = My15MnLow
Else
xOpen = (xOpen[1]+xClose[1])/2
xHigh = Max(max(My15MnHigh, xOpen), xClose)
xLow = Min(min(My15MnLow, xOpen), xClose)
Endif
Merci de votre aide
Êtes-vous en train de dire que vous êtes trié maintenant ou demandez-vous toujours de l’aide ?
Pardon
Mon problème n’est toujours pas résolu, et je ne sais pas d’où vient ce problème
J’ai besoin de l’aide svp
Dois je modifier la ligne avec cette instruction If Barindex < 15 ? étant donné que je teste un Heikin Ashi en TimeFrame 15 minutes
Merci pour réponse
-
- Le code ci-dessous est-il votre code d’origine avec lequel vous avez eu un problème?
Ou alors
2. Avez-vous ajouté le max et le min après que j’ai mentionné max dans mon post précédent ?
xHigh = Max(max(My15MnHigh, xOpen), xClose)
xLow = Min(min(My15MnLow, xOpen), xClose)
If Barindex < 15
Quelle ligne de code est au-dessus… Je ne la vois pas ?
<Le code ci-dessous est-il votre code d’origine avec lequel vous avez eu un problème?>
C’est mon code d’origine :
xHigh = Max(max(My15MnHigh, xOpen), xClose)
xLow = Min(min(My15MnLow, xOpen), xClose)
<Quelle ligne de code est au-dessus… Je ne la vois pas ?>
étant donné que je teste un Heikin Ashi en TimeFrame 15 minutes
Dois je modifier la ligne 11 If Barindex = 0 par cette instruction If Barindex < 15 ?
essayez ci-dessous
xHaut = max(1,Max ( max (Mon15MnHaut, xOuvert), xFermé))
xBas = min(1,Min ( min (Mon15MnBas, xOuvert), xFermé))
je n’aurai le retour que demain, car les marchés sont fermés le dimanche
Par contre, backtest, ça marche
A demain donc
xHigh = Max(1, max(My15MnHigh, xOpen), xClose))
xLow = Min(1, min(My15MnLow, xOpen), xClose))
Il serait préférable de faire fonctionner 2 systèmes côte à côte …
Système 1 – votre système d’origine
Système 2 – le système modifié
Ensuite, si le système 1 s’arrête avec le message d’erreur, mais que le système 2 ne s’arrête pas, vous savez que vous avez trouvé le problème dans le code.
Très bien, merci beaucoup mais il y a erreur de syntaxe, alors j’ai modifié comme ceci :
xHigh = Max(1, Max(Max(high, xOpen), xClose))
xLow = Min(1, Min(Min(Low, xOpen), xClose))
L’erreur venait de moi, je suis devenu étourdi
Ce matin, j’ai relancé mon algo, et j’ai eu un autre message d’erreur ci-attaché
Comment peut-on charger l’instruction
DefParam Preloadbars = 5000
dans un programme appelé (Called prog) ou indicateur ?
Merci