Comparaison des volumes à une heure donnée
Forums › ProRealTime forum Français › Support ProBuilder › Comparaison des volumes à une heure donnée
- This topic has 7 replies, 3 voices, and was last updated 5 months ago by JC_Bywan.
-
-
01/30/2022 at 6:13 PM #18708001/31/2022 at 9:47 AM #187109
Bonjour,
si posté dans probuilder, alors voici en version indicateur, sans passer par mot-clé “timeframe” afin de garder éventuellement la flexibilité de changer les horaires de fin et de début si besoin de regarder sur autre durée que 15 minutes. Toutefois le texte laisse penser que tu voudras peut-être en faire en screener, auquel cas tu pourras screener sur la variable “resultat”, et éventuellement trier par variable “vol0”:
12345678910111213141516171819202122232425heuredebut=090000heurefin=091500resultat=0if opentime=heuredebut thenvol5=vol4vol4=vol3vol3=vol2vol2=vol1vol1=vol0vol0=volumeendifif opentime>heuredebut and opentime<heurefin thenvol0=vol0[1]+volumeendifif vol5<>0 thenmoyennevol=(vol1+vol2+vol3+vol4+vol5)/5if vol0>moyennevol thenresultat=1endifendifreturn resultat01/31/2022 at 11:35 PM #187181Merci pour votre aide, ça correspond à ce que je cherchais.
Par contre quand je créé un screener (création simplifiée), avec des conditions sur plusieurs et différentes unités de temps, j’ai des titres qui ne sortent pas et d’autres qui ne devraient pas sortir.
Comme dans l’exemple ci-dessous l’indicateur “volume 15 minutes” est à 0 alors que j’ai demandé que les titres dont l’indicateur est à 1.
Pouvez vous éclairer mes lanternes sur la bonne démarche à suivre.
Merci d’avance
02/01/2022 at 7:21 AM #18719702/01/2022 at 12:18 PM #1872241234567891011121314151617181920212223242526272829303132333435363738394041424344454647// Le code qui suit fait référence à l'unité de temps:15 minutesTIMEFRAME(15 minutes)indicator1 = CALL "volume 15 minutes"c1 = (indicator1 = 1)// Le code qui suit fait référence à l'unité de temps:15 minutesTIMEFRAME(15 minutes)indicator2 = CALL "Cours vs borne haut range"c2 = (indicator2 <= 0.5)// Le code qui suit fait référence à l'unité de temps:dailyTIMEFRAME(daily)indicator3 = Average[20](close)c3 = (close > indicator3)// Le code qui suit fait référence à l'unité de temps:dailyTIMEFRAME(daily)indicator4 = Average[50](close)c4 = (close > indicator4)// Le code qui suit fait référence à l'unité de temps:dailyTIMEFRAME(daily)indicator5 = Average[20](close)indicator6 = indicator5c5 = (indicator5 > indicator6[5])// Le code qui suit fait référence à l'unité de temps:dailyTIMEFRAME(daily)indicator7 = Average[50](close)indicator8 = indicator7c6 = (indicator7 > indicator8[5])// Le code qui suit fait référence à l'unité de temps:1 hourTIMEFRAME(1 hour)indicator9 = RSI[21](close)c7 = (indicator9 > 45)// Le code qui suit fait référence à l'unité de temps:dailyTIMEFRAME(daily)indicator10 = Average[50](Volume)c8 = (indicator10 > 500000)// Le code qui suit fait référence à l'unité de temps:dailyTIMEFRAME(daily)criteria = CALL "ratio volume"SCREENER[c1 AND c2 AND c3 AND c4 AND c5 AND c6 AND c7 AND c8] (criteria AS "ratio volume")Ci-joint mon screener
02/01/2022 at 10:47 PM #187286Du coup, si ici c’est le même ratiovol que dans https://www.prorealcode.com/topic/indicateur-open-range-15-min/#post-186713
on va d’abord voir ce qu’il se passe dans l’autre
05/31/2024 at 10:38 AM #233329Bonjour à tous,
Je cherche à réaliser un indicateur qui se calcule tout au long de la journée, toutes les 5 minutes, et compare le volume intraday actuel cumulé du jour à sa moyenne des 20 jours précédents jusqu’au même moment de la journée.
TIMEFRAME(5 minutes)
// horaires actions américaines
heuredebut=153000
heurefin=220000Il me semble que le code précédemment exposé dans ce message compare :
le volume intraday actuel du jour cumulé à un instant t
à
la moyenne des volumes cumulés (sur x périodes) mais jusqu’à l’heure de fin, donc jusqu’à 22 h dans mon cas.Je cherche à calculer toutes les 5 minutes la moyenne des volumes intraday cumulés des 20 derniers jours mais cette moyenne doit se calculer sur les volumes intraday des jours précédents à la même heure que l’heure actuelle.
L’algorithme théorique serait :
EVERY 5 MINUTES DO
‘ Récupération du volume intraday actuel
volume_actuel = VOLUME_INTRADAY()‘ Récupération de l’heure actuelle
heure_actuelle = HOUR(TIME())‘ Calcul de la moyenne des volumes intraday des 20 jours précédents à la même heure
volume_moyen_20j = 0
heure_moyenne = heure_actuelle
FOR i = 1 TO 20
volume_moyen_20j = volume_moyen_20j + VOLUME_INTRADAY_HISTORIQUE(i, heure_moyenne)
NEXT i
volume_moyen_20j = volume_moyen_20j / 20
LOOPAuriez-vous une solution pour traduire cet algorithme dans le langage de programmation du Probuilder ?
06/07/2024 at 10:46 AM #233612Bonjour,
à tester, en UT5 uniquement, pour voir a minima si ça reste cohérent pour un actif sans bougie “vide” (car si peu liquide avec des bougies ut5 vides, on risque des décalages dans les tableaux et une moyenne20 faussée). Choisir une ligne return ou l’autre en mettant // devant celle qu’on ne veut pas, selon qu’on souhaite visualiser l’évolution du volume id cumulé vs sa moyenne à la même heure sur 20j, ou bien juste l’histogramme 0/1 si plus grand que la moyenne:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677heuredebut=153000heurefin=220000once maxrang=235500resultat=0rang=opentime// reset du tableau 2D 20xN bougies de 5mn, N dépendant des horaires d'ouverture/fermeture// en l'absence de tableau multi-dimensionnels en v11, tableau 2D émulé par 20 tableaux 1D de N élémentsif rang=heuredebut thenfor j=0 to maxrang/500i=500*j$vol20[i]=$vol19[i]$vol19[i]=$vol18[i]$vol18[i]=$vol17[i]$vol17[i]=$vol16[i]$vol16[i]=$vol15[i]$vol15[i]=$vol14[i]$vol14[i]=$vol13[i]$vol13[i]=$vol12[i]$vol12[i]=$vol11[i]$vol11[i]=$vol10[i]$vol10[i]=$vol9[i]$vol9[i]=$vol8[i]$vol8[i]=$vol7[i]$vol7[i]=$vol6[i]$vol6[i]=$vol5[i]$vol5[i]=$vol4[i]$vol4[i]=$vol3[i]$vol3[i]=$vol2[i]$vol2[i]=$vol1[i]$vol1[i]=$vol0[i]$vol0[i]=volumeinivolu0=volumenextelsif rang>heuredebut and rang<heurefin theninivolu0=inivolu0[1]+volumeif rang mod 500 = 0 then$vol0[rang]=inivolu0endifelsif rang<heuredebut or rang>heurefin then$vol0[rang]=0//$vol20[rang]=0$vol19[rang]=0$vol18[rang]=0$vol17[rang]=0$vol16[rang]=0$vol15[rang]=0$vol14[rang]=0$vol13[rang]=0$vol12[rang]=0$vol11[rang]=0$vol10[rang]=0$vol9[rang]=0$vol8[rang]=0$vol7[rang]=0$vol6[rang]=0$vol5[rang]=0$vol4[rang]=0$vol3[rang]=0$vol2[rang]=0$vol1[rang]=0endifif $vol20[rang]<>0 thenmoyennevol=($vol1[rang]+$vol2[rang]+$vol3[rang]+$vol4[rang]+$vol5[rang]+$vol6[rang]+$vol7[rang]+$vol8[rang]+$vol9[rang]+$vol10[rang]+$vol11[rang]+$vol12[rang]+$vol13[rang]+$vol14[rang]+$vol15[rang]+$vol16[rang]+$vol17[rang]+$vol18[rang]+$vol19[rang]+$vol20[rang])/20if $vol0[rang]>moyennevol thenresultat=1endifendif//return resultatreturn $vol0[rang], moyennevol1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on