Problème multiframe sur 3 unités de temps
Forums › ProRealTime forum Français › Support ProBuilder › Problème multiframe sur 3 unités de temps
- This topic has 26 replies, 3 voices, and was last updated 3 years ago by wtangsiri.
-
-
05/22/2020 at 4:18 PM #132860
Merci Nicolas,
le code se comporte en effet bien différemment!
je vais continuer à conditionner pour éviter les faux signaux.
Grand Merci
05/24/2020 at 2:41 PM #133071Merci Nicolas,
Fonctionne très bien pour chaque UT.
La stratégie est maintenant Opérationnelle et Fonctionnelle…
Slts
05/24/2020 at 4:47 PM #13308105/25/2020 at 6:02 AM #13310805/25/2020 at 4:51 PM #1332021234567891011121314151617181920timeframe(15 minute)MMA100A15 = ExponentialAverage[100](close)MMA300A15 = ExponentialAverage[300](close)MMA600A15 = ExponentialAverage[600](close)MMA1000A15 = ExponentialAverage[1000](Close)BuyConditionA = (Close > MMA100A15) and (Close > MMA300A15) and (Close > MMA600A15) and (Close > MMA1000A15)if BuyConditionA thenxA = BuyConditionAendif//déclare la stratégie dans l'UT 5 minutestimeframe(5 minute)MMA100A5 = ExponentialAverage[100](close)MMA300A5 = ExponentialAverage[300](close)MMA600A5 = ExponentialAverage[600](close)MMA1000A5 = ExponentialAverage[1000](Close)BuyConditionB = (Close > MMA100A5) and (Close > MMA300A5) and (Close > MMA600A5) and (Close > MMA1000A5)if BuyConditionB thenyA = BuyConditionBendifVoici un morceau du code rectifié…. et de cette manière, les variable sont bien lues dans Chaque UT Correspondante 🙂
De cette manière tu obtiens les convergences recherchées.
Je vais faire tourner la stratégie un moment en réel pour m’assurer que ça me donne les mêmes résultat qu’en BackTest….le WALKFORWARD fonctionne bien de 10/80 à 50/50…donc il n’y a pas de raison que ça n’aille pas….
je dois intégrer quelques conditions pour améliorer mon ratio Gain/Perte
je vous tiendrez informé.
Slts
04/09/2021 at 11:20 AM #166615PRT V11 affiche un message d’erreur explicite dans ce cas. Toutes les variables définies dans un timeframe ne peuvent être redéfinies dans un autre timeframe
Le code total d’origine de fantasio ici https://www.prorealcode.com/topic/probleme-multiframe-sur-3-unites-de-temps/#post-132464 devient par exemple
Code MTF123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé//DEFPARAM FLATBEFORE = 091500//DEFPARAM FLATAFTER = 154500daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0//Indicateurs de tendancePivot = (DHigh(1) + DLow(1) + DClose(1) + DOpen(0))/4//Indicateurs de prise de positions//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute, updateonclose)MMA100M15 = (ExponentialAverage[100](close))MMA300M15 = (ExponentialAverage[300](close))MMA600M15 = (ExponentialAverage[600](close))MMA1000M15 = (ExponentialAverage[1000](close))IndM15 = RSI[7](Close)xM15 = 0.1 * (IndM15 - 50)yM15 = (EXP (2 * xM15) - 1) / (EXP (2 * xM15) + 1)zM15 = 50 * (yM15 + 1)TimeM15aa = Close > MMA100M15TimeM15ab = Close > MMA300M15TimeM15ac = Close > MMA600M15TimeM15ad = Close > MMA1000M15TimeM15ae = zM15 < 38.2buyconditionM15 = (TimeM15aa and TimeM15ab and TimeM15ac and TimeM15ad and TimeM15ae)//declare the strategy on the 5 minutes timeframetimeframe(5 minute, updateonclose)MMA100M5 = (ExponentialAverage[100](close))MMA300M5 = (ExponentialAverage[300](close))MMA600M5 = (ExponentialAverage[600](close))MMA1000M5 = (ExponentialAverage[1000](close))IndM5 = RSI[7](Close)xM5 = 0.1 * (IndM5 - 50)yM5 = (EXP (2 * xM5) - 1) / (EXP (2 * xM5) + 1)zM5 = 50 * (yM5 + 1)TimeM5aa = Close > MMA100M5TimeM5ab = Close > MMA300M5TimeM5ac = Close > MMA600M5TimeM5ad = Close > MMA1000M5TimeM5ae = zM5 < 38.2buyconditionM5 = (TimeM5aa and TimeM5ab and TimeM5ac and TimeM5ad and TimeM5ae)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)MMA100Dft = (ExponentialAverage[100](close))MMA300Dft = (ExponentialAverage[300](close))MMA600Dft = (ExponentialAverage[600](close))MMA1000Dft = (ExponentialAverage[1000](close))IndDft = RSI[7](Close)xDft = 0.1 * (IndDft - 50)yDft = (EXP (2 * xDft) - 1) / (EXP (2 * xDft) + 1)zDft = 50 * (yDft + 1)TimeM1aa = Close > PivotTimeM1ab = Close > MMA100DftTimeM1ac = Close > MMA300DftTimeM1ad = Close > MMA600DftTimeM1ae = Close > MMA1000DftTimeM1af = zDft < 38.2buyconditiondft = (TimeM1aa and TimeM1ab and TimeM1ac and TimeM1ad and TimeM1ae and TimeM1af)if (buyconditionM15 and buyconditionM5 and buyconditionDft) and not daysForbiddenEntry thenbuy 0.3 share at marketendif//Position Vendeuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute, updateonclose)TimeM15va = Close < MMA100M15TimeM15vb = Close < MMA300M15TimeM15vc = Close < MMA600M15TimeM15vd = Close < MMA1000M15TimeM15ve = zM15 > 61.8sellconditionM15 = (TimeM15va and TimeM15vb and TimeM15vc and TimeM15vd and TimeM15ve)//declare the strategy on the 5 minutes timeframetimeframe(5 minute, updateonclose)TimeM5va = Close < MMA100M5TimeM5vb = Close < MMA300M5TimeM5vc = Close < MMA600M5TimeM5vd = Close < MMA1000M5TimeM5ve = zM5 > 61.8sellconditionM5 = (TimeM5va and TimeM5vb and TimeM5vc and TimeM5vd and TimeM5ve)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)TimeM1va = Close < PivotTimeM1vb = Close < MMA100DftTimeM1vc = Close < MMA300DftTimeM1vd = Close < MMA600DftTimeM1ve = Close < MMA1000DftTimeM1vf = zDft > 61.8sellconditionDft = (TimeM1va and TimeM1vb and TimeM1vc and TimeM1vd and TimeM1ve and TimeM1vf)if (sellconditionM15 and sellconditionM5 and sellconditionDft) and not daysForbiddenEntry thensellshort 0.3 share at marketendif//************************************************************************//Stop Loss & Trailing functionSET STOP LOSS 27trailingstart = 27 //trailing will start @trailinstart points profittrailingstep = 9 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL = 0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL = 0 AND close-tradeprice(1)>trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL > 0 AND close-newSL>trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL = 0 AND tradeprice(1)-close>trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL > 0 AND newSL-close>trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL > 0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIFGraphonprice pivotGraphonprice MMA100M15Graphonprice MMA300M15Graphonprice MMA600M15Graphonprice MMA1000M1504/09/2021 at 1:22 PM #166622Cela dit, je pense avoir trouvé un problème de calcul car j’ai fait un indicateur qui calcule les moyennes mobiles en timeframe 15 minutes et 5 minutes sur le graphe, et les valeurs ne correspondent pas avec celles du back-test. Aucun problème pour l’EMA 100 mais des problèmes sur les calculs d’EMA sur ces périodes plus longues. Pour faire simple j’ai fait une stratégie très courte et un indicateur très court aussi qui permet de montrer le problème de calcul entre la stratégie PRT et l’indicateur
12345678910111213timeframe(15 minute)MMA100M15 = (ExponentialAverage[100](close))MMA600M15 = (ExponentialAverage[600](close))timeframe(5 minute)MMA100M5 = (ExponentialAverage[100](close))MMA600M5 = (ExponentialAverage[600](close))timeframe(1 minute)MMA100M1 = (ExponentialAverage[100](close))MMA600M1 = (ExponentialAverage[600](close))return MMA100M15 as "iEMA100M15", MMA600M15 as "iEMA600M15", MMA100M5 as "iEMA100M5", MMA600M5 as "iEMA600M5", MMA100M1 as "iEMA100M1", MMA600M1 as "iEMA600M1"Et sur la stratégie,
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivétimeframe(15 minute)MMA100M15 = (ExponentialAverage[100](close))MMA600M15 = (ExponentialAverage[600](close))timeframe(5 minute)MMA100M5 = (ExponentialAverage[100](close))MMA600M5 = (ExponentialAverage[600](close))timeframe(1 minute)MMA100M1 = (ExponentialAverage[100](close))MMA600M1 = (ExponentialAverage[600](close))Graphonprice MMA100M15 as "sEMA100M15"Graphonprice MMA600M15 as "sEMA600M15"Graphonprice MMA100M5 as "sEMA100M5"Graphonprice MMA600M5 as "sEMA600M5"Graphonprice MMA100M1 as "sEMA100M1"Graphonprice MMA600M1 as "sEMA600M1"VosConditions = 0// généré automatiquement par PRT// Conditions pour ouvrir une position acheteuseIF NOT LongOnMarket AND VosConditions THENBUY 1 CONTRACTS AT MARKETENDIF// Conditions pour fermer une position acheteuseIf LongOnMarket AND VosConditions THENSELL AT MARKETENDIF// Conditions pour ouvrir une position en vente à découvertIF NOT ShortOnMarket AND VosConditions THENSELLSHORT 1 CONTRACTS AT MARKETENDIF// Conditions pour fermer une position en vente à découvertIF ShortOnMarket AND VosConditions THENEXITSHORT AT MARKETENDIF// Stops et objectifs : entrez vos stops et vos objectifs iciles chiffres sont différérents pour les EMA de 600 prériodes en UT M5 et UT M15. Le backtest prend toutes les dates affichées (pas de différence sur la date de début par exemple).
Nicolas tu confirmes le problème ?
04/09/2021 at 1:31 PM #16662504/09/2021 at 3:32 PM #166634J’ai trouvé le problème qui me semble être un bug dans le mode timeframe d’un indicateur PRT à première vue, pour avoir un calcul qui se rapproche de la réalité sur le graphique 1 minute, il faut afficher beaucoup d’unités (beaucoup plus qu’il n’en faudrait a priori pour calculer une EMA de 600 en UT 15 minutes sur un graphique 1 minute). même avec 20 k unités affichées en 1 minute, le calcul de l’EMA 600 sur un timeframe de 15 minutes est faux…
J’ai posté dans le forum anglais https://www.prorealcode.com/topic/multi-timeframe-mtf-indicators-for-prorealtime/page/4/#post-166630
Y-a-t-il une explication à ce problème ?
04/09/2021 at 4:30 PM #166644EMA utilise la valeur EMA précédente avec un facteur de pondération pour calculer en continu la nouvelle valeur, donc une décroissance peut se produire si vous démarrez le calcul plus tôt ou plus tard, et c'est ce que vous observez ici. Si j'utilise 30k unités, j'obtiens les mêmes résultats sur la barre actuelle.04/09/2021 at 10:34 PM #16666408/21/2021 at 1:42 PM #175841Bonjour Fantasio
J’ai vu votre demande auprès de Nicolas, et je m’aperçois que je recherche quelque chose qui est très similaire et je me suis dit que peut-être, vous pourriez m’aider :
Je recherche un programme qui permet de collecter le RSI en timeframe 1mn, 5mn, et 15mn et d’afficher le résultat sur un petit coin d’écran
Auriez vous une idée ?
Merci pour votre retour
-
AuthorPosts
Find exclusive trading pro-tools on