Bonjour,
C'est la première fois que j'utilise des objets graphiques dans un indicateur. J'aurais besoin de tracer une ligne verticale tous les jours à la même heure "22:00", pourriez-vous me guider vers une solution ?
Merci
Utilisez Cycles au lieu de VLine.
Salutations, Luke
for (int shift22=0; shift22<Bars && TimeHour(Time[shift22])!=22; shift22++){} VLine("2200", Time[shift22] %3600, Red); // %3600 needed for M30 and lower =================================== void vLine(string name, datetime T0, color clr){ #define WINDOW_MAIN 0 if (!Show.Objects) return; /**/ if (ObjectMove( name, 0, T0, 0 )){} else if(!ObjectCreate( name, OBJ_VLINE, WINDOW_MAIN, T0, 0 )) Alert("ObjectCreate(",name,",VLINE) failed: ", GetLastError() ); if (!ObjectSet(name, OBJPROP_COLOR, clr )) // Allow color change Alert("ObjectSet(", name, ",Color) [1] failed: ", GetLastError() ); if (!ObjectSetText(name, TimeToStr(T0, TIME_MINUTES), 10)) Alert("ObjectSetText(",name,") [1] failed: ", GetLastError()); }
Bonjour les gars,
J'ai pu résoudre le problème avec un autre code (vraiment je n'ai pas pu appliquer les solutions données ci-dessus), mais pas du tout.
Maintenant, j'obtiens des lignes verticales pour toutes les bougies de 22:00 précédentes, mais j'ai besoin de la ligne dans la bougie de 22:00 à venir à droite du prix (futur), comment pourrais-je obtenir cela ?
Voici le code :
...
for (shift=NumBars;shift>=0;shift--)
}
Au secours !
Merci :)
Veuillez utiliser ceci pour afficher le code. . il est plus facile à lire.
Maintenant, j'obtiens des lignes verticales pour toutes les bougies de 22 heures précédentes, mais j'ai besoin de la ligne de la bougie de 22 heures à venir à droite du prix (futur), comment puis-je l'obtenir ?
- La prochaine fois, soyez plus précis dans votre question initiale.
datetime now = Time[0], bod = now - now % 86400, // Beginning of the day Hr22= bod + 22 * 3600; // 2200 VLine("2200", Hr22, Red);
- La prochaine fois, soyez plus précis dans votre question initiale.
Est-il possible de dessiner des lignes verticales dans la partie droite du graphique en s'éloignant du prix actuel en ne connaissant que la date ?
Par exemple, supposons que l'heure actuelle est 2019.05.17 00:00, et je veux dessiner une ligne verticale dans le futur à 2019.06.04 16:00 en utilisant les informations de la date uniquement ?
Oui.
Use ObjectCreate( and OBJ_VLINE
Ou utilisez cette fonction par exemple :
//+------------------------------------------------------------------+ //| Create the vertical line | //+------------------------------------------------------------------+ bool VLineCreate(const long chart_ID=0, // chart's ID const string name="VLine", // line name const int sub_window=0, // subwindow index datetime time=0, // line time const color clr=clrRed, // line color const ENUM_LINE_STYLE style=STYLE_SOLID, // line style const int width=1, // line width const bool back=false, // in the background const bool selection=true, // highlight to move const bool ray=true, // line's continuation down const bool hidden=true, // hidden in the object list const long z_order=0) // priority for mouse click { //--- if the line time is not set, draw it via the last bar if(!time) time=TimeCurrent(); //--- reset the error value ResetLastError(); //--- create a vertical line if(!ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0)) { Print(__FUNCTION__, ": failed to create a vertical line! Error code = ",GetLastError()); return(false); } //--- set line color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- set line display style ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); //--- set line width ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); //--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- enable (true) or disable (false) the mode of moving the line by mouse //--- when creating a graphical object using ObjectCreate function, the object cannot be //--- highlighted and moved by default. Inside this method, selection parameter //--- is true by default making it possible to highlight and move the object ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- enable (true) or disable (false) the mode of displaying the line in the chart subwindows ObjectSetInteger(chart_ID,name,OBJPROP_RAY,ray); //--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- successful execution return(true); } //+------------------------------------------------------------------+
Merci Marco, cela n'a pas fonctionné, je vais poster le code entier, vous verrez dans l'alerte que j'ai la bonne date mais je ne suis pas capable de créer la ligne à cette date.
Ce que j'essaie de faire, c'est de sauvegarder les informations que j'ai sur le graphique au cas où elles seraient perdues, car parfois, lorsque le marché est fermé et que MT4 s'ouvre sur le VPS sans connexion au courtier, les informations sont perdues.
Donc, avant le week-end, je veux conserver mes lignes qui sont dans la section future du graphique (à l'extrême droite). Pour ce faire, j'ai créé un symbole sur le graphique, enregistré la date pour ce symbole, puis utilisé cette date pour recréer les lignes. Tout est bon, sauf la partie pour recréer les lignes et je me demande si quelqu'un pourrait m'aider à le faire.
//+------------------------------------------------------------------+ //| TestLines.mq4 | //| Copyright 2019, Alfa | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, Alpha" #property version "1.00" #property strict datetime PreTradeDOT, Symb_Chart_Dates, Exit_SymDOT; string Exit_SymSymbol = "Exit_Sym", ExitLine = "Exit"; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- OnTick(); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //---Object creation ObjectCreate(0, Exit_SymSymbol, OBJ_ARROW_DOWN, 0, Time[0] + Period() * 60 * 40, High[0]); ObjectSet(Exit_SymSymbol, OBJPROP_COLOR, Red); ObjectSet(Exit_SymSymbol, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(Exit_SymSymbol, OBJPROP_WIDTH, 3); ObjectSet(Exit_SymSymbol, OBJPROP_RAY, false); ObjectSet(Exit_SymSymbol, OBJPROP_BACK, True); ObjectSet(Exit_SymSymbol, OBJPROP_NAME, True); ObjectSet(Exit_SymSymbol, OBJPROP_TEXT, True); ObjectSetText(Exit_SymSymbol, "Exit_SymSymbol", 1); datetime TimeExit_SymSymbol = (datetime) ObjectGetInteger(0, Exit_SymSymbol, OBJPROP_TIME1); string TxtExit_SymSymbol = TimeToStr(TimeExit_SymSymbol, TIME_DATE | TIME_SECONDS); //--- if (ObjectFind(0, Exit_SymSymbol) == 0) // Object is found on main screen when its ==0 { Exit_SymDOT = (datetime) ObjectGetInteger(0, Exit_SymSymbol, 0, 0); //Alert(Exit_SymDOT ); SaveDates(); } if (ObjectFind(0, ExitLine) != 0) { ReadDates(); datetime Symb_Dates = StringToTime(StringSubstr(Symb_Chart_Dates, 0, 16)); // OK Alert(Symb_Dates); VLineCreate(0, "VLine", 0, Symb_Dates, clrRed, STYLE_SOLID, 1, false, true, true, true, 0); /* // ObjectCreate(0,ExitLine, OBJ_VLINE, 0, StringToTime(Symb_Dates), Low[0]); ObjectCreate(ExitLine, OBJ_VLINE, 0, StringToTime( Symb_Dates), Low[0]); // ObjectCreate(vLine, OBJ_VLINE, 0, Time[0] + (Symb_Dates-TimeCurrent()) , Low[0]); //ObjectCreate( ExitLine, OBJ_VLINE, 0, Symb_Dates, 0 ); ObjectSet(ExitLine, OBJPROP_COLOR, Orange); ObjectSet(ExitLine, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(ExitLine, OBJPROP_WIDTH, 3); ObjectSet(ExitLine, OBJPROP_RAY, false); ObjectSet(ExitLine, OBJPROP_BACK, True); */ } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //-- Function: ReadSpread //+------------------------------------------------------------------+ void ReadDates() { string fileName = getFileName(1); int file = FileOpen(fileName, FILE_CSV | FILE_READ); //--- This is a protection to avoid low spread and also for the expert //--- if the file has not been created then create a new file Symb_Chart_Dates = (datetime) ObjectGetInteger(0, Exit_SymSymbol, OBJPROP_TIME1, 0); int ShiftEntryBar = 10, TradeExit_SymBar = 30; if (file <= -1) { Exit_SymDOT = Time[0] + Period() * 60 * TradeExit_SymBar; SaveDates(); } //--- If there is a file then save the spreads if (file > 0) { Symb_Chart_Dates = FileReadNumber(file); FileClose(file); } } // //+------------------------------------------------------------------+ //-- Function: saveSpread //+------------------------------------------------------------------+ void SaveDates() { string fileName = getFileName(1); int file = FileOpen(fileName, FILE_CSV | FILE_WRITE); if (file > 0) { FileWrite(file, PreTradeDOT, Symb_Chart_Dates, Exit_SymDOT); FileClose(file); } } //+--------------------------------------------------------------------------------------------------+ //-- Function: getFileName //+--------------------------------------------------------------------------------------------------+ string getFileName(int FileNo) { string filename; //--- The spread file will be used for all time frames if (FileNo == 1) filename = " # " + "Lines" + ".txt"; // spread file return(filename); } //+------------------------------------------------------------------+ //| Create the vertical line | //+------------------------------------------------------------------+ bool VLineCreate(const long chart_ID = 0, // chart's ID const string name = "VLine", // line name const int sub_window = 0, // subwindow index datetime time = 0, // line time const color clr = clrRed, // line color const ENUM_LINE_STYLE style = STYLE_SOLID, // line style const int width = 1, // line width const bool back = false, // in the background const bool selection = true, // highlight to move const bool ray = true, // line's continuation down const bool hidden = true, // hidden in the object list const long z_order = 0) // priority for mouse click { //--- if the line time is not set, draw it via the last bar if (!time) time = TimeCurrent(); //--- reset the error value ResetLastError(); //--- create a vertical line if (!ObjectCreate(chart_ID, name, OBJ_VLINE, sub_window, time, 0)) { Print(__FUNCTION__, ": failed to create a vertical line! Error code = ", GetLastError()); return(false); } //--- set line color ObjectSetInteger(chart_ID, name, OBJPROP_COLOR, clr); //--- set line display style ObjectSetInteger(chart_ID, name, OBJPROP_STYLE, style); //--- set line width ObjectSetInteger(chart_ID, name, OBJPROP_WIDTH, width); //--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID, name, OBJPROP_BACK, back); //--- enable (true) or disable (false) the mode of moving the line by mouse //--- when creating a graphical object using ObjectCreate function, the object cannot be //--- highlighted and moved by default. Inside this method, selection parameter //--- is true by default making it possible to highlight and move the object ObjectSetInteger(chart_ID, name, OBJPROP_SELECTABLE, selection); ObjectSetInteger(chart_ID, name, OBJPROP_SELECTED, selection); //--- enable (true) or disable (false) the mode of displaying the line in the chart subwindows ObjectSetInteger(chart_ID, name, OBJPROP_RAY, ray); //--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID, name, OBJPROP_HIDDEN, hidden); //--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID, name, OBJPROP_ZORDER, z_order); //--- successful execution return(true); } //+------------------------------------------------------------------+
Est-il possible de dessiner des lignes verticales dans la partie droite du graphique en s'éloignant du prix actuel en ne connaissant que la date ?
Par exemple, supposons que l'heure actuelle est 2019.05.17 00:00, et que je veux dessiner une ligne verticale dans le futur à 2019.06.04 16:00 en utilisant uniquement la date ?
Utiliser le format 'D' pour définir l'heure souhaitée dans ObjectCreate()
ObjectCreate(0,"v_line",OBJ_VLINE,0,D'2019.06.04 16:00',0);
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour,
C'est la première fois que j'utilise des objets graphiques dans un indicateur. J'aurais besoin de tracer une ligne verticale tous les jours à la même heure "22:00", pourriez-vous me guider vers une solution ?
Merci