ProRealCode - Trading & Coding with ProRealTime™
Bonjour, Bon apparemment mon ancien topic n’est pas passé je sais pas pourquoi, de ce fait je réitère ma demande.
j’ai trouvé un indicateur mt4 sur le market profile et je souhaiterai savoir s’il était possible de le reconvertir pour prorealtime.
Le Market Profile est une représentation graphique qui regroupe les informations de prix et de temps sous forme de distribution. Le Market Profile permet de déterminer le temps écoulé, le nombre de ticks et les volumes échangés à des prix spécifiques ou sur un intervalle de prix d’une période donnée. Le Market Profile permet également d’identifier les prix acceptés ou rejetés par le marché, et d’identifier les niveaux de cours résistance ou support pour anticiper les mouvements de prix futurs.
Le Market Profile n’est pas un indicateur technique mais une image qui montre où se situe le cours le plus négocié et quels sont les volumes à chaque niveau de prix. Il détermine le moment où le marché va se déplacer de l’équilibre vers le déséquilibre.
Je joins le fichier ainsi qu’une photo pour cerner l’ensemble.
ps : est il possible aussi de convertir des fichiers de metatrader5 (mq5)?
et voici le code également
// + ----------------------------------------------- ------------------- +
// | Day Trader Market Dans Profile.mq4 |
// | Copyright © 2010, MetaQuotes Software Corp. |
// | http://www.metaquotes.net |
// + ----------------------------------------------- ------------------- + copyright
# propriété "Copyright © 2010, Eng \ Bassam El-Faramawi."
#property link "bmaamoon@yahoo.com"
#property indicator_chart_window
// + ---------------------------------- -------------------------------- +
// | Fonction d'initialisation d'indicateur personnalisé |
// + ----------------------------------------------- ------------------- +
extern int Étape = 4 ;
extern int NumberOfDays = 10 ;
extern int SessionHalfHours = 48 ;
extern bool ViewTPOs = true ; bool
externe TPOs_as_Letters = true ; extern int TPOs_Shift = 0 ; extern int Letter_Size = 6 ; couleur externe TPO_Color = DarkGray; bool externe
ViewOpenFlag = true ; couleur
externe OpenColor = LightSteelBlue; extern int OpenFlagShift = 0 ; bool externe View_Pointer = true ; couleur externe PointerColor = Magenta; extern int PointerShift = 2 ; bool externe ViewrangeLine = false ; couleur externe RangeLineColor = LightSteelBlue; extern int rangeLine_Shift = 1 ; extern bool ViewInitialBalanceLine = Vrai
; couleur
externe IBLineColor = SteelBlue; extern int IBLineWidth = 2 ; extern int IBLine_Shift = 1 ; extern bool ViewValueArea = true ; double externe Persent_Of_TPO_ValueArea = 0.7 ; extern int ValueArea_Shift = 1 ; couleur externe TopLine_Color = Rouge; extern int TopLine_Width = 1 ; extern int TopLine_Start = 1 ; externe
int TopLine_End = 1 ; couleur
externe BottomLine_Color = Rouge; extern int BottomLine_Width = 1 ; extern int BottomLine_Start = 1 ; extern int BottomLine_End = 1 ; bool externe ViewPocLine = true ; extern int PocLine_shift = 1 ; couleur externe PocColor = Bleu; extern int PocLine_Start = 1 ; extern int PocLine_Width = 1
;
extern int PocLine_End = 1 ;
extern bool ViewInformationText = false ;
extern int InformationTextSize = 7 ; couleur
externe InformationTextColor = DarkTurquoise; extern int InformationTextShift = 12 ; chaîne Texte [ 50 ]; int init () { DeleteAllObjects (NumberOfDays); // ---- indicateurs Texte [ 1 ] = "A" ; Texte [ 2 ] = "B" ; Texte[
3 ] = "C" ; Texte [ 4 ] = "D" ; Texte [ 5 ] = "E" ;
Texte [ 6 ] = "F" ; Texte [ 7 ] = "G" ; Texte [ 8 ] = "H" ; Texte [ 9 ] = "I" ; Texte [ 10 ] = "J" ;
Texte [ 11 ] = "K" ; Texte [ 12 ] = "L" ; Texte [ 13 ] = "M" ;; Texte [ 15 ] = "O" ;
Texte [ 16 ] = "P" ; Texte [ 17 ] = "Q" ; Texte [ 18 ] = "R" ; Texte [ 19 ] = "S" ; Texte [ 20 ] = "T" ;
Texte [ 21 ] = "U" ; Texte [ 22 ] = "V" ; Texte [ 23 ] = "W" ; Texte [ 24 ] = "X" ; Texte [ 25 ] = "a" ;
] = "b" ; Texte [ 27 ] = "c" ; Texte [ 28 ] = "d" ; Texte [ 29 ] = "e" ; Texte [ 30 ] = "f" ;
Texte [ 31 ] = "g" ; Texte [ 32 ] = "h" ; Texte [ 33 ] = "i" ; Texte [ 34 ] = "j" ; Texte [ 35 ] = "k" ;
Texte [ 36 ] = "l" ; Texte [ 37 ] = "m" ; Texte[38 ] = "n" ; Texte [ 39 ] = "o" ; Texte [ 40 ] = "p" ;
Texte [ 41 ] = "q" ; Texte [ 42 ] = "r" ; Texte [ 43 ] = "s" ; Texte [ 44 ] = "t" ; Texte [ 45 ] = "u" ;
Texte [ 46 ] = "v" ; Texte [ 47 ] = "w" ; Texte [ 48 ] = "x" ;
// ----
Createobjects ();
Commentaire( "" );
// ----
return ( 0 );
}
// + ---------------------------------------------- -------------------- +
// | Fonction de désinitialisation d'indicateur personnalisé |
// + ----------------------------------------------- ------------------- +
int deinit ()
{
// ----
DeleteAllObjects (NumberOfDays);
Commentaire ( "" );
// ----
return ( 0 );
}
// + ---------------------------------------------- -------------------- +
// | Fonction d'itération d'indicateur personnalisé |
// + ----------------------------------------------- ------------------- +
int start ()
{
Commentaires ( "" , "\ n" , "Eng.Bassam Market Profile V1.0" , "\ n" , "" , "\ n" , "Par: Eng \ Bassam El-Faramawi" , "\ n" , "" , "\ n" , "bmaamoon@yahoo.com" );
int counted_bars = IndicatorCounted ();
int m, H, t, n, i, Ymax, Ymin;
double h, TickVolume;
// ----
t = 48 / SessionHalfHours;
if ( MathMod ( 48 , SessionHalfHours)> 0 ) t ++;
if ( MathMod (SessionHalfHours, 2 )> 0 ) m = 1 ;
// ----
t0 = StrToTime ( TimeYear (dt) + "." + TimeMonth (dt) + "." + TimeDay (dt) + "" + "00" + ":" + "00" );
Ymax = iBarShift ( NULL ,30 , t0);
TickVolume = iVolume ( NULL , 1440 , 0 );
pour (n = 1 ; n <= t; n ++)
{
h = (( HeureHeure (dt) * 2 ) + m) / SessionHalfHours;
si (h <n- 1 )
continue ;
Ymin = Ymax-SessionHalfHours + 1 ;
drawobjects (Ymax, Ymin, TickVolume);
Ymax = Ymax-SessionHalfHours;
}
// ----
return ( 0 );
}
// + ---------------------- // // ------------------ | \\ ---------------------- +
// + --------------------- /// | | \\\ --------------------- +
// + --------------------- \ ** | Fonctions personnalisées | ** / --------------------- +
// + ------------------- --- \\ | | // ---------------------- +
// + --------------------- - \ | ------------------ | / ----------------------- +
void Createobjects ()
{
int m, H, t, n, i, y0, Ymax, Ymin;
double h, TickVolume;
t = 48 / SessionHalfHours;
if ( MathMod ( 48 , SessionHalfHours)> 0 ) t ++;
if ( MathMod (SessionHalfHours, 2 )> 0 ) m =1 ;
datetime dt = TimeCurrent (), t0;
t0 = StrToTime ( TimeYear (dt) + "." + TimeMonth (dt) + "." + TimeDay (dt) + "" + "00" + ":" + "00" );
y0 = iBarShift ( NULL , 0 , t0);
// ----
pour (i = 1 ; i <NumberOfDays; i ++)
{
dt = iTime ( NULL , 0 , y0 + 1 );
t0 =StrToTime ( TimeYear (dt) + "." + TimeMonth (dt) + "." + TimeDay (dt) + "" + "00" + ":" + "00" );
TickVolume = iVolume ( NULL , 1440 , i);
Ymax = iBarShift ( NULL , 30 , t0);
pour (n = 1 ; n <= t; n ++)
{
Ymin = Ymax-SessionHalfHours + 1 ;
if (n == t)
Ymin = iBarShift ( NULL, 30 , StrToTime ( TimeYear (dt) + "." + TimeMonth (dt) + "." + TimeDay (dt) + "" + "23" + ":" + "30" ));
drawobjects (Ymax, Ymin, TickVolume);
Ymax = Ymax-SessionHalfHours;
}
y0 = iBarShift ( NULL , 0 , t0);
}
}
// + --------------------------------------------- --------------------- +
void drawobjects ( int Ymax, int Ymin, doubleTickVolume)
{
int , s, fac, y, Yt, espace, POC, AllTicks, ValueArea, i, imax, imin, ValueRange, TPO [ 1000 ];
double x, Mid, PocTick;
if ( Chiffres == 2 || Chiffres == 4 ) fac = 1 ;
if ( Chiffres == 3 || Chiffres == 5 ) fac = 10 ;
double Max = Haut [ iHighest ( NULL , 30 , MODE_HIGH , (Ymax-Ymin + 1), Ymin)],
Min = Faible [ iLowest ( NULL , 30 , MODE_LOW , (Ymax-Ymin + 1 ), Ymin)],
IBmax = Élevé [ iHighest ( NULL , 30 , MODE_HIGH , 2 , Ymax- 1 )],
IBmin = Faible [ iLowest ( NULL , 30 , MODE_LOW , 2 , Ymax- 1 )],
STEP = Étape * fac * Point ;
Mid = (Max-Min) *0,5 + Min;
Yt = iBarShift ( NULL , 0 , iTime ( NULL , 30 , Ymax), faux );
u = 0 ;
pour (y = Ymax; y> = Ymin; y--)
{
pour (s = 1 ; s <= (Max-Min) / STEP; s ++)
{
ObjectDelete ( TimeToStr ( iTime ( NULL , 0 , y + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES ) + "" + DoubleToStr (s,0 ));
}
}
pour (x = Max; x> = Min; x = x-STEP)
{
Espace = 0 ;
i = (Max-x) / STEP;
u ++;
pour (y = Ymax; y> = Ymin; y--)
{
double opentick = iOuvre ( symbole (), 30 , Ymax),
maximum = iHigh ( symbole (), 30 , y),
minimum = iLow ( symbole ()) , 30 , y);
if (Maximum <x || Minimum> x)
continue ;
Espace ++;
// -------------
chaîne TPOName = TimeToStr ( iTime ( NULL , 0 , Ymax-Espace + 1 + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES ) + "" + DoubleToStr (u, 0 );
si (ViewTPOs)
{
si (TPOs_as_Letters == true )
{
ObjectDelete (TPOName);
ObjectCreate (TPOName, OBJ_TEXT , 0 , iTime ( NULL , 0, Yt-Space + 1 + (TPOs_Shift * SessionHalfHours)), x);
ObjectSetText (TPOName, Texte [Ymax-y + 1 ], Letter_Size, "Arial" , TPO_Color);
}
else
{
ObjectDelete (TPOName);
ObjectCreate (TPOName, OBJ_ARROW , 0 , iTime ( NULL , 0 , Yt-Espace + 1 + (TPOs_Shift * SessionHalfHours)), x);
ObjectSet (TPOName, OBJPROP_ARROWCODE , 167 );
ObjectSet (TPOName, OBJPROP_COLOR , TPO_Color);
ObjectSet(TPOName, OBJPROP_BACK , True );
}
}
}
// --------------
chaîne ouverte = "ouvert" + TimeToStr ( iTime ( NULL , 0 , Ymax + OpenFlagShift + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES );
if (ViewOpenFlag)
{
ObjectDelete (ouvert);
ObjectCreate (open, OBJ_ARROW , 0 , iTime ( NULL , 0, Yt + OpenFlagShift + (TPOs_Shift * SessionHalfHours)), opentick);
ObjectSet (open, OBJPROP_ARROWCODE , 161 );
ObjectSet (ouvert, OBJPROP_COLOR , OpenColor);
ObjectSet (open, OBJPROP_BACK , True );
}
// --------------
double POCShift = MathAbs (PocTick-Mid),
SpaceShift = MathAbs (x-Mid);
if (Espace> POC)
{
POC = Espace;
PocTick = x;
}
if (Space == POC && SpaceShift <POCShift)
PocTick = x;
// --------------
chaîne Poc = "POC" + TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES );
int Poc_start = Yt + PocLine_Start- (PocLine_shift * SessionHalfHours) + (TPOs_Shift * SessionHalfHours),
Poc_end = Yt-POC + PocLine_End- (PocLine_shift * SessionHalfHours) + (TPOs_Shift * SessionHalfHours);
if (ViewPocLine)
{
ObjectDelete (Poc);
ObjectCreate (Poc, OBJ_TREND , 0 , iTime ( NULL ,0 , Poc_start), PocTick, iTime ( NULL , 0 , Poc_end), PocTick);
ObjectSet (Poc, OBJPROP_COLOR , PocColor);
ObjectSet (Poc, OBJPROP_WIDTH , PocLine_Width);
ObjectSet (Poc, OBJPROP_RAY , false );
ObjectSet (Poc, OBJPROP_BACK , True );
}
// --------------
AllTicks = AllTicks + Space;
TPO [i] = espace;
}
ValueArea = AllTicks * Persent_Of_TPO_ValueArea;
imax = (Max-PocTick) / STEP;
imin = imax;
ValueRange = TPOs [imax];
while (ValueRange <ValueArea)
{
if (TPO [imax- 1 ] == TPO [imin + 1 ])
{
ValueRange = ValueRange + ( 2 * TPO [imax- 1 ]);
imax--;
imin ++;
}
if (TPO [imax- 1 ]> TPO [imin + 1 ])
{
ValueRange = ValueRange + TPO [imax- 1 ];
imax--;
}
if (TPO [imax- 1 ] <TPO [imin + 1 ])
{
ValueRange = ValueRange + TPO [imin + 1 ];
imin ++;
}
}
chaîne Range = "Plage" + TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES ),
ValueAreaRange = "ValueAreaRange" + TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours) ), TIME_DATE | TIME_MINUTES ),
TVolume = "TVolume" + TimeToStr ( iTime ( NULL, 0 , Ymax + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES ),
ValueTop = "ValueTop" + TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES ),
ValueBottom = "ValueBottom" + TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours)) ), TIME_DATE | TIME_MINUTES ),
RangeLine = "RangeLine" +TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES ),
IBLine = "IBLine" + TimeToStr ( iTime ( NULL , 0 , Ymax + (TPOs_Shift * SessionHalfHours)), TIME_DATE | TIME_MINUTES );
int Yvt_start = Yt + TopLine_Start- (ValueArea_Shift * SessionHalfHours) + (TPOs_Shift * SessionHalfHours),
Yvt_end = Yt-TPOs [imax] + TopLine_End- (ValueArea_Shift * SessionHalfHours) + (TPOs_Shift * SessionHalfHours),
Yvb_start = Yt + BottomLine_Start- (ValueArea_Shift * SessionHalfHours) + (TPOs_Shift * SessionHalfHours),
Yvb_end = Yt-TPOs [imin] + BottomLine_End- (ValueArea_Shift * SessionHalfHours) + (TPOs_Shift * SessionHalfHours);
if (ViewValueArea)
{
ObjectDelete (ValueTop);
ObjectCreate (ValueTop, OBJ_TREND , 0 , iTime ( NULL , 0 , Yvt_start), Max- (imax * STEP), iTime ( NULL , 0 , Yvt_end), Max- (imax * STEP));
ObjectSet (ValueTop, OBJPROP_COLOR , TopLine_Color);
ObjectSet (ValueTop,OBJPROP_WIDTH , TopLine_Width);
ObjectSet (ValueTop, OBJPROP_RAY , false );
ObjectSet (ValueTop, OBJPROP_BACK , True );
ObjectDelete (ValueBottom);
ObjectCreate (ValueBottom, OBJ_TREND , 0 , iTime ( NULL , 0 , Yvb_start), Max- (imin * STEP), iTime ( NULL , 0 , Yvb_end), Max- (imin * STEP));
ObjectSet (ValueBottom, OBJPROP_COLOR , BottomLine_Color);
ObjectSet (ValueBottom,OBJPROP_WIDTH , BottomLine_Width);
ObjectSet (ValueBottom, OBJPROP_RAY , false );
ObjectSet (ValueBottom, OBJPROP_BACK , True );
}
if (ViewInformationText)
{
ObjectDelete (Range);
ObjectCreate (Range, OBJ_TEXT , 0 , iTime ( NULL , 0 , Yt-SessionHalfHours + InformationTextShift + (TPOs_Shift * SessionHalfHours)), PocTick);
ObjectSetText (Range, "Range =" + DoubleToStr ((Max-Min), 4) + "Pip" , InformationTextSize, "Arial" , InformationTextColor);
ObjectDelete (ValueAreaRange);
ObjectCreate (ValueAreaRange, OBJ_TEXT , 0 , iTime ( NULL , 0 , Yt-SessionHalfHours + InformationTextShift + (TPOs_Shift * SessionHalfHours)), PocTick- ( 2 * STEP));
ObjectSetText (ValueAreaRange, "TPO ValueArea =" + DoubleToStr ((imin-imax) * STEP, 4 ) + "Pip" , InformationTextSize, "Arial" , InformationTextColor);
ObjectDelete (TVolume);
ObjectCreate (TVolume, OBJ_TEXT , 0 , iTime ( NULL , 0 , Yt-SessionHalfHours + InformationTextShift + (TPOs_Shift * SessionHalfHours)), PocTick- ( 4 * STEP));
ObjectSetText (TVolume, "Tick Volume =" + DoubleToStr (TickVolume, 0 ), InformationTextSize, "Arial" , InformationTextColor);
}
if (ViewrangeLine)
{
ObjectDelete (RangeLine);
ObjectCreate (RangeLine, OBJ_TREND , 0 , iTime ( NULL, 0 , Yt- (rangeLine_Shift * SessionHalfHours) + 1 + (TPOs_Shift * SessionHalfHours)), Max, iTime ( NULL , 0 , Yt- (rangeLine_Shift * SessionHalfHours) + 1 + (TPOs_Shift * SessionHalfHours), Min);
ObjectSet (RangeLine, OBJPROP_COLOR , RangeLineColor);
ObjectSet (RangeLine, OBJPROP_STYLE , STYLE_DOT );
ObjectSet (RangeLine, OBJPROP_RAY , false );
}
if (ViewInitialBalanceLine)
{
ObjectDelete (IBLine);
ObjectCreate(IBLine, OBJ_TREND , 0 , iTime ( NULL , 0 , Yt + IBLine_Shift + (TPOs_Shift * SessionHalfHours)), IBmax, iTime ( NULL , 0 , Yt + IBLine_Shift + (TPOs_Shift * SessionHalfHours)), IBmin);
ObjectSet (IBLine, OBJPROP_COLOR , IBLineColor);
ObjectSet (IBLine, OBJPROP_STYLE , STYLE_SOLID );
ObjectSet (IBLine, OBJPROP_WIDTH , IBLineWidth);
ObjectSet (IBLine, OBJPROP_RAY , false );
}
si(View_Pointer)
{
int Pointer = (Max- Fermé [ 0 ]) / STEP;
if (Max- (Pointeur * STEP) - Fermer [ 0 ]> Fermer [ 0 ] -Max + ((Pointeur + 1 ) * STEP))
Pointeur ++;
int Pointr = Yt-TPOs [Pointeur] -PointerShift;
si (Pointr < 0 )
Pointr = 0 ;
ObjectDelete ( "Pointeur" );
if ( ObjectFind ( "Pointeur" )! = 0 )
{
ObjectCreate( "Pointeur" , OBJ_ARROW , 0 , iTime ( NULL , 0 , Pointr + (TPOs_Shift * SessionHalfHours), Fermer [ 0 ] + STEP);
ObjectSet ( "Pointer" , OBJPROP_ARROWCODE , 239 );
ObjectSet ( "Pointer" , OBJPROP_COLOR , PointerColor);
ObjectSet ( "Pointer" , OBJPROP_BACK , false );
}
else
{
ObjectMove ( "Pointeur", 0 , iTime ( NULL , 0 , Pointr + (TPOs_Shift * SessionHalfHours)), Fermer [ 0 ] + STEP);
}
}
}
// + -------------------------------------------- ---------------------- +
void DeleteAllObjects ( int NumberOfDays)
{
datetime dt, t0;
int y, u, Ymax;
chaîne TPOName;
dt = iTime ( NULL , 0 , 0 );
t0 = StrToTime ( TimeYear (dt) + "." +TimeMonth (dt) + "." + TimeDay (dt) + "" + "00" + ":" + "00" );
Ymax = iBarShift ( NULL , 0 , t0);
pour (y = 0 ; y <= NumberOfDays + 6 ; y ++)
{
dt = iTime ( NULL , 0 , Ymax + 1 );
t0 = StrToTime ( TimeYear (dt) + "." + TimeMonth (dt) + "."+ "00" + ":" + "00" );
Ymax = iBarShift ( NULL , 0 , t0);
}
pour (y = 0 ; y <= Ymax; y ++)
{
TPOName = TimeToStr ( iTime ( NULL , 0 , y), TIME_DATE | TIME_MINUTES );
if ( ObjectFind ( "ouvert" + TPOName) == 0 )
ObjectDelete ( "ouvert" + TPOName);
if ( ObjectFind ("Pointeur" ) == 0 )
ObjectDelete ( "Pointeur" );
if ( ObjectFind ( "POC" + TPOName) == 0 )
ObjectDelete ( "POC" + TPOName);
if ( ObjectFind ( "ValueTop" + TPOName) == 0 )
ObjectDelete ( "ValueTop" + TPOName);
if ( ObjectFind ( "ValueBottom" + TPOName) == 0 )
ObjectDelete ( "ValueBottom" + TPOName);
( ObjectFind ( "Range" + TPOName) == 0 )
ObjectDelete ( "Plage" + TPOName);
if ( ObjectFind ( "ValueAreaRange" + TPOName) == 0 )
ObjectDelete ( "ValueAreaRange" + TPOName);
if ( ObjectFind ( "TVolume" + TPOName) == 0 )
ObjectDelete ( "TVolume" + TPOName);
if ( ObjectFind ( "RangeLine"
( "RangeLine" + TPOName);
if ( ObjectFind ( "IBLine" + TPOName) == 0 )
ObjectDelete ( "IBLine" + TPOName);
pour (u = 0 ; u <= 1000 ; u ++)
{
if ( ObjectFind (TPOName + "" + DoubleToStr (u, 0 )) == 0 )
ObjectDelete (TPOName + "" + DoubleToStr (u, 0 ));
}
}
}
// + ----------------------------------------------- ------------------- +
Bonjour Vins, effectivement quelque chose ne passe pas avec ton post précédent, même avec un accès étendu de modération seule une page blanche apparait, je ne saurais pas te dire ce qu’il s’est passé, il faudra attendre le retour de Nicolas qui est en congé.
De même pour la tentative de traduction depuis mt4 il faudra attendre son retour pour savoir s’il peut convertir le programme, mais je ne suis pas optimiste, car pour créer un indicateur personnalisé de market profile, il faudrait pouvoir utiliser intensivement des boucles “for to… next” dont la limite max est trop faible pour obtenir un profil correct, de mémoire il y a eu quelques tentatives dont au moins une de Nicolas après une requête similaire, et je crois que ça n’avait donné qu’un profil très grossier via des commandes drawrectangle, à vérifier via la fonction “search” du site pour retrouver les posts via mots clés (en haut à droite sur l’avatar de l’utlisateur, menu déroulant apparait, première ligne est une search box grisée).
Bonsoir noobywan, oui c’est vrai qu’après recherche sur le site prorealcode il n’y a pas grand chose à propos du market profil ainsi que du volume profile. Peut être comme tu dis difficile à coder ou à convertir. Néanmoins je me dis que prorealtime l’a fait donc ce n’est pas impossible je pense. Dommage qu’il soit payant sur prorealtime. j’attendrais le retour de nicolas on verra bien. Et merci de ton retour.
Du coup en attendant je me coltine le vilain mt4 et vais essayé de le testé…
Bonjour, je suis aussi à la recherche de celui, mais je trade sur CFD , alors je ne crois pas q’il soit disponible, du moins en version payante a 33€/mois.. (future ou cfd; je sais pas)
J’ai trouvé cela sur le forum : https://www.prorealcode.com/prorealtime-indicators/bull-bear-volume-by-price-levels/ ! est-ce un market profile ? je ne sais pas vraiment ptr que cela vous aideras .
je recherche une formation sur cela.
Bonjour, je trade aussi sur les cfd, oui il est en version payante sur prorealtime en effet. D’après ce que j’ai pu comprendre, il faudrait trader avec un market profile avec les flux future (par exemple future dax pour le cfd dax). concernant votre lien c’est un volume profile et non un market profile. Par contre c’est très interressant car il se complète avec le market profile justement. Grace à cela on peut tracer des support et résistance très précis (avec les plus grands pics et creux du volume), je vais l’essayer voir ce que cela donne un peu. sinon je n’ai pas encore trouver quelqu’un qui ait coder un market profile pour prorealtime car comme disait noobywan ce n’est pas chose aisé apparemment, c’est d’ailleurs pour cela que j’ai demandé si l’on pouvait convertir celui que j’ai trouvé pour mt4 . Au sujet des formation, cela dépends ce que vous cherchez, il y en a peu car ceci est peu utilisé en france car d’une plus grande complexité que les graphique et le chartisme qui vont avec. Mais il en existe quand même.
merci de votre retour, effectivement j’ai plus trouvé thierry et bronsson allias jean-marc ! effectivement j’ai eu PRT et ils me disent que cela est possible sue sur future, or j’ai déjà vu des brokers l’utiliser sur CFD (l’implémentation des lettre pourrais être remplacé pas des symboles) je pense que cela est possible du moment qu’il y a les volumes de base ! après étant donnée que PRT a a sa disposition l’outil, je ne pense pas qu’ils souhaitent le faire sur CFD même si possible de convertir en MT4->PRT, ce qui me dérange c de passé de Sier…C… pour trader sur PRT c la seul chose qui est vraiment dommage !
salut, oui voila bronson et thierry, sinon si tu veux travailler vec le market profile y a pas mieux que siera chart car tout les outils sont natif et donc gratuit (juste l’abonnement à sierra chart à payer (une trentaine de dollar ou moins chere avec un broker…) . De toute façon si je peux te donner un conseil, il vaut mieux aujourd’hui traiter les futures vue qu’avec la nouvelle loi de l’amf les marges ont considérablement augmenter donc ça vaut plus le coup. exemple le Dax sur cfd c’est environ 5000€ de marge pour 1 lot plein tandis que sur future c’est 2500 donc y a pas photo. Après faut bien choisir son broker bien sûr , pour cela faut éviter les brokers en france, vaut mieux se pencher sur un bon broker future américain genre infinity, AMP…etc
Exactement, après j’adore PRT, Sie..C… pas mal de problème lié a son utilisation et son interface trop compliqué ! après je trouve que le CFD à son avantage avec la clôture partiel de position et le respect stricte de son MoneyMangement, il y a pas mieux et cela représente 90% de mon trading ,c’est donc pour cela que les future m’intéresse pas (même en scalping) et à 5€/pts c moins chère sur CFD avec l’incrément aussi de 1!
c’est juste une histoire de flux pour moi, faut juste pas etre scalper sur du CFD le reste c’est OK je trouve (c’est mon avis perso)
MP compliqué surtout lorsque j’ai toujours appris a utiliser les chandeliers jap; la plupart des vidéo commence directement dans le vif du sujet sans expliqué ce que représente la suite de ligne sur le MP (certe une lettre = 30 Min) mais pourquoi ? basé sur quoi ? plein de question qui rend étrange l’utilisation du MP VP !
Bah tu sais j’étais prorealtime également avant et c’est vrai que tout est en français et donc plus facile à comprendre avec aussi une belle interface je te l’accorde. S***** oui c’est plus compliqué déja parce que c’est en anglais et surtout que c’est une plateforme avec des fonctions beaucoup plus avancées que proréaltime. Au début c’est un peu une usine à gaz mais c’est comme tout, une fois qu’on à appris et pris le “pli” ça va tout seul…
Alors si j’ai bien compris tu fais du swing…? le money management ok c’est la base sinon c’est pas la peine de trader. 5€ le point moins chére avec les CFD? Faudra que tu m’expliques alors car sur future c’est 500€ de marge mobilisé à 5€ le pt et en plus il n’y a pas de spread pour les ordres limites (seulement pour les ordres au marché 1pt). Bon après moi je te parle de scalping et d’intraday, pas de swing ni d’overnight… J’ai également appris les chandeliers et son chartisme accompagnant mais un jour j’ai compris qu’il fallait trader sur un marché régulé comme les futures contrats à terme et pas sur un marché non organiser comme les CFD où d’ailleurs tu n’apparaît même pas sur une place de marchés puisque c’est monté de toute pièces par les market maker et tu ne peux donc être gagnant à long terme .D’ailleurs ton chiffre 90% m’interpelle également. Je m’explique :
Merci pour le lien :), moi je suis intraday à la base, j’ai beaucoup perdu a mes débuts (normal) puis envie de passer sur future je me suis dit que non car capital trop faible, au pire j’aurais plus faire du scalp, mais je n’aime pas cela trop stressant, trop rapide (j’ai pas des yeux assez rapide, avec l’expérience qui va avec)
Du coup je reste en intraday avec une méthode bidon (tt en respectant la tendance) qui me fais gagner depuis plus de 1 an maintenant (certes certains trouveront cela mauvais) mais c’est toujours un début! Aprçs pour moi c’est le flux le plus compliqué sur CFD mais, il y a bien 5% qui gagnent. Si je compare aux futures j’ai les banques les hedge et compagnie; ils me font encore plus peur que les Borkers.
Surement que la méthode miracle se trouve dans les futures avec les volumes…footprint… mais bon j’aime trop le CFD pour men séparer.
Désolé il ne sera pas possible de convertir cet indicateur pour PRT, pour diverses raisons déjà évoquées: pas de tableaux de données, boucles trop importantes, impossibilité de supprimer des objets déjà tracés.
Etant curieux comment interpréter les graphiques que tu as avec le market profil ?
market profile
This topic contains 13 replies,
has 5 voices, and was last updated by guinsu2000
7 years, 6 months ago.
| Forum: | ProBuilder : Indicateurs & Outils Personnalisés |
| Language: | French |
| Started: | 07/22/2018 |
| Status: | Active |
| Attachments: | 2 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.