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/20/2020 at 9:57 AM #132373
Bonjour la communauté,
j’ai un petit soucis avec une de mes stratégies…
En effet, j’essaie de coder cette strat sur 3 unités de temps (15, 5 et 1 minute) dont une partie du code ci-dessous, et le problème que j’ai, c’est que le bot prend des positions alors qu’il ne devrait pas avec ces conditions:
12345678910111213141516171819202122232425262728293031//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute, updateonclose)Time15aa = Close > PivotTime15ab = Close > MMA100Time15ac = Close > MMA300Time15ad = Close > MMA600Time15ae = Close > MMA1000buyconditionAA = (Time15aa and Time15ab and Time15ac and Time15ad and Time15ae)//declare the strategy on the 5 minutes timeframetimeframe(5 minute, updateonclose)Time5aa = Close > PivotTime5ab = Close > MMA100Time5ac = Close > MMA300Time5ad = Close > MMA600Time5ae = Close > MMA1000buyconditionAB = (Time5aa and Time5ab and Time5ac and Time5ad and Time5ae)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)Time1aa = Close > PivotTime1ab = Close > MMA100Time1ac = Close > MMA300Time1ad = Close > MMA600Time1ae = Close > MMA1000Time1af = z < 38.2buyconditionAC = (Time1aa and Time1ab and Time1ac and Time1ad and Time1ae and Time1af)if (buyconditionAA and buyconditionAB and buyconditionAC) and not daysForbiddenEntry thenbuy 0.3 share at marketendifj’ai peut être mal écrit le code, mais le fait est que le bot ne devrait pas acheter de positions sous le pivot, or c’est ce qu’il fait
Merci pour votre aide.
05/20/2020 at 10:21 AM #13237605/20/2020 at 10:33 AM #132381Bonjour Nicolas,
Oui effectivement, j’ai bien grapher le pivot et les 4 moyennes, tout ce superpose au pivot et aux moyennes sur le graphique le problème ne vient pas de ce coté. (uniquement en unité de temps 1 min….je n’est pas la possibilité de contrôler dans les autres timeframes car prorealtime ne me laisse pas faire.
Je sais pas trop pourquoi j’ai ça…j’ai essayé de coder avec plusieurs syntaxes, mais j’ai le même problème (achat sous pivot….et également sous les moyennes alors que le prix devrait être au dessus pour remplir mes conditions)
Trop de conditions? trop de timeframe?
merci pour le retour
05/20/2020 at 3:39 PM #13242905/20/2020 at 3:55 PM #132439Oui Nicolas,
j’ai bien compris que updateonclose la position se prend à la fermeture de la bougie précédente…(mais sur l’unité de temps sur laquelle je prend position non?) les conditions dans les unités de temps 15 et 5 min ne me servent qu’à confirmer la tendance….
Ci joint deux cas ou une position acheteuse est prise sous le pivot et sous les moyennes…..!!!
05/20/2020 at 5:05 PM #132456Je ne vois qu’une seule unité de temps sur ton graphique.
Si je reprends ton code, tu vérifies si le Close en M15 est au dessus du pivot (et les MM), idem pour M5 et idem pour M1.
Pour mémoire, l’ordre que tu pointes dans ta 1ère copie d’écran est à 8h41, donc tu utilises la bougie de 8h30 en M15 et celle de 8h40 en M5 (puisque updateonclose).
Mais en effet, la bougie M1 est bien dessous le pivot. Je n’ai pas d’explication, mais je vois que tu utilises l’optimisation, quelles sont les variables optimisées ? J’aimerai bien reproduire pour t’aider davantage, mais sans le code complet … dur ! 😉
05/20/2020 at 6:00 PM #132464Nicolas,
voici le code sur lequel je travail pour l’instant:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128// 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))/4MMA100 = (ExponentialAverage[100](close))MMA300 = (ExponentialAverage[300](close))MMA600 = (ExponentialAverage[600](close))MMA1000 = (ExponentialAverage[1000](close))//Indicateurs de prise de positionsInd = RSI[7](Close)x = 0.1 * (Ind - 50)y = (EXP (2 * x) - 1) / (EXP (2 * x) + 1)z = 50 * (y + 1)//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute, updateonclose)Time15aa = Close > MMA100Time15ab = Close > MMA300Time15ac = Close > MMA600Time15ad = Close > MMA1000Time15ae = z < 38.2buyconditionAA = (Time15aa and Time15ab and Time15ac and Time15ad and Time15ae)//declare the strategy on the 5 minutes timeframetimeframe(5 minute, updateonclose)Time5aa = Close > MMA100Time5ab = Close > MMA300Time5ac = Close > MMA600Time5ad = Close > MMA1000Time5ae = z < 38.2buyconditionAB = (Time5aa and Time5ab and Time5ac and Time5ad and Time5ae)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)Time1aa = Close > PivotTime1ab = Close > MMA100Time1ac = Close > MMA300Time1ad = Close > MMA600Time1ae = Close > MMA1000Time1af = z < 38.2buyconditionAC = (Time1aa and Time1ab and Time1ac and Time1ad and Time1ae and Time1af)if (buyconditionAA and buyconditionAB and buyconditionAC) and not daysForbiddenEntry thenbuy 0.3 share at marketendif//Position Vendeuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute, updateonclose)Time15va = Close < MMA100Time15vb = Close < MMA300Time15vc = Close < MMA600Time15vd = Close < MMA1000Time15ve = z > 61.8sellconditionVA = (Time15va and Time15vb and Time15vc and Time15vd and Time15ve)//declare the strategy on the 5 minutes timeframetimeframe(5 minute, updateonclose)Time5va = Close < MMA100Time5vb = Close < MMA300Time5vc = Close < MMA600Time5vd = Close < MMA1000Time5ve = z > 61.8sellconditionVB = (Time5va and Time5vb and Time5vc and Time5vd and Time5ve)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)Time1va = Close < PivotTime1vb = Close < MMA100Time1vc = Close < MMA300Time1vd = Close < MMA600Time1ve = Close < MMA1000Time1vf = z > 61.8sellconditionVC = (Time1va and Time1vb and Time1vc and Time1vd and Time1ve and Time1vf)if (sellconditionVA and sellconditionVB and sellconditionVC) 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 STOPENDIF//Graphonprice pivot//Graphonprice MMA100//Graphonprice MMA300//Graphonprice MMA600//Graphonprice MMA1000à part l’inverse fisher RSI dont j’ai pris le code sur le PDF Proorder….il n’y à pas d’optimisation
je te rejoins à toute fin utile le graph sur lequel on voit bien une prise de position à l’achat sous le pivot en UT 1 min
Merci pour ton aide
05/21/2020 at 10:37 AM #132552Slt Nicolas,
si ça peut aider, voici un prtscr avec les trois unité de temps, ou l’on voit une prise de position vente à 10h20 plus ou moins (graph envoyé pas papa).
UT 1 conditions OK (Sous pivot et sous les moyennes)
UT2 pas OK (sous pivot mais dans les moyennes)
UT3 pas OK (sous pivot mais dans les moyennes)
c’est comme si le code pour les UT 15 et 5 min n’était pas prit en compte…
à te lire
05/22/2020 at 9:18 AM #132765A la lecture de ton code, tout paraît logique. Si tu lances ton système en M1, ce qui est normal puisque c’est le TF le plus petit utilisé, alors tes 4 moyennes mobiles déclarés en tête de code, sous aucune instruction TIMEFRAME seront calculés en TF 1-minute, et donc ces variables seront toutes les mêmes pour tous les TF que tu utilises.
05/22/2020 at 10:07 AM #132780Bonjour Nicolas,
comment dois-je alors faire pour que les conditions soient remplies pour chaque timeframe:
- Position acheteuse
- Que le prix soit au dessus de mes quatre moyennes dans “l’UT 15″ et que la condition du RSI soit remplie également dans cette UT
- Que le prix soit au dessus de mes quatre moyennes dans “l’UT 5″ et que la condition du RSI soit remplie également dans cette UT
- Que je prix soit au dessus de mes quatre moyennes dans “l’UT 1″ et que la condition du RSI soit remplie également dans cette UT et que le prix soit au dessus du pivot dans cette UT
- Idem pour le vente
- Que le prix soit sous mes quatre moyennes dans “l’UT 15″ et que la condition du RSI soit remplie également dans cette UT
- Que le prix soit sous mes quatre moyennes dans “l’UT 5″ et que la condition du RSI soit remplie également dans cette UT
- Que je prix soit sous mes quatre moyennes dans “l’UT 1″ et que la condition du RSI soit remplie également dans cette UT et que le prix soit sous le pivot dans cette UT
Comme la position du pivot est la même peut importe l’UT c’est pas un problème.
j’ai essayé plusieurs écritures du code mais je n’arrive pas à remplir les condition dans chaque UT je ne trouve pas la solution….j’ai également essayé ci-dessous qui me donne de meilleurs résultat mais sans remplir les conditions de chacune des UT .
12345678910111213141516171819202122232425262728293031//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute)BuyConditionA = (Close > MMA100 and Close > MMA300 and Close > MMA600 and Close > MMA1000)//declare the strategy on the 5 minutes timeframetimeframe(5 minute)BuyConditionB = (Close > MMA100 and Close > MMA300 and Close > MMA600 and Close > MMA1000)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute)BuyConditionC = (Close > Pivot and Close > MMA100 and Close > MMA300 and Close > MMA600 and Close > MMA1000 and (MyRSI < 38.2))if (buyconditionA and buyconditionB and buyconditionC) and not daysForbiddenEntry thenbuy 0.2 share at marketendif//Position Vendeuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute)SellConditionA = (Close < MMA100 and Close < MMA300 and Close < MMA600 and Close < MMA1000)//declare the strategy on the 5 minutes timeframetimeframe(5 minute)SellConditionB = (Close < MMA100 and Close < MMA300 and Close < MMA600 and Close < MMA1000)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute)SellConditionC = (Close < Pivot and Close < MMA100 and Close < MMA300 and Close < MMA600 and Close < MMA1000 and (MyRSI > 61.8))if (SellConditionA and SellConditionB and SellConditionC) and not daysForbiddenEntry thensellshort 0.2 share at marketendifou encore ceci:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute)Time15aa = Close > MMA100Time15ab = Close > MMA300Time15ac = Close > MMA600Time15ad = Close > MMA1000Time15ae = MyRSI < 38.2buyconditionAA = (Time15aa and Time15ab and Time15ac and Time15ad and Time15ae)//declare the strategy on the 5 minutes timeframetimeframe(5 minute)Time5aa = Close > MMA100Time5ab = Close > MMA300Time5ac = Close > MMA600Time5ad = Close > MMA1000Time5ae = MyRSI < 38.2buyconditionAB = (Time5aa and Time5ab and Time5ac and Time5ad and Time5ae)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)Time1aa = Close > PivotTime1ab = Close > MMA100Time1ac = Close > MMA300Time1ad = Close > MMA600Time1ae = Close > MMA1000Time1af = MyRSI < 38.2buyconditionAC = (Time1aa and Time1ab and Time1ac and Time1ad and Time1ae and Time1af)if (buyconditionAA and buyconditionAB and buyconditionAC) and not daysForbiddenEntry thenbuy 0.2 share at marketendif//Position Vendeuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute)Time15va = Close < MMA100Time15vb = Close < MMA300Time15vc = Close < MMA600Time15vd = Close < MMA1000Time15ve = MyRSI > 61.8sellconditionVA = (Time15va and Time15vb and Time15vc and Time15vd and Time15ve)//declare the strategy on the 5 minutes timeframetimeframe(5 minute)Time5va = Close < MMA100Time5vb = Close < MMA300Time5vc = Close < MMA600Time5vd = Close < MMA1000Time5ve = MyRSI > 61.8sellconditionVB = (Time5va and Time5vb and Time5vc and Time5vd and Time5ve)//declare the strategy on the 1 minutes Defaulttimeframe(1 minute, Default)Time1va = Close < PivotTime1vb = Close < MMA100Time1vc = Close < MMA300Time1vd = Close < MMA600Time1ve = Close < MMA1000Time1vf = MyRSI > 61.8sellconditionVC = (Time1va and Time1vb and Time1vc and Time1vd and Time1ve and Time1vf)if (sellconditionVA and sellconditionVB and sellconditionVC) and not daysForbiddenEntry thensellshort 0.2 share at marketendifet dans chaque cas, pas moyen d’obtenir que les conditions soient remplies pour chaque UT…
Un peu d’aide sur la bonne syntaxe serait la bienvenue. MERCI DE TON AIDE
Slts
05/22/2020 at 10:44 AM #132789Pour chaque indicateur, il suffit de créer une variable (avec un nom différent) dans chaque UT, puisque ce sont des valeurs différentes calculés avec des données différentes.
On est bien d’accord, une MM 100 périodes en 1-minute, ce n’est pas une MM 100 périodes en 5-minutes et c’est pourtant ce que tu as fait en ne la calculant qu’une seule fois dans un seul TF (le plus petit, donc le M1 en l’occurrence).
05/22/2020 at 10:50 AM #132792as tu un exemple, que je comprenne bien?
05/22/2020 at 1:45 PM #13281712345678910111213141516171819202122232425262728293031323334353637383940414243444546474849//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute)BuyConditionA = (Close > MMA100) and (Close > MMA300) and (Close > MMA600)if BuyConditionA thenxA = BuyConditionAendif//declare the strategy on the 5 minutes timeframetimeframe(5 minute)BuyConditionB = (Close > MMA100) and (Close > MMA300) and (Close > MMA600)if BuyConditionB thenyA = BuyConditionBendif//declare the strategy on the 1 minutes Defaulttimeframe(1 minute)BuyConditionC = (Close > MMA100) and (Close > MMA300) and (Close > MMA600)if BuyConditionC thenzA = BuyConditionCif (xA and yA and zA) and (Close > Pivot) and (MyRSI < 38.2) and not daysForbiddenEntry thenbuy n share at marketendifendif//Position Vendeuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute)SellConditionA = (Close < MMA100) and (Close < MMA300) and (Close < MMA600)if SellConditionA ThenxV = SellConditionAEndif//declare the strategy on the 5 minutes timeframetimeframe(5 minute)SellConditionB = (Close < MMA100) and (Close < MMA300) and (Close < MMA600)if SellConditionB ThenyV = SellConditionBEndif//declare the strategy on the 1 minutes Defaulttimeframe(1 minute)SellConditionC = (Close < Pivot) and (Close < MMA100) and (Close < MMA300) and (Close < MMA600)and (MyRSI > 61.8)if SellConditionC ThenzV = SellConditionCif (xV and yV and zV) and not daysForbiddenEntry thensellshort n share at marketendifendifComme ceci?
05/22/2020 at 2:06 PM #132822Non pas du tout. A aucun moment tu indiques à la plateforme de calculer une MM100 dans chaque UT.
Exemple pour le TF 15-minutes, tu dois faire la même chose dans chaque UT :
12345678910111213141516171819202122232425262728// Définition des paramètres du codeDEFPARAM CumulateOrders = False // Cumul des positions désactivé//DEFPARAM FLATBEFORE = 091500//DEFPARAM FLATAFTER = 154500daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0Pivot = (DHigh(1) + DLow(1) + DClose(1) + DOpen(0))/4//Position acheteuse//declare the strategy on the 15 minutes timeframetimeframe(15 minute, updateonclose)//Indicateurs de tendanceMMA10015 = (ExponentialAverage[100](close))MMA30015 = (ExponentialAverage[300](close))MMA60015 = (ExponentialAverage[600](close))MMA100015 = (ExponentialAverage[1000](close))//Indicateurs de prise de positionsInd15 = RSI[7](Close)x15 = 0.1 * (Ind15 - 50)y15 = (EXP (2 * x15) - 1) / (EXP (2 * x15) + 1)z15 = 50 * (y15 + 1)Time15aa = Close > MMA10015Time15ab = Close > MMA30015Time15ac = Close > MMA60015Time15ad = Close > MMA100015Time15ae = z15 < 38.2buyconditionAA = (Time15aa and Time15ab and Time15ac and Time15ad and Time15ae)05/22/2020 at 2:13 PM #132824Ok super Merci,
je vais faire une course et je me remet au code après ….je te reviens dans la soirée. 🙂
- Position acheteuse
-
AuthorPosts
Find exclusive trading pro-tools on