Errori, bug, domande - pagina 2194

 
Dmytro Zelenskyy:

Approccio serio))

Bene, allora, su quello che vuoi schermare, esegui una volta un piccolo script su di esso, che dà l'id a una variabile globale (preferibilmente una variabile globale temporanea).

E i vostri schermi di script per id.

Mossa intelligente!

Grazie!
 
Dmytro Zelenskyy:

Anche se calcolate la larghezza esatta dello schermo in pixel, lo schermo coprirà parzialmente la colonna dei prezzi.

E su diverse risoluzioni dello schermo è diverso, con me (1280x1024) da 50 a 60 a seconda del numero di cifre della valuta. Sull'altro schermo sarà diverso.

È come capire quale sia la larghezza della colonna, aggiungere questi pixel alla larghezza dello schermo? (aprire nello screenshot ciò che la colonna ha chiuso)


Ciao da 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:

Saluti da fxsaber:

Il caso batte il maestro!!!

Fico!

 
Artyom Trishkin:

Ciao da fxsaber:

Il codice è certamente molto interessante, ma risulta che non risolve il problema...

 
Il problema è che non è chiaro come ottenere una funzione universale (che funzioni con qualsiasi zoom e diverse larghezze di scala) che possa essere usata per determinare il numero di pixel fino a una specifica barra.
 
Aleksey Vyazmikin:
Il problema è che non è chiaro come ottenere una funzione universale (che funzioni con qualsiasi zoom e diverse larghezze di scala) che possa essere usata per determinare il numero di pixel fino a una specifica barra.

Andiamo. Tutti gli indizi sono .
La larghezza della barra accetta solo i valori 1,2,4,8,16,32

Stranamente, l'identificatore CHART_POINTS_PER_BAR non funziona.

Ma la larghezza della barra in pixel può essere facilmente calcolata:

int WidthBar=int(1<<ChartGetInteger(0,CHART_SCALE));
La barra di sinistra è sempre disegnata dal centro, quella di destra a piacere. Pertanto, l'origine delle coordinate è a zero (sinistra).
 
Nikolai Semko:

Andiamo. Tutte le scelte sono qui.
La larghezza della barra accetta solo valori di 1,2,4,8,16,32

Stranamente, l'identificatore CHART_POINTS_PER_BAR non funziona.

Ma la larghezza della barra in pixel può essere facilmente calcolata:

La barra di sinistra è sempre disegnata dal centro, quella di destra a piacere. Pertanto, l'origine delle coordinate è a zero (sinistra).

Questa è una teoria, finora la versione migliore (più accurata) è questa:

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

ma fallisce anche in un paio di modi.

 
Aleksey Vyazmikin:

Questa è una teoria, finora l'opzione migliore (più accurata) è questa:

ma fallisce anche in coppia.

:))
Esporre il problema in modo chiaro. Che valore volete ottenere?
 
Nikolai Semko:
:))
Esporre il problema in modo chiaro. Che valore volete ottenere?

Ho bisogno di uno screenshot dalla data A alla data B compresa. E la funzione dovrebbe funzionare correttamente con qualsiasi zoom.

 

Sulla base dello screenshot ho fatto un thread separato dove ho descritto il problema e postato il codice che ho - per favore aiutatemi!

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

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