ChartScreenShot()

 

Hallo,


sagt funktioniert die Funktion nicht mehr?


ich hab mir immer einen Screenshot angelegt und abgespeichert, schau ich eigentlich eh nie an, aber praktisch wars.

verwende dafür einen echt simplen code.

void OnTick()
  {

   if(isNewBar())
     {
      MqlDateTime day;
      TimeToStruct(TimeCurrent(),day);

      string sec,min,stunde,Tag,Monat;

      if(day.sec<10) sec="0"+(string)day.sec;
      else sec=(string)day.sec;

      if(day.min<10) min="0"+(string)day.min;
      else min=(string)day.min;

      if(day.hour<10) stunde="0"+(string)day.hour;
      else stunde=(string)day.hour;

      if(day.day<10) Tag="0"+(string)day.day;
      else Tag=(string)day.day;

      if(day.mon<10) Monat="0"+(string)day.mon;
      else Monat=(string)day.mon;

      string Account=(string)AccountInfoInteger(ACCOUNT_LOGIN);

      string file=Account+"_"+_Symbol+(string)day.year+"-"+Monat+"-"+Tag+"_"+stunde+":"+min+":"+sec+".jpg";
      // Mach einen Screenshot
      ChartScreenShot(0,file,1680,1050,ALIGN_LEFT);

      Print("Picture done ",file);
     }

  }
//+------------------------------------------------------------------+

bool isNewBar()
  {
   static datetime lastTime=0;
   datetime lastbarTime=(datetime)SeriesInfoInteger(Symbol(),0,SERIES_LASTBAR_DATE);
   if(lastTime==0)
     {
      lastTime=lastbarTime;
      return(false);
     }
   if(lastTime!=lastbarTime)
     {
      lastTime=lastbarTime;
      return(true);
     }
   return(false);
  }
//+------------------------------------------------------------------+

da sollte das ding eigentlich unter

MQL5/files die screenshots speicher, tut er aber nicht mehr


ps, das verwende ich schon seit MT4 so


danke

amando

 

Wenn so etwas auftritt, muss man als erstes die Funktionsrückgabe und den Fehler kontrollieren - das hättest Du machen können/sollen bevor Du hier fragst, weil so kann Dir niemand eine vernünftige Antwort geben:

string file=Account+"_"+_Symbol+(string)day.year+"-"+Monat+"-"+Tag+"_"+stunde+":"+min+":"+sec+".jpg";
      // Mach einen Screenshot
      if ( !ChartScreenShot(0,file,1680,1050,ALIGN_LEFT) ) { Print("Kein Foto ",file," err: ",(string)_LastError);}
oder Du suchst an der falschen Stelle, kontrolliere den Terminal-Pfad.
 
amando:

Hallo,


sagt funktioniert die Funktion nicht mehr?


ich hab mir immer einen Screenshot angelegt und abgespeichert, schau ich eigentlich eh nie an, aber praktisch wars.

verwende dafür einen echt simplen code.

da sollte das ding eigentlich unter

MQL5/files die screenshots speicher, tut er aber nicht mehr

ps, das verwende ich schon seit MT4 so

danke

amando

Bei mir funktioniert es, ich würde aber das hier ändern.

      if(ChartScreenShot(0,file,1680,1050,ALIGN_LEFT))
         Print("ScreenShot done ",file);
      else
         Print("ScreenShot failed ",file);

PS: Hab grad gemerkt, daß TimeToString() wegen der Doppelpunkte im Dateiname nicht geht.

 

die falschen Zeichen könnte man leicht ersetzen:

string file=Account+"_"+_Symbol+"_"+StringReplace(TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),':',''),".jpg";
 
Carl Schreiber:

die falschen Zeichen könnte man leicht ersetzen:

Jetzt hab ich mir das angesehen, danke@@calli, stimmt, fehlerabfrage sollte man einbauen

@otto, wie immer ist dein code um einiges kürzer als meiner und funkt genausogut, immer wieder faszinierend


was ich aber nicht versteh, ja : im filename ist seit jahrzehnten verboten, hat bisher aber nicht gestört. Die neue built von windows verwigert das jetzt

Grund der Beschwerde: