ChartScreenShot()

Einloggen oder registrieren, um einen Kommentar zu schreiben
amando
2889
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.

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

Carl Schreiber
Moderator
9882
Carl Schreiber  

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.
Otto Pauser
2166
Otto Pauser  
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.

Carl Schreiber
Moderator
9882
Carl Schreiber  

die falschen Zeichen könnte man leicht ersetzen:

string file=Account+"_"+_Symbol+"_"+StringReplace(TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS),':',''),".jpg";
amando
2889
amando  
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

Einloggen oder registrieren, um einen Kommentar zu schreiben