thake a snapshot... i try

 

Hi guys  anyone  know  why   in this script  if  i push a button for take snapshot not  save nothing inside a default folder File ? 

//+------------------------------------------------------------------+
//|                                                riskrewardbox.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property strict
#property indicator_chart_window

input    bool              DrawAllChart   =  false;      // Draw Box on all opened charts
input    ENUM_TIMEFRAMES   TimeFrame      =  PERIOD_H1;  // Chart timeframe
string   OBJprefix         =  "ziwoxRSRW";

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   ChartDraw();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   long     chartID           =  ChartFirst();
   string   symb              =  "";
   ENUM_TIMEFRAMES ChartPer   =  0;
   if (DrawAllChart)
      while(chartID>=0)
      {
         ObjectsDeleteAll(chartID,OBJprefix,-1,-1);
         chartID = ChartNext(chartID);
      }
   else 
      ObjectsDeleteAll(0,OBJprefix,-1,-1);
      
   ObjectDelete(0,"Reset");
   ObjectDelete(0,"Snapshot");   
  }
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ButtonCreate(0,"Reset",0,20,30,110,25,CORNER_LEFT_UPPER,"Reset All Box","Trebuchet MS",10,clrWhite,clrMediumSeaGreen,clrMediumSeaGreen,false,false,false,true,1,"");
   ButtonCreate(0,"Snapshot",0,140,30,110,25,CORNER_LEFT_UPPER,"Save Snapshot","Trebuchet MS",10,clrWhite,clrRoyalBlue,clrRoyalBlue,false,false,false,true,2,"");
   return(1);   
  }

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      if(sparam=="Reset") 
       {
         ChartClean();
       }
      if(sparam=="Snapshot")
       {
         string filename = StringFormat("%s_%s.png", Symbol(), TimeToString(TimeCurrent(), TIME_DATE|TIME_MINUTES));
         if(ChartScreenShot(0, filename, 1024, 768,ALIGN_LEFT))
            Print("Snapshot saved: ", filename);
         else
            Print("Errore nel salvataggio dello snapshot, errore: ", GetLastError());
       }
     }
   if(id==CHARTEVENT_OBJECT_DRAG)
     {
      double   pricePink1    =  ObjectGetDouble(0, OBJprefix+".Risk_Reward_Pink", OBJPROP_PRICE, 0); 
      double   pricePink2    =  ObjectGetDouble(0, OBJprefix+".Risk_Reward_Pink", OBJPROP_PRICE, 1); 
      double   priceGreen1    = ObjectGetDouble(0, OBJprefix+".Risk_Reward_Green", OBJPROP_PRICE, 0); 
      double   priceGreen2    = ObjectGetDouble(0, OBJprefix+".Risk_Reward_Green", OBJPROP_PRICE, 1); 
      
      double maxPink = MathMax(pricePink1, pricePink2);
      double minPink = MathMin(pricePink1, pricePink2);
      double maxGreen = MathMax(priceGreen1, priceGreen2);
      double minGreen = MathMin(priceGreen1, priceGreen2);

     
      if(sparam==OBJprefix+".Risk_Reward_Green" )
       {
         double pinkSize = maxPink - minPink;
         int      time1    =  ObjectGetInteger (0, OBJprefix+".Risk_Reward_Green",OBJPROP_TIME, 0);
         int      time2    =  ObjectGetInteger (0, OBJprefix+".Risk_Reward_Green",OBJPROP_TIME, 1);
         
         if (maxPink > maxGreen ) { 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE, 0, maxGreen); 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE, 1, maxGreen+pinkSize);
         }
         else { 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE, 1, minGreen); 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Pink",OBJPROP_PRICE, 0, minGreen-pinkSize);
         }
         
         ObjectSetInteger(0, OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME, 0, time1);     
         ObjectSetInteger(0, OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME, 1, time2);     
         ChartRedraw(0);
       }
       
      if(sparam==OBJprefix+".Risk_Reward_Pink" )
       {
         double greeSize = maxGreen - minGreen;
         int      time1    =  ObjectGetInteger (0, OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME, 0);
         int      time2    =  ObjectGetInteger (0, OBJprefix+".Risk_Reward_Pink",OBJPROP_TIME, 1);
         
         if (maxGreen > maxPink ) { 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Green", OBJPROP_PRICE, 0, maxPink); 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE, 1, maxPink+greeSize);
         }
         else { 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE, 1, minPink); 
            ObjectSetDouble (0, OBJprefix+".Risk_Reward_Green",OBJPROP_PRICE, 0, minPink-greeSize);
         }         
         
         ObjectSetInteger(0, OBJprefix+".Risk_Reward_Green", OBJPROP_TIME, 0, time1);
         ObjectSetInteger(0, OBJprefix+".Risk_Reward_Green", OBJPROP_TIME, 1, time2);
         ChartRedraw(0);
       }
     }  
   
}
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               
                  const string            name="Button",            
                  const int               sub_window=0,             
                  const int               x=0,                      
                  const int               y=0,                      
                  const int               width=50,                 
                  const int               height=18,                
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, 
                  const string            text="Button",            
                  const string            font="Arial",             
                  const int               font_size=10,             
                  const color             clr=clrBlack,             
                  const color             back_clr=clrWhite,  
                  const color             border_clr=clrNONE,       
                  const bool              state=false,              
                  const bool              back=false,               
                  const bool              selection=false,          
                  const bool              hidden=true,              
                  const long              z_order=0,                
                  const string            tooltip="\n")             
  {
   ResetLastError();
   if(ObjectFind(chart_ID,name)!=0)
     {
      if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
        {
         Print(__FUNCTION__,": failed to create the button! Error code = ",_LastError);
         return(false);
        }
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
      ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,tooltip);
     }
     else
     {
      ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
      ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
      ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,tooltip);
     }
   return(true);
  }

