Hi Folks,
I am stuck adding a .bmp Image into the Chart. The Code below creates the objects which I can see in the graph but the Image itself is not loaded. Any ideas?
//--- description #property description "Script creates a bitmap in the chart window." //--- display window of the input parameters during the script's launch #property script_show_inputs //--- input parameters of the script input string InpFile="\\Images\\dollar.bmp"; // Bitmap file name input int InpWidth=24; // Visibility scope X coordinate input int InpHeight=24; // Visibility scope Y coordinate input int InpXOffset=4; // Visibility scope shift by X axis input int InpYOffset=4; // Visibility scope shift by Y axis input color InpColor=clrRed; // Border color when highlighted input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Line style when highlighted input int InpPointWidth=1; // Point size to move input bool InpBack=false; // Background object input bool InpSelection=false; // Highlight to move input bool InpHidden=true; // Hidden in the object list input long InpZOrder=0; // Priority for mouse click //+------------------------------------------------------------------+ //| Create a bitmap in the chart window | //+------------------------------------------------------------------+ bool BitmapCreate(const long chart_ID=0, // chart's ID const string name="Bitmap", // bitmap name const int sub_window=0, // subwindow index datetime time=0, // anchor point time double price=0, // anchor point price const string file="", // bitmap file name const int width=10, // visibility scope X coordinate const int height=10, // visibility scope Y coordinate const int x_offset=0, // visibility scope shift by X axis const int y_offset=0, // visibility scope shift by Y axis const color clr=clrRed, // border color when highlighted const ENUM_LINE_STYLE style=STYLE_SOLID, // line style when highlighted const int point_width=1, // move point size const bool back=false, // in the background const bool selection=false, // highlight to move const bool hidden=true, // hidden in the object list const long z_order=0) // priority for mouse click { //--- set anchor point coordinates if they are not set ChangeBitmapEmptyPoint(time,price); //--- reset the error value ResetLastError(); //--- create a bitmap if(!ObjectCreate(chart_ID,name,OBJ_BITMAP,sub_window,time,price)) { Print(__FUNCTION__, ": failed to create a bitmap in the chart window! Error code = ",GetLastError()); return(false); } //--- set the path to the image file if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file)) { Print(__FUNCTION__, ": failed to load the image! Error code = ",GetLastError()); return(false); } //--- set visibility scope for the image; if width or height values //--- exceed the width and height (respectively) of a source image, //--- it is not drawn; in the opposite case, //--- only the part corresponding to these values is drawn ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- set the part of an image that is to be displayed in the visibility scope //--- the default part is the upper left area of an image; the values allow //--- performing a shift from this area displaying another part of the image ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset); ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset); //--- set the border color when object highlighting mode is enabled ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- set the border line style when object highlighting mode is enabled ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); //--- set a size of the anchor point for moving an object ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_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 label by mouse ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- 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); } //+------------------------------------------------------------------+ //| Set a new image for the bitmap | //+------------------------------------------------------------------+ bool BitmapSetImage(const long chart_ID=0, // chart's ID const string name="Bitmap", // bitmap name const string file="") // path to the file { //--- reset the error value ResetLastError(); //--- set the path to the image file if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file)) { Print(__FUNCTION__, ": failed to load the image! Error code = ",GetLastError()); return(false); } //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Move a bitmap in the chart window | //+------------------------------------------------------------------+ bool BitmapMove(const long chart_ID=0, // chart's ID const string name="Bitmap", // bitmap name datetime time=0, // anchor point time double price=0) // anchor point price { //--- if point position is not set, move it to the current bar having Bid price if(!time) time=TimeCurrent(); if(!price) price=SymbolInfoDouble(Symbol(),SYMBOL_BID); //--- reset the error value ResetLastError(); //--- move the anchor point if(!ObjectMove(chart_ID,name,0,time,price)) { Print(__FUNCTION__, ": failed to move the anchor point! Error code = ",GetLastError()); return(false); } //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Change visibility scope (bitmap) size | //+------------------------------------------------------------------+ bool BitmapChangeSize(const long chart_ID=0, // chart's ID const string name="Bitmap", // bitmap name const int width=0, // bitmap width const int height=0) // bitmap height { //--- reset the error value ResetLastError(); //--- change bitmap size if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width)) { Print(__FUNCTION__, ": failed to change the bitmap width! Error code = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height)) { Print(__FUNCTION__, ": failed to change the bitmap height! Error code = ",GetLastError()); return(false); } //--- successful execution return(true); } //+--------------------------------------------------------------------+ //| Change coordinate of the upper left corner of the visibility scope | //+--------------------------------------------------------------------+ bool BitmapMoveVisibleArea(const long chart_ID=0, // chart's ID const string name="Bitmap", // bitmap name const int x_offset=0, // visibility scope X coordinate const int y_offset=0) // visibility scope Y coordinate { //--- reset the error value ResetLastError(); //--- change the bitmap's visibility scope coordinates if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset)) { Print(__FUNCTION__, ": failed to change X coordinate of the visibility scope! Error code = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset)) { Print(__FUNCTION__, ": failed to change Y coordinate of the visibility scope! Error code = ",GetLastError()); return(false); } //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Delete a bitmap | //+------------------------------------------------------------------+ bool BitmapDelete(const long chart_ID=0, // chart's ID const string name="Bitmap") // bitmap name { //--- reset the error value ResetLastError(); //--- delete the label if(!ObjectDelete(chart_ID,name)) { Print(__FUNCTION__, ": failed to delete a bitmap! Error code = ",GetLastError()); return(false); } //--- successful execution return(true); } //+------------------------------------------------------------------+ //| Check anchor point values and set default values | //| for empty ones | //+------------------------------------------------------------------+ void ChangeBitmapEmptyPoint(datetime &time,double &price) { //--- if the point's time is not set, it will be on the current bar if(!time) time=TimeCurrent(); //--- if the point's price is not set, it will have Bid value if(!price) price=SymbolInfoDouble(Symbol(),SYMBOL_BID); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { datetime date[]; // array for storing dates of visible bars double close[]; // array for storing Close prices //--- bitmap file name string file="\\Images\\dollar.bmp"; //--- number of visible bars in the chart window int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS); //--- memory allocation ArrayResize(date,bars); ArrayResize(close,bars); //--- fill the array of dates ResetLastError(); if(CopyTime(Symbol(),Period(),0,bars,date)==-1) { Print("Failed to copy time values! Error code = ",GetLastError()); return; } //--- fill the array of Close prices if(CopyClose(Symbol(),Period(),0,bars,close)==-1) { Print("Failed to copy the values of Close prices! Error code = ",GetLastError()); return; } //--- define how often the images should be displayed int scale=(int)ChartGetInteger(0,CHART_SCALE); //--- define the step int step=1; switch(scale) { case 0: step=27; break; case 1: step=14; break; case 2: step=7; break; case 3: step=4; break; case 4: step=2; break; } //--- create bitmaps for High and Low bars' values (with gaps) for(int i=0;i<bars;i+=step) { //--- create the bitmaps if(!BitmapCreate(0,"Bitmap_"+(string)i,0,date[i],close[i],InpFile,InpWidth,InpHeight,InpXOffset, InpYOffset,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder)) { return; } //--- check if the script's operation has been forcefully disabled if(IsStopped()) return; //--- redraw the chart ChartRedraw(); // 0.05 seconds of delay Sleep(50); } //--- half a second of delay Sleep(500); //--- delete Sell signs for(int i=0;i<bars;i+=step) { if(!BitmapDelete(0,"Bitmap_"+(string)i)) return; if(!BitmapDelete(0,"Bitmap_"+(string)i)) return; //--- redraw the chart ChartRedraw(); // 0.05 seconds of delay Sleep(50); } //--- }
Hi Folks,
I am stuck adding a .bmp Image into the Chart. The Code below creates the objects which I can see in the graph but the Image itself is not loaded. Any ideas?
Yes, it's true but nevertheless it just seems like the Image could not be loaded. Not sure about the path?!
look at the log.
There is nothing useful in the log. It does not say anything about the Image path etc.
There is nothing useful in the log. It does not say anything about the Image path etc.
Are you sure ?
Graphical Objects |
|
|
ERR_OBJECT_ERROR |
4201 |
Error working with a graphical object |
ERR_OBJECT_NOT_FOUND |
4202 |
Graphical object was not found |
ERR_OBJECT_WRONG_PROPERTY |
4203 |
Wrong ID of a graphical object property |
Print the last error, check the return value of ObjectCreate() function.
if(!ObjectCreate(..... { Print(__FUNCTION__, ": failed to create a bitmap in the chart window! Error code = ",GetLastError()); return(false); }
Are you sure ?
Graphical Objects |
|
|
ERR_OBJECT_ERROR |
4201 |
Error working with a graphical object |
ERR_OBJECT_NOT_FOUND |
4202 |
Graphical object was not found |
ERR_OBJECT_WRONG_PROPERTY |
4203 |
Wrong ID of a graphical object property |
Print the last error, check the return value of ObjectCreate() function.
Hi, this results in:
ERR_FILE_NOT_EXIST | 5019 | Datei existiert nicht |
I tried different variations of the path like:
"Images\\euro.bmp"
"\\Images\\euro.bmp"
"//Images//euro.bmp"
I also put the euro.bmp Image in the same Folder as the .mqh file in which the Images is loaded and used:
"euro.bmp". same error...
Hi, this results in:
ERR_FILE_NOT_EXIST | 5019 | Datei existiert nicht |
I tried different variations of the path like:
"Images\\euro.bmp"
"\\Images\\euro.bmp"
"//Images//euro.bmp"
I also put the euro.bmp Image in the same Folder as the .mqh file in which the Images is loaded and used:
"euro.bmp". same error...
see the code example above;
//--- bitmap file name string file="\\Images\\dollar.bmp";
same... I created another new mini example:
int OnInit() {
ObjectCreate(0, "test", OBJ_BITMAP,0, TimeCurrent(), 1.047);
ObjectSetString(0,"test",OBJPROP_BMPFILE,0,"..\\Images\euro.bmp");
Print("Last Error:", GetLastError());
return(0);
}
void OnTick() {
}
here I also tried differente pathes. The object is placed by TimeCurrent and Price as can be seen in the screenshot:
changing the function to:
int OnInit() {
string file="\\Images\\dollar.bmp";
ObjectCreate(0, "test", OBJ_BITMAP,0, TimeCurrent(), 1.047);
ObjectSetString(0,"test",OBJPROP_BMPFILE,0,file);
Print("Last Error:", GetLastError());
return(0);
}
void OnTick() {
}
has no effect either. Might be a bug? cannot see what's wrong..
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi Folks,
I am stuck adding a .bmp Image into the Chart. The Code below creates the objects which I can see in the graph but the Image itself is not loaded. Any ideas?