Croisement période antérieur points pivots
Forums › ProRealTime forum Français › Support ProOrder › Croisement période antérieur points pivots
- This topic has 6 replies, 2 voices, and was last updated 5 years ago by JC_Bywan.
-
-
01/04/2020 at 3:26 PM #115880
Bonjour tout le monde!
Je viens de finir de réussir de bricoler un code pour me donner les pp j/w/m grâce à Nicolas et Roberto! Cependant, je me heurte désormais à un nouveau problème (sinon ce ne serait pas drôle…!), j’aimerai obtenir une condition qui me dise si le prix (close) à croisé le ppm durant les x dernières périodes. Cette condition me serait utile pour éviter de reprendre position si le cours recroise le ppm alors qu’il l’a déjà croisé il y à x temps/barres.
Auriez-vous une idée?
Merci énormément par avance pour votre aide 🙂
Pour info, voici le code de mon indicateur pour les pp j/w/m:
Indicateur pp123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//POINT PIVOT JOURNALIERIF dayofweek = 1 THENHighJ = DHigh(2)LowJ = DLow(2)SettlementJ = DClose(2)ENDIFIF dayofweek >=2 and dayofweek < 6 THENHighJ = DHigh(1)LowJ = DLow(1)SettlementJ = DClose(1)ENDIFPPJ = (HighJ + LowJ + SettlementJ) / 3R3J = HighJ + 2 * (PPJ - LowJ)R2J = PPJ + (HighJ - LowJ)R1J = (2 * PPJ) - LowJS1J = (2 * PPJ) - HighJS2J = PPJ - (HighJ - LowJ)S3J = LowJ - 2 * (HighJ - PPJ)//POINT PIVOT WEEKLYIf DayOfWeek<DayOfWeek[1] thenweeklyHigh = Highest[BarIndex - lastWeekBarIndex](High)[1]weeklyLow = Lowest[BarIndex - lastWeekBarIndex](Low)[1]lastWeekBarIndex = BarIndexweeklyPivot = (weeklyHigh + weeklyLow + Close[1]) / 3weeklyR1 = 2*weeklyPivot - weeklyLowweeklyS1 = 2*weeklyPivot - weeklyHighweeklyR2 = weeklyPivot + (weeklyHigh - weeklyLow)weeklyS2 = weeklyPivot - (weeklyHigh - weeklyLow)weeklyR3 = weeklyR1 + (weeklyHigh - weeklyLow)weeklyS3 = weeklyS1 - (weeklyHigh - weeklyLow)Endif//POINT PIVOT MENSUELIf Month<>Month[1] thenmonthlyHigh = Highest[BarIndex - lastMonthBarIndex](High)[1]monthlyLow = Lowest[BarIndex - lastMonthBarIndex](Low)[1]lastMonthBarIndex = BarIndexmonthlyPivot = (monthlyHigh + monthlyLow + Close[1]) / 3monthlyR1 = 2*monthlyPivot - monthlyLowmonthlyS1 = 2*monthlyPivot - monthlyHighmonthlyR2 = monthlyPivot + (monthlyHigh - monthlyLow)monthlyS2 = monthlyPivot - (monthlyHigh - monthlyLow)monthlyR3 = monthlyR1 + (monthlyHigh - monthlyLow)monthlyS3 = monthlyS1 - (monthlyHigh - monthlyLow)EndifRETURN PPJ COLOURED (0,52,0) style(line) as "Pivot Day", R3J COLOURED (0,128,0) style(line) as "R3J", R2J COLOURED (0,128,0) style(line) as "R2J", R1J COLOURED (0,128,0) style(line) as "R1J", S1J COLOURED (0,128,0) style(line) as "S1J", S2J COLOURED (0,128,0) style(line) as "S2J", S3J COLOURED (0,128,0) style(line) as "S3J", weeklyPivot COLOURED (0,52,0) style(line) as "weeklyPivot", weeklyR1 COLOURED (0,0,128) style(line) as "weeklyR1", weeklyS1 COLOURED (0,0,128) style(line) as "weeklyS1", weeklyR2 COLOURED (0,0,128) style(line) as "weeklyR2", weeklyS2 COLOURED (0,0,128) style(line) as "weeklyS2", weeklyR3 COLOURED (0,0,128) style(line) as "weeklyR3", weeklyS3 COLOURED (0,0,128) style(line) as "weeklyS3", monthlyPivot COLOURED (0,52,0) style(line) as "monthlyPivot", monthlyR1 COLOURED (128,0,0) style(line) as "monthlyR1", monthlyS1 COLOURED (128,0,0) style(line) as "monthlyS1", monthlyR2 COLOURED (128,0,0) style(line) as "monthlyR2", monthlyS2 COLOURED (128,0,0) style(line) as "monthlyS2", monthlyR3 COLOURED (128,0,0) style(line) as "monthlyR3", monthlyS3 COLOURED (128,0,0) style(line) as "monthlyS3"Et voici le code que j’ai bricolé sur proorder pour le moment (je sais que ce n’est pas clean mais là je fais une pause, je ne parviens pas à trouver la condition qui puisse me dire si le cours à croisé le ppm durant les x dernières barres ou temps…:
pp proorder12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273//POINT PIVOT JOURNALIERdefparam cumulateorders=false//ONCE NbBarLimit = 50plage1 = time>008000 and time<120000plage2 = time>=130000 and time<180000////IF dayofweek = 1 THEN//HighJ = DHigh(2)//LowJ = DLow(2)//SettlementJ = DClose(2)//ENDIF////IF dayofweek >=2 and dayofweek < 6 THEN//HighJ = DHigh(1)//LowJ = DLow(1)//SettlementJ = DClose(1)//ENDIF////PPJ = (HighJ + LowJ + SettlementJ) / 3//R3J = HighJ + 2 * (PPJ - LowJ)//R2J = PPJ + (HighJ - LowJ)//R1J = (2 * PPJ) - LowJ//S1J = (2 * PPJ) - HighJ//S2J = PPJ - (HighJ - LowJ)//S3J = LowJ - 2 * (HighJ - PPJ)//POINT PIVOT WEEKLY//If DayOfWeek<DayOfWeek[1] then//weeklyHigh = Highest[BarIndex - lastWeekBarIndex](High)[1]//weeklyLow = Lowest[BarIndex - lastWeekBarIndex](Low)[1]//lastWeekBarIndex = BarIndex//weeklyPivot = (weeklyHigh + weeklyLow + Close[1]) / 3//weeklyR1 = 2*weeklyPivot - weeklyLow//weeklyS1 = 2*weeklyPivot - weeklyHigh//weeklyR2 = weeklyPivot + (weeklyHigh - weeklyLow)//weeklyS2 = weeklyPivot - (weeklyHigh - weeklyLow)//weeklyR3 = weeklyR1 + (weeklyHigh - weeklyLow)//weeklyS3 = weeklyS1 - (weeklyHigh - weeklyLow)//Endif////POINT PIVOT MENSUELIf Month<>Month[1] thenmonthlyHigh = Highest[BarIndex - lastMonthBarIndex](High)[1]monthlyLow = Lowest[BarIndex - lastMonthBarIndex](Low)[1]lastMonthBarIndex = BarIndexmonthlyPivot = (monthlyHigh + monthlyLow + Close[1]) / 3//monthlyR1 = 2*monthlyPivot - monthlyLow//monthlyS1 = 2*monthlyPivot - monthlyHigh//monthlyR2 = monthlyPivot + (monthlyHigh - monthlyLow)//monthlyS2 = monthlyPivot - (monthlyHigh - monthlyLow)//monthlyR3 = monthlyR1 + (monthlyHigh - monthlyLow)//monthlyS3 = monthlyS1 - (monthlyHigh - monthlyLow)EndifIF close crosses under monthlyPivot thent=1ENDIFx=0for i=0 to 10 doIf close crosses under monthlyPivot thenx=1ENDIFNEXTIF NOT OnMarket AND t=1 AND x=1 AND plage1 OR plage2 THENBUY 1 SHARES AT marketSET TARGET PROFIT 5ENDIF01/04/2020 at 3:37 PM #11588101/04/2020 at 4:12 PM #115882En supposant que “ppm” c’est ce que tu as appelé dans ton code monthlypivot, tu peux assigner une variable à ta condition, par exemple c1 pour un croisement à la hausse (puis refaire avec c2 si on veut voir pour le croisement à la baisse):
1c1 = close crosses over monthlypivotPuis grâce au mot clé summation, vérifier si c1 a eu lieu au moins une fois dans N périodes pour définir ton x à 1 ou 0, celle en cours incluse (donc jusqu’à N-1 en arrière), sans la moindre boucle for next qu’il vaut mieux éviter quand c’est possible pour consommer moins de puissance de calcul:
12345if summation[N](c1)>=1 thenx=1elsex=0endifAide pour l’usage de summation dans ce lien: https://www.prorealcode.com/documentation/summation/
01/04/2020 at 4:43 PM #11588301/04/2020 at 5:26 PM #115884Je vins de l’implémeter dans mon code. Cependant, il n’agit pas comme il le faudrait. Si je l’applique il prend également en compte le moment n ou le cours cross le ppm. Empêchant toute prise de position…
Aurais-tu une idée?
pp summation12345678910111213141516171819202122//POINT PIVOT MENSUELdefparam cumulateorders=falseIf Month<>Month[1] thenmonthlyHigh = Highest[BarIndex - lastMonthBarIndex](High)[1]monthlyLow = Lowest[BarIndex - lastMonthBarIndex](Low)[1]lastMonthBarIndex = BarIndexmonthlyPivot = (monthlyHigh + monthlyLow + Close[1]) / 3Endifc1 = close crosses under monthlypivot or close crosses over monthlypivotif summation[10](c1)>=1 thenx=1elsex=0endifIF close crosses under monthlyPivot AND x=0 thenbuy 1 SHARES AT marketSET TARGET pPROFIT 10SET STOP pLOSS 20ENDIF01/04/2020 at 5:41 PM #11588601/04/2020 at 8:08 PM #115895Tu pourrais stocker la somme sur N de l’événement dans une autre variable, par exemple sommec1, et poser la condition sur l’occurence précédente de cette variable, ça devrait vérifier une plage entre la bougie précédente et la Nème bougie précédente sans la bougie en cours, par exemple:
123456789c1 = close crosses over monthlypivotsommec1 = summation[N](c1)if sommec1[1]>=1 thenx=1elsex=0endif -
AuthorPosts
Find exclusive trading pro-tools on