void ChartClean()
{
   long     chartID           =  ChartFirst();
   string   symb              =  "";
   ENUM_TIMEFRAMES ChartPer   =  0;
   if (DrawAllChart)
   while(chartID>=0)
     {
      ObjectsDeleteAll(chartID,OBJprefix,-1,-1);
      chartID = ChartNext(chartID);
     }
   else ObjectsDeleteAll(0,OBJprefix,-1,-1);
   ObjectSetInteger(0,"Reset",OBJPROP_STATE,false);
   ChartDraw();
}

//====================================================================
//+------------------------------------------------------------------+
//| Chart Draw function                                               |
//+------------------------------------------------------------------+
void ChartDraw()
{
   long     chart_ID             =  ChartFirst();
   string   symbl                =  "";
   ENUM_TIMEFRAMES chartperiod   =  0;
   if (DrawAllChart)
   while(chart_ID>=0)
     {
      symbl          =  ChartSymbol(chart_ID);
      chartperiod    =  ChartPeriod(chart_ID);
      string   name  =  OBJprefix+".Risk_Reward_Pink";
      double   top   =  iHigh(symbl,chartperiod,iHighest(symbl,chartperiod,MODE_HIGH,20,0));
      double   low   =  iLow(symbl,chartperiod,iLowest(symbl,chartperiod,MODE_LOW,20,0));
      double   mid   =  SymbolInfoDouble(symbl,SYMBOL_ASK);
      if (ObjectFind(chart_ID,name)<0)
      {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,0,iTime(symbl,chartperiod,0),low,iTime(symbl,chartperiod,0)+PeriodSeconds()*25,mid);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrPink);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,2);
      ObjectSetInteger(chart_ID,name,OBJPROP_FILL,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,true);  
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      }
      name  =  OBJprefix+".Risk_Reward_Green";
      if (ObjectFind(chart_ID,name)<0)
      {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,0,iTime(symbl,chartperiod,0),mid,iTime(symbl,chartperiod,0)+PeriodSeconds()*25,top);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrLightGreen);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,2);
      ObjectSetInteger(chart_ID,name,OBJPROP_FILL,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,true);  
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      }
      chart_ID = ChartNext(chart_ID);
     }
     else {
      chart_ID       =  0;
      symbl          =  Symbol();
      chartperiod    =  PERIOD_CURRENT;
      string   name  =  OBJprefix+".Risk_Reward_Pink";
      double   top   =  iHigh(symbl,chartperiod,iHighest(symbl,chartperiod,MODE_HIGH,20,0));
      double   low   =  iLow(symbl,chartperiod,iLowest(symbl,chartperiod,MODE_LOW,20,0));
      double   mid   =  SymbolInfoDouble(symbl,SYMBOL_ASK);
      if (ObjectFind(chart_ID,name)<0)
      {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,0,iTime(symbl,chartperiod,0),low,iTime(symbl,chartperiod,0)+PeriodSeconds()*25,mid);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrPink);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,2);
      ObjectSetInteger(chart_ID,name,OBJPROP_FILL,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,true);  
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      }
      name  =  OBJprefix+".Risk_Reward_Green";
      if (ObjectFind(chart_ID,name)<0)
      {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,0,iTime(symbl,chartperiod,0),mid,iTime(symbl,chartperiod,0)+PeriodSeconds()*25,top);
      ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clrLightGreen);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,STYLE_SOLID);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,2);
      ObjectSetInteger(chart_ID,name,OBJPROP_FILL,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,true);  
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,false);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,0);
      }
     }
}
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2025.10.28
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 

2025.10.28 15:29:01.327    498909 (EURUSD,H1)    Snapshot saved: EURUSD_2025.10.28 22:29.png

':' is not allowed in a file name.

See https://en.wikipedia.org/wiki/Filename#Problematic_characters
 
Alain Verleyen #:

2025.10.28 15:29:01.327    498909 (EURUSD,H1)    Snapshot saved: EURUSD_2025.10.28 22:29.png

':' is not allowed in a file name.

See https://en.wikipedia.org/wiki/Filename#Problematic_characters
aaaaaaaaaaaaaaaaaaaa  ok sorry