Fehler, Irrtümer, Fragen - Seite 2194

 
Dmytro Zelenskyy:

Seriöser Ansatz))

Führen Sie dann auf der zu überprüfenden Seite einmal ein kleines Skript aus, das einer globalen Variable (vorzugsweise einer temporären globalen Variable) eine ID zuweist.

Und Ihr Skript wird nach Id angezeigt.

Kluger Schachzug!

Ich danke Ihnen!
 
Dmytro Zelenskyy:

Selbst wenn Sie die genaue Breite des Bildschirms in Pixeln berechnen, wird der Bildschirm die Preisspalte teilweise verdecken.

Und auf verschiedenen Bildschirmauflösungen ist es unterschiedlich, bei mir (1280x1024) von 50 bis 60, je nach Anzahl der Ziffern der Währung. Auf dem anderen Bildschirm wird das anders sein.

So kann man herausfinden, wie breit die Spalte ist, wenn man diese Pixel zur Breite des Bildschirms hinzufügt? (öffnen Sie im Screenshot, was die Spalte geschlossen hat)


Hallo von fxsaber:

//+------------------------------------------------------------------+
#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"
// Ширина вертикальной шкалы графика
int GetWidthScale(const long chartID=0)
  {
   const string Name=__FUNCTION__+(string)MathRand();

   ObjectCreate(chartID,Name,OBJ_CHART,0,0,0);
   ObjectSetInteger(chartID,Name,OBJPROP_XDISTANCE,-1 e3);

   const long chart=ObjectGetInteger(chartID,Name,OBJPROP_CHART_ID);

   const int Res=(int)(ChartGetInteger(chart,CHART_WIDTH_IN_PIXELS) -
                  (ChartSetInteger(chart,CHART_SHOW,false) ? ChartGetInteger(chart,CHART_WIDTH_IN_PIXELS) : 0));

   ObjectDelete(chartID,Name);

   return(-Res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(TOSTRING(GetWidthScale()));
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Grüße von fxsaber:

Der Koffer schlägt den Meister!!!

Super!

 
Artyom Trishkin:

Hallo von fxsaber:

Der Code ist sicherlich sehr interessant, aber es stellt sich heraus, dass er das Problem nicht löst...

 
Das Problem besteht darin, dass nicht klar ist, wie man eine universelle Funktion (die mit jedem Zoom und verschiedenen Skalenbreiten funktioniert) erhält, mit der man die Anzahl der Pixel bis zu einem bestimmten Balken und einschließlich dieses Balkens bestimmen kann.
 
Aleksey Vyazmikin:
Das Problem ist, dass nicht klar ist, wie man eine universelle Funktion (die mit jedem Zoom und verschiedenen Skalenbreiten funktioniert) erhält, mit der man die Anzahl der Pixel bis zu und einschließlich eines bestimmten Balkens bestimmen kann.

Na los! Alle Anhaltspunkte sind vorhanden.
Die Balkenbreite akzeptiert nur die Werte 1,2,4,8,16,32

Merkwürdigerweise funktioniert die Kennung CHART_POINTS_PER_BAR nicht.

Die Breite des Balkens in Pixeln kann jedoch leicht berechnet werden:

int WidthBar=int(1<<ChartGetInteger(0,CHART_SCALE));
Der linke Balken wird immer von der Mitte aus gezeichnet, der rechte Balken nach Belieben. Der Koordinatenursprung liegt also bei Null (links).
 
Nikolai Semko:

Na los! Alle Tipps finden Sie hier.
Die Balkenbreite akzeptiert nur Werte von 1,2,4,8,16,32

Merkwürdigerweise funktioniert die Kennung CHART_POINTS_PER_BAR nicht.

Die Breite des Balkens in Pixeln kann jedoch leicht berechnet werden:

Der linke Balken wird immer von der Mitte aus gezeichnet, der rechte Balken nach Belieben. Der Koordinatenursprung liegt also bei Null (links).

Dies ist eine Theorie, die bisher beste (genauere) Version ist diese:

pp=(double)ChartGetInteger(handle,CHART_WIDTH_IN_PIXELS)/(double)ChartGetInteger(handle,CHART_WIDTH_IN_BARS)*((Shift_Start-Shift_Stop)*(-1)+2)+Schkala+3;

aber sie versagt auch in mehrfacher Hinsicht.

 
Aleksey Vyazmikin:

Dies ist eine Theorie, bisher ist die beste (genauere) Option diese:

aber sie scheitert auch paarweise.

:))
Formulieren Sie das Problem klar. Welchen Wert wollen Sie erreichen?
 
Nikolai Semko:
:))
Nennen Sie das Problem klar und deutlich. Welchen Wert wollen Sie erreichen?

Ich muss ein Bildschirmfoto von Datum A bis einschließlich Datum B erstellen. Und die Funktion sollte bei jedem Zoom korrekt funktionieren.

 

Basierend auf dem Screenshot habe ich einen separaten Thread erstellt, in dem ich das Problem beschrieben und den Code gepostet habe, den ich habe - ich bitte die Experten um Hilfe!

https://www.mql5.com/ru/forum/237291

Организация пакетной обработки задачи по снятия изображений с экрана графика
Организация пакетной обработки задачи по снятия изображений с экрана графика
  • 2018.04.15
  • www.mql5.com
Встала у меня задача доработать скрипт https://www.mql5.com/ru/code/936 , который делает скрины...
Grund der Beschwerde: