Bonjour,
J’ai voulu tester le multit-timeframe sur faisons exotique, le DAX cash 1€ à 15 min.
J’ai le sempiternelle message d’erreur indiquant quand je place un TIMEFRAME (5 minutes), même si c’est 1 min.
Par contre si je le mets en 30 min aucun problème…
J’ai téléphoné à IG mais la personne m’a semblé un peu perdu… elle me demandait de changer les unités de volume arf…
J’ai testé la stratégie suivante dispo ici: https://www.prorealcode.com/blog/learning/approach-multi-timeframe-trading-prorealtime/
defparam cumulateorders=false
//5 minute TF (get the trend of the 5 minute chart)
timeframe(5 minutes,updateonclose)
MA20 = average[20]
bulltrend = summation[3](MA20>MA20[1])=3
//"default" timeframe (the timeframe you will launch the strategy on)
timeframe(default)
sto = Stochastic[14,3](close)
avgsto = average[3](sto)
buyc = sto crosses over avgsto and sto<20
if buyc and bulltrend then
buy at market
endif
set target pprofit 3
set stop ploss 15
Et j’ai le même message d’erreur “Toutes les unités de temps appelés dans le code…”
J’ai testé sur mon compte démo IG et sur le compte live.
Avez-vous une idée svp ?
Merci par avance.
Le timeframe “default” doit être le plus petit utilisé et celui sur lequel on lance la stratégie, hors si tu lances celle-ci sur un timeframe 15 minutes et tu cherches à avoir des données 5-minutes à l’intérieur du code, ça ne fonctionne pas.
C’est pourtant bien ce qu’indique le message d’erreur pourtant ? 🙂
Donc le cas présent, si je comprends bien ce que tu cherches à faire c’est utiliser le code qui se trouve sous l’instruction timeframe(default) en données 15-minutes ? Si oui, alors il faut remplacer “default” par “15 minutes” et lancer la stratégie dans l’UT la plus petite de ton code, soit le 5-minutes.
Voir : Première approche sur le multi timeframe avec ProRealTime
Donc si je comprends bien, il est impossible:
D’être en mode par défaut à 15 min,
De lancer le script en 15 min,
et de regarder en 5 min ce qui se passe afin de vendre avant la mise en place de la bougie 15 min suivante en cas de perte par ex.
HUM…..
Je commande à comprendre en écrivant.
Je dois me placer par ex en TIMFRAME 5 MIN. Lancer tout mon code par défaut en TIMEFRAME 15 min, et là ou j’en ai besoin, passer en mode 5 MIN.
Et si j’avais des besoins en TIMEFRAME 1 MIN, de vrais par défaut être en 1 MIN, lancer tout le code en 15 MIN, puis là ou j’ai besoin conserver des multiples.
ai-je bon ? Car j’avais déjà vu la page première approche mais comme je suis débutant c’est un peu abscons pour moi j’avoue.
Merci par avance.
Non pas bon du tout 🙂
Le timeframe “default” c’est à la fois le plus petit et aussi celui sur lequel on lancera la stratégie, donc tout ce qui se trouvera coder en dessus utilisera ce timeframe.
Parce qu’on a besoin de toujours lancer la stratégie sur l’UT la plus petit utilisé dans le code, au lieu de déclarer TIMEFRAME(5 minutes) on peut aussi écrire TIMEFRAME(default), si l’UT 5-minutes est la plus petite utilisée.
Dans l’exemple de code que tu as donné, tu pourras lancer la stratégie sur toutes les UT inférieures ou égale au 5-minutes, mais le code situé sous l’instruction TIMEFRAME(default) sera lu et évalué dans le timeframe “default” soit celui utilisé pour lancer la stratégie.
Encore hum… 😉
ici:
Première approche sur le multi timeframe avec ProRealTime
il est question d’un TF par défaut (lancement de la stratégie) à 1 min. Et dans le code on passe à 5 min pour avoir une idée de tendance.
moi je test un script lancé en 15 min. Je le code sur ce temps pas défaut mais j’ai besoin de tester une partie en mode 1 min (par ex) pour couper les fuites. En effet si une perte est détecter je dois attendre l’ouverture de la bougie 15 min suivante pour vendre. Alors que si je passe en mode 1 min je peux agir beaucoup plus tôt.
je voudrais tester cela. Et ce que tu dis:
Parce qu’on a besoin de toujours lancer la stratégie sur l’UT la plus petit utilisé dans le code
Confirme ce que je pense. Je dois lancer ma stratégie et 1 min (par ex) mais mettre tout le code en TF 15 min.
et la petite partie qui m’intéresse je la passe en TF 1 min, voir 5 du coup car c’est des multiples.
je crois que j’approche non ?
moi je test un script lancé en 15 min. Je le code sur ce temps pas défaut mais j’ai besoin de tester une partie en mode 1 min (par ex) pour couper les fuites. En effet si une perte est détecter je dois attendre l’ouverture de la bougie 15 min suivante pour vendre. Alors que si je passe en mode 1 min je peux agir beaucoup plus tôt.
C’est bien comme cela qu’il faut procéder. Donc cette approche, tu peux coder comme ceci :
timeframe(15 minutes, updateonclose)
// LA STRATEGIE QUI DETERMINE TES ENTRES/SORTIES
timeframe(1 minute) //ou default car tu lanceras le robot en 1 minute
// GESTION DE TES ORDRES
Merci pour les explications 😊
Je reviens car quelque chose m’échappe toujours.
J’ai pris un code juste pour test, on se moque des résultats ce n’est pas l’objet.
Le code comporte 2 timeframe: un en 15 min et l’autre en 5 min.
Je fais 2 tests, un en mode 1 min et l’autre en mode 5 min.
Comme le script est identique et gère ses TF, les résultats devraient être identique… et bien pas du tout !
Fichtre…
defparam cumulateorders=false
//5 minute TF (get the trend of the 5 minute chart)
timeframe(15 minutes,updateonclose)
MA20 = average[20]
bulltrend = summation[3](MA20>MA20[1])=3
//"default" timeframe (the timeframe you will launch the strategy on)
timeframe(5 minutes,updateonclose)
sto = Stochastic[14,3](close)
avgsto = average[3](sto)
buyc = sto crosses over avgsto and sto<20
if buyc and bulltrend then
buy at market
endif
set target pprofit 3
set stop ploss 15
CFD DAX 1€ (test sur 1 et 5 min).
Pourquoi les résultats sont-il différent ?
Si tu compares les courbes de gains en partant de la même date de début, tu verras que les résultats sont complètements identiques.
10.000 chandeliers en 5 minutes, c’est plus de temps que 10.000 en 1-minute, n’est ce pas ? 🙂
Ah heu… :confuse
C’est tellement évident, désolé. Et merci de ta réponse qui m’a éclairé.
Hello,
Me revoici sur ce sujet avec des preuves à l’appuie d’un problème.
Voici un ex de script très simple:
defparam cumulateorders=false
timeframe(15 minutes,updateonclose)
TimeTrade = TIME > 090000 AND TIME < 171500
indicator1 = Average[7](close)
indicator2 = Average[15](close)
ONCE nblot = 1.2
CA1 = indicator1 CROSSES OVER indicator2
if TimeTrade AND CA1 then
BUY nblot SHARES AT MARKET
endif
CA2 = indicator1 CROSSES UNDER indicator2
IF CA2 THEN
SELL AT MARKET
ENDIF
// Modifier quantite en fonction des gains
if strategyprofit <> strategyprofit[1] then
if positionperf(1) >= 0 then //si dernière position perdante
nblot = nblot + 0.2 //alors on incrémente la quantité de perte
else //si elle est positive
nblot = 1.2 //alors le compte est remis à zéro
endif
endif
set stop ploss 15
Je suis donc en TM 15 min quoi qu’il arrive… mais en fonction de la durée choisi je n’ai pas les mêmes résultats.
J’ai donc pris un volume d’unité assez long, puis j’ai choisi de débuter au 3 février de cette année car si j’affiche en 1 min, 5 mon ou 15 min, tout est affiché.
Vous pouvez voir sur les captures d’écrans que les résultats oscille de -30.61% à +1,94%…
J’ai l’impression que le problème vient de la strategyprofit mais je ne comprends pas pourquoi.
Une idée svp ?
Question BIS:
Pourquoi des fois les drawdown et Runup ne s’affiche pas ?
bonjour,
si tu graph ton indicator 1 et 2 et que tu compare timeframe m15 et M5.
il devrait être identique ?
pour l’ affichage tu ferme et ouvre le rapport
Y a tellement de résultat dans le graph qu’il est difficile d’avoir un avis objectif. Par contre j’ai fait des captures d’écrans des positions et c’est dans la fermeture de ces dernières que ça change, parfois de beaucoup. Et bien sûr dans le nombre de barre.
Je ne comprends absolument pas pourquoi, mais au final si je désactive strategyprofit j’ai le même problème donc c’est pas ça.
Merci pour la solution du second problème ou plutôt bug.