Echelle de temps multiples
Forums › ProRealTime forum Français › Support ProOrder › Echelle de temps multiples
- This topic has 13 replies, 2 voices, and was last updated 2 years ago by Nicolas.
Tagged: Macd, mtf, multi timeframe
-
-
10/05/2018 at 12:49 PM #82036
Bonjour,
Je souhaiterais introduire dans un Pr0Order des conditions multiples incluant des échelles de temps différentes
Dans l’exemple ci-dessous je voudrais par exemple que l’indicateur1 soit à 5minutes, puis faisant partie de la même condition d’achat que l’indicateur2 soit à 10minutes…
// Conditions pour ouvrir une position acheteuse
c1 = (close >= close)
indicator1 = MACD[9,26,12](close) =>10mn
indicator2 = MACD[9,26,12](close) =>5mn
c2 = (indicator1 > 0) & (indicator2 > 0)
Auriez-vous une idée pour écrire cela ?
Merci
Stéphane
10/05/2018 at 1:01 PM #82039Cela ressemble beaucoup à ce que j’ai posté ici: https://www.prorealcode.com/topic/ouverture-immediate-position/#post-81939 (pour référence)
Mais aurait besoin de quelques adaptations :
12345678910111213defparam cumulateorders=falsetimeframe(10 minutes,updateonclose)macd10 = MACD[12,26,9](close)timeframe(5 minutes,updateonclose) //or timeframe(default) on a 5 minutes TFmacd5 = MACD[12,26,9](close)condition = macd10>0 and macd5>0if not longonmarket and condition thenbuy at marketendif10/09/2018 at 10:37 AM #82346Bonjour Nicolas,
Merci de cette réponse. J’obtiens
12345678910111213141516171819202122DEFPARAM CumulateOrders = False // Cumul des positions désactivé// Conditions pour ouvrir une position acheteuseTIMEFRAME(1 Minute,updateonclose)indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"c1 = (indicator1 > indicator2)TIMEFRAME(2 Minute,updateonclose)indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"c2 = (indicator1 > indicator2)IF c1 and c2 THENBUY 4 SHARES AT MARKETENDIF// Conditions pour fermer une position acheteuseindicator3, ignored, ignored, ignored = CALL "INDICATEUR HG"c1 = (indicator3 < 0)IF c1 THENSELL AT MARKETENDIFMais au lancement j’ai un message d’erreur qui m’indique “Tous les Timeframes appelés dans le code doivent être dans la même base que celle de l’unité de temps du graphique (temps, xvolume ou xticks)
Ce qui n’est pas par définition possible si mon objectif est de déclencher un ordre à la validation conditionnelle d’un même siganl portant sur 2 ou N échelle de temps.
Auriez-vous un éclairage supplémentaire ?
Merci.
10/09/2018 at 11:01 AM #82348Re-bonjour,
Je modifie mon code après avoir trouvé le topic sur le “Timeframe” avec la fonction “Timeframe (default” mais cela ne change pas mon message d’erreur
“Tous les Timeframes appelés dans le code doivent être dans la même base que celle de l’unité de temps du graphique (temps, xvolume ou xticks)
Une aide est donc toujours espérée… merci 🙂
1234567891011121314151617181920212223// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé// Conditions pour ouvrir une position acheteuseTIMEFRAME(1 Minute,updateonclose)indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"c1 = (indicator1 > indicator2)timeframe(default)indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"c2 = (indicator1 > indicator2)IF c1 and c2 THENBUY 4 SHARES AT MARKETENDIF// Conditions pour fermer une position acheteuseindicator3, ignored, ignored, ignored = CALL "INDICATEUR HG"c1 = (indicator3 < 0)IF c1 THENSELL AT MARKETENDIF10/09/2018 at 2:49 PM #82372Merci d’utiliser le bouton “insert PRT code” pour poster du code dans le corps d’un message.
En effet, il faut que le timeframe “1 minute”, soit un timeframe multiple de celui qui est utilisé pour lancer la stratégie (le timeframe “default”).
Par ailleurs on ne peut pas mélanger les timeframes en volumes/ticks avec des unités de temps en “vrai” temps: 1min, 15 minutes, etc..
10/09/2018 at 7:23 PM #82390Bonjour,
je me permet de venir poster dans ce message car j’ai exactement le même problème.
Je définis 2 indicateurs avec une échelle 1 heure et 10 mn. L’échelle de base est la minute (celle du graphique avec les cours). J’achète sur la base de ces trois indicateurs, puis je vérifie que la position est gagnante avec une échelle de 15 secondes, ce qui donne ceci en abrégée:
123456789101112131415161718192021222324252627282930313233343536373839404142// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivétimeframe(1 hour, updateonclose)Once MoyenneFlag1H = 0...timeframe(10 Minute, updateonclose)Once MoyenneFlag10mn = 0...timeframe(default)Once MoyenneFlag1mn = 0// Passage d'un ordre longOnce NbreContrat = 2Once Contrat = 0Once CoursMax = 0if MoyenneFlag1H > 0 Thenif MoyenneFlag10mn > 0 Thenif MoyenneFlag1mn = 1 ThenBuy NbreContrat Contract at MarketContrat = 1CoursMax = TradePriceEndIfEndIfEndIf// Nous avons un contrat long, recherche d'un retournement pour vendreTimeFrame(15 second)Once PerteRelative = PerteMax/(NbreContrat * 10000)If Contrat = 1 ThenIf Close > CoursMax ThenCoursMax = CloseElsIf CoursMax < Close ThenIf Close < (CoursMax * PerteRelative) ThenSell at MarketEndIfEndifEndIfLe problème doit donc venir du timeframe 15 secondes. Est-il possible d’éviter cette contrainte ?
Merci
10/10/2018 at 8:34 AM #82422Le timeframe qui cadence la lecture du code est toujours celui le plus petit, donc le 15 secondes dans ce dernier cas. Donc le timeframe default est le 15 secondes et c’est sur cette unité de temps que la stratégie doit être backtesté / tradé. 1 minute étant un multiple de 15 secondes, il ne devrait donc ne plus y avoir de problème.
10/10/2018 at 11:00 AM #82443Je te remercie pour ta réponse. Si je comprends bien l’unité par défaut doit donc être l’unité (de temps par exemple) la plus petite et les autres des multiples de cette unité.
Donc si par hazard je prenais une utilité de base égale à 25 secondes (!!), je ne pourrait pas avoir un timeframe sur une minute. Est-ce correcte ?
10/10/2018 at 2:58 PM #8246810/10/2018 at 3:10 PM #8247311/09/2022 at 3:08 PM #203861Bonjour,
Savez-vous si depuis 2018 on peut maintenant mélanger les unités de temps conventionnelles et les ticks?
Par ailleurs, savez-vous si nous pourrons prochainement utiliser proorder en ticks? Ce serait un vrai plus pour les systèmes automatiques.
Merci.
11/09/2022 at 4:07 PM #203864Non, il n’est pas possible d’utiliser les UT en ticks dans ProOrder, il n’y a par ailleurs pas de projet à ce propos, désolé.
1 user thanked author for this post.
11/09/2022 at 5:14 PM #203867OK, c’est bien dommage, j’imagine que cela intéresserait nombre de scalper!
11/09/2022 at 5:46 PM #203868copier/coller d’une réponse récente que j’ai faite à ce sujet:
Je suis désolé mais il n’y a aucune évolution prévue pour cela. Déjà évoqué ici et là sur le forum, le problème principal est la reproductibilité des graphiques, en effet les représentations en ticks n’étant pas ‘officiel’, c’est à dire non distribué par le courtier et généré à la volée par la plateforme, selon votre choix de X ticks. Pour mémoire on peut très bien créé des graphiques en 26 ticks par exemples ou en 133, peu importe, c’est une liberté incroyable offerte par la plateforme.
Mais gérer l’ensemble de ces graphiques “personnels” sur les serveurs ProOrder nécessiterait de stocker ces données pour les milliers d’utilisateurs qui utilisent le trading automatique, c’est énorme. Sans compter les éventuels soucis de reproductibilité entre vos graphiques sur votre ordinateur et ceux qui seraient créé sur des serveurs distants. Puisqu’il ne s’agit de graphiques non officiel, quid des éventuels problèmes de trading rencontrés ? Bref, ce serait très compliqué pour un utilisateur qui veut savoir pourquoi la bougie de 13:42:12s sur son graphique GMT+4 en 208 ticks n’a pas provoqué un ordre chez son courtier alors que son BT lui indique que c’est bien le cas.
https://www.prorealcode.com/topic/trading-automatique-sur-des-graphiques-en-ticks/
-
AuthorPosts
Find exclusive trading pro-tools on