Bonjour à tous,
J’ai écris 4 indicateurs qui m’indique la tendance en fonction de la MM20 de Bollinger et de l’unité de temps, de la manière suivante:
En M30: si 6 bougies (corps des bougies) au dessus de la MM20 = tendance haussière / si 6 bougies (corps des bougies) en dessous de la MM20 = tendance baissière
En M5: si 1 bougie (corps de la bougie) au dessus de la MM20 = tendance haussière / si 1 bougie (corps de la bougie) en dessous de la MM20 = tendance baissière
En H4: si 1 bougie (corps de la bougie) au dessus de la MM20 = tendance haussière / si 1 bougie (corps de la bougie) en dessous de la MM20 = tendance baissière
En journalier: si 1 bougie (corps de la bougie) au dessus de la MM20 = tendance haussière / si 1 bougie (corps de la bougie) en dessous de la MM20 = tendance baissière
J’ai représenté ces indicateurs sous forme d’histogrammes.
Je voudrais rassembler les 4 histogrammes sur mon graphique de 30 minutes.
Je n’arrive pas à comprendre comment gérer le multiframe pour obtenir mes 4 histogrammes en 30 minutes.
En lien le code pour l’histogramme de 30 minutes.
//*************************************************
// Signal_Divergences_M30
//
// Version 4
// 08/01/2021
//
//
//
// 1 PAS OK
// 2 compteurs Haussier/Baissier OK, CALL
// 3 // sur CALL PASOK, Nom ind
// 4 CALL en probacktest
//*************************************************
// --- settings
GraphType = 30 // 5=5mn, 30=30mn, 4=4h, 24=Jour
//Intervalle vertical
InterVBar = 1
//Coef Position de la ligne en bas
CoefInterVBar5mn = 3
CoefInterVBar30mn = 2
CoefInterVBar4h = 1
CoefInterVBarJour = 0
//Nombre de Bougies a tester
NbBougTest5mn = 1 // 1
NbBougTest30mn = 6 // 6-8
NbBougTest4h = 1 // 1
NbBougTestJour = 1 // 1
// --- Fin settings
//Init compteurs
ONCE TotalBougHaussier = 0
ONCE TotalBougBaissier = 0
//MM20
MM20 = Average[20](Close)
//Traitement du type de graph
IF GraphType = 5 THEN
NbBougTest = NbBougTest5mn
ENDIF
IF GraphType = 30 THEN
NbBougTest = NbBougTest30mn
ENDIF
IF GraphType = 4 THEN
NbBougTest = NbBougTest4h
ENDIF
IF GraphType = 24 THEN
NbBougTest = NbBougTestJour
ENDIF
//Bougie en cours: dessus ou dessous
IF (open> MM20 AND close > MM20) THEN
//Haussier
TotalBougHaussier = TotalBougHaussier + 1
TotalBougBaissier = 0
ELSE
IF (open < MM20 AND close < MM20) THEN
//Baissier
TotalBougHaussier = 0
TotalBougBaissier = TotalBougBaissier + 1
ELSE
//Ni Haussier Ni Baissier
TotalBougHaussier = 0
TotalBougBaissier = 0
ENDIF
ENDIF
//Couleur Init
//Ni Haussier Ni Baissier
Rouge = 0
Vert = 0
Bleu = 255
IF (TotalBougHaussier => NbBougTest) THEN
//Haussier
Rouge = 0
Vert = 255
Bleu = 0
ELSE
IF (TotalBougBaissier => NbBougTest) THEN
//Baissier
Rouge = 255
Vert = 0
Bleu = 0
ENDIF
ENDIF
//Traitement du type de graph
IF GraphType = 5 THEN
R5mn = Rouge
V5mn = Vert
B5mn = Bleu
drawtext("■",barindex,InterVBar*CoefInterVBar5mn,dialog,bold,20) coloured(R5mn,V5mn,B5mn) //5mn
ENDIF
IF GraphType = 30 THEN
R30mn = Rouge
V30mn = Vert
B30mn = Bleu
drawtext("■",barindex,InterVBar*CoefInterVBar30mn,dialog,bold,20) coloured(R30mn,V30mn,B30mn) //30mn
ENDIF
IF GraphType = 4 THEN
R4h = Rouge
V4h = Vert
B4h = Bleu
drawtext("■",barindex,InterVBar*CoefInterVBar4h,dialog,bold,20) coloured(R4h,V4h,B4h) //4h
ENDIF
IF GraphType = 24 THEN
RJour = Rouge
VJour = Vert
BJour = Bleu
drawtext("■",barindex,InterVBar*CoefInterVBarJour,dialog,bold,20) coloured(RJour,VJour,BJour) //Jour
ENDIF
RETURN TotalBougHaussier, TotalBougBaissier
Je pense que tu te compliques pas mal la tâche avec 4 codes différents. PRT v11 gère le multi timeframe, donc dans un seul et même code, tu vas pouvoir récupérer les infos et les afficher.
Cependant, il faut bien prendre note qu’en M30, on ne peut récupérer les infos de bougies M5, l’inverse est possible par contre.
Plus d’informations sur le MTF sous ProBuilder:
https://www.prorealcode.com/topic/indicateurs-mtf-pour-prorealtime-disponible/
Bonjour Nicolas,
J’ai suivi tes conseils, merci. L’indicateur fonctionne en M5 et M30 mais j’ai un problème en H4 et Daily. Les histogrammes H4 et Daily ne changent pas de couleur, et je ne comprends pas pourquoi car les tests sont identiques…
Je vois pas où est le problème…
Merci pour ton aide.
//*************************************************
// Signal_Tendences_M5
//
// Version 5
// 08/01/2021
//
//
//
// 1 PAS OK
// 2 compteurs Haussier/Baissier OK, CALL
// 3 // CALL, nom indi
// 4 CALL en probacktest PAS OK abandonne
// 5 Regroupement des Signaux
//*************************************************
// --- settings
GraphType = 5 // 5=5mn, 30=30mn, 4=4h, 24=Jour
//Intervalle vertical
InterVBar = 0.15
//Coef Position de la ligne en bas
CoefInterVBarM5 = 3
CoefInterVBarM30 = 2
CoefInterVBarH4 = 1
CoefInterVBarJ = 0
//Nombre de Bougies a tester
//NbBougTestM5 = 1 // 1
//NbBougTestM30 = 6 // 6-8
//NbBougTestH4 = 1 // 1
//NbBougTestJ = 1 // 1
// --- Fin settings
//************************************************************************************************************************************** M30
TIMEFRAME(30 minutes , updateonclose)
//MM20
MM20M30 = Average[20](Close)
//Valeurs M30
TotalBougHausM30 = TotalBougHausM30[1]
TotalBougBaisM30 = TotalBougBaisM30[1]
// 6-8
NbBougTestM30 = 6
//Bougie en cours: dessus ou dessous
IF (open > MM20M30 AND close > MM20M30) THEN
//Haussier
TotalBougHausM30 = TotalBougHausM30 + 1
TotalBougBaisM30 = 0
ELSE
TotalBougHausM30 = 0
IF (open < MM20M30 AND close < MM20M30) THEN
//Baissier
TotalBougBaisM30 = TotalBougBaisM30 + 1
ELSE
//Ni Haussier Ni Baissier
TotalBougBaisM30 = 0
ENDIF
ENDIF
//Couleur Init
//Ni Haussier Ni Baissier
RougeM30 = 0
VertM30 = 0
BleuM30 = 255
IF (TotalBougHausM30 => NbBougTestM30) THEN
//Haussier
RougeM30 = 0
VertM30 = 255
BleuM30 = 0
ELSE
IF (TotalBougBaisM30 => NbBougTestM30) THEN
//Baissier
RougeM30 = 255
VertM30 = 0
BleuM30 = 0
ENDIF
ENDIF
//************************************************************************************************************************************** M30
//************************************************************************************************************************************** H4
TIMEFRAME(4 hours, updateonclose)
//MM20
MM20H4 = Average[20](Close)
//Valeurs H4
TotalBougHausH4 = TotalBougHausH4[1]
TotalBougBaisH4 = TotalBougBaisH4[1]
// 1
NbBougTestH4 = 1
//Bougie en cours: dessus ou dessous
IF (open > MM20H4 AND close > MM20H4) THEN
//Haussier
TotalBougHausH4 = TotalBougHausH4 + 1
TotalBougBaisH4 = 0
ELSE
TotalBougHausH4 = 0
IF (open < MM20H4 AND close < MM20H4) THEN
//Baissier
TotalBougBaisH4 = TotalBougBaisH4 + 1
ELSE
//Ni Haussier Ni Baissier
TotalBougBaisH4 = 0
ENDIF
ENDIF
//Couleur Init
//Ni Haussier Ni Baissier
RougeH4 = 0
VertH4 = 0
BleuH4 = 255
IF (TotalBougHausH4 => NbBougTestH4) THEN
//Haussier
RougeH4 = 0
VertH4 = 255
BleuH4 = 0
ELSE
IF (TotalBougBaisH4 => NbBougTestH4) THEN
//Baissier
RougeH4 = 255
VertH4 = 0
BleuH4 = 0
ENDIF
ENDIF
//************************************************************************************************************************************** H4
//************************************************************************************************************************************** Jour
TIMEFRAME(1 day, updateonclose)
//MM20
MM20J = Average[20](Close)
//Valeurs Jour
TotalBougHausJ = TotalBougHausJ[1]
TotalBougBaisJ = TotalBougBaisJ[1]
//1
NbBougTestJ = 1
//Bougie en cours: dessus ou dessous
IF (open > MM20J AND close > MM20J) THEN
//Haussier
TotalBougHausJ = TotalBougHausJ + 1
TotalBougBaisJ = 0
ELSE
TotalBougHausJ = 0
IF (open < MM20J AND close < MM20J) THEN
//Baissier
TotalBougBaisJ = TotalBougBaisJ + 1
ELSE
//Ni Haussier Ni Baissier
TotalBougBaisJ = 0
ENDIF
ENDIF
//Couleur Init
//Ni Haussier Ni Baissier
RougeJ = 0
VertJ = 0
BleuJ = 255
IF (TotalBougHausJ => NbBougTestJ) THEN
//Haussier
RougeJ = 0
VertJ = 255
BleuJ = 0
ELSE
IF (TotalBougBaisJ => NbBougTestJ) THEN
//Baissier
RougeJ = 255
VertJ = 0
BleuJ = 0
ENDIF
ENDIF
//************************************************************************************************************************************** JOUR
//************************************************************************************************************************************** M5
TIMEFRAME(default)
//MM20
MM20M5 = Average[20](Close)
//Valeurs M5
TotalBougHausM5 = TotalBougHausM5[1]
TotalBougBaisM5 = TotalBougBaisM5[1]
//1
NbBougTestM5 = 1
//Bougie en cours: dessus ou dessous
IF (open > MM20M5 AND close > MM20M5) THEN
//Haussier
TotalBougHausM5 = TotalBougHausM5 + 1
TotalBougBaisM5 = 0
ELSE
TotalBougHausM5 = 0
IF (open < MM20M5 AND close < MM20M5) THEN
//Baissier
TotalBougBaisM5 = TotalBougBaisM5 + 1
ELSE
//Ni Haussier Ni Baissier
TotalBougBaisM5 = 0
ENDIF
ENDIF
//Couleur Init
//Ni Haussier Ni Baissier
RougeM5= 0
VertM5 = 0
BleuM5 = 255
IF (TotalBougHausM5 => NbBougTestM5) THEN
//Haussier
RougeM5 = 0
VertM5 = 255
BleuM5 = 0
ELSE
IF (TotalBougBaisM5 => NbBougTestM5) THEN
//Baissier
RougeM5 = 255
VertM5 = 0
BleuM5 = 0
ENDIF
ENDIF
//Trace Histo
drawtext("■",barindex,InterVBar*CoefInterVBarM5,dialog,bold,20) coloured(RougeM5,VertM5,BleuM5)
drawtext("■",barindex,InterVBar*CoefInterVBarM30,dialog,bold,20) coloured(RougeM30,VertM30,BleuM30)
drawtext("■",barindex,InterVBar*CoefInterVBarH4,dialog,bold,20) coloured(RougeH4,VertH4,BleuH4)
drawtext("■",barindex,InterVBar*CoefInterVBarJ,dialog,bold,20) coloured(RougeJ,VertJ,BleuJ)
//************************************************************************************************************************************** M5
RETURN
Il n’y a peut être pas suffisamment d’unités affichées pour récupérer les informations de ces timeframes ? Il faut essayer avec un max d’unités pour voir ..
Bonjour,
Merci pour ta réponse, effectivement il faut que j’affiche 6000 unités en 5 minutes pour avoir les données du journalier. Avant je n’affichais que 200 unités en 5 minutes, du coup ça me ralenti énormément la plateforme. Je comprends mieux la nécessité d’exécuter l’indicateur dans l’unité de temps la plus basse et d’utiliser des multiples, car en fait l’indicateur fait tous ses calculs sur l’unité de temps la plus basse.
Est-ce qu’il serait possible de récupérer les information (objet) du graphique M30, H4 et daily, qui sont affichés sur ma plateforme de façon permanente et simultanée ? Est-ce que Prosreener ne serait pas plus adapté?
Merci pour toutes tes contributions et ta réactivité.