Indicatore, bisogno di consigli sull'autocontrollo della DISTANZA tra i testi (MT-4)

 

Ciao cari programmatori!
Per favore, date il vostro consiglio:

Facciamo un Expert Advisor sotto forma di indicatore! Il suo compito - cercare un PATTERN sul grafico, e sopra le barre scrivere un testo (multilinea (!), come

linea #1 "nome del segnale"
linea #2 "% di probabilità"
linea #3 "icona" (freccia)

Il problema è che SE si imposta una distanza FISSA tra le linee = ad esempio 25 pips, tutto va bene su m5 ... ma su H1 = le linee si allontanano troppo (questo è il problema con il testo fisso (!!!)


Per favore, ditemi come si può fare il "calcolo automatico" della distanza tra le linee quando si cambia il TF o l'"altezza" del grafico quando si sposta il grafico un po' a sinistra, o per altezza (????!!!)

..... solo una cosa mi viene in mente:

1) "ottenere" l'altezza attuale del grafico (prezzo minimo e massimo):


2) Prezzo massimo - Prezzo minimo = "altezza del grafico in pip" e lo prendiamo sempre come 100%.

3) invece di "distanza fissa tra le linee (25 pip) - specificare la distanza in percentuale (ad esempio il 2% dell'altezza del grafico dal punto 2))


..... ha parlato con un programmatore - dice == NON SPOSTARE GLI OGGETTI ... beh, non puoi farlo ....... per riorganizzare il testo a più righe in modo che non si sovrappongano l'un l'altro == devi cancellare tutto il testo dopo aver capovolto il grafico == cancellare tutto il testo, e riscriverlo di nuovo alla nuova altezza del grafico (punto 2) (!)


..... allora continuo a riflettere == OK, e se = fare il disegno SOLO nella GUIDA ALLO SCHERMO ???!

Ha detto = ok, i NUOVI segnali saranno scritti nel modo corretto, ma quelli che sono rimasti = = O di nuovo si adattano uno sopra l'altro, o viceversa = si allungano ancora di più (su e giù l'uno dall'altro) perché "non si possono spostare gli oggetti già disegnati, ma bisogna solo cancellarli, e ridisegnare di nuovo (!)


Domanda a voi = Qualcuno ha già incontrato un tale ??????? come ha risolto questo problema? )))
(in modo che a qualsiasi scala e altezza del grafico = il testo multilinea ritorna all'interlinea normale (se misurata con un righello visivamente == 3mm a occhio) ... cioè l'interlinea dovrebbe essere DINAMICA) ????? )))))))))

Solo che non voglio fare l'intera iscrizione in UNA linea, e con un angolo di 45° (!), perché è visivamente più conveniente fare il testo ORIZZONTALE, e in 2-3 linee :)

Per favore consigliate (condividete le vostre esperienze)


Grazie )).

 
Vitaliy Kostrubko:


Studiate questo breve codice e potrebbe aiutarvi. Tutto è implementato in Canvas.

La cosa buona di Canvas è che per MT4 e MT5 il codice sarà quasi lo stesso.

File:
 
Vitaliy Kostrubko:

Ciao, cari programmatori!
Per favore, date il vostro miglior consiglio:

...


Grazie ))

Disegnare su tela:

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
  • www.mql5.com
Стандартная библиотека / Пользовательская графика / CCanvas - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ops... Nikolai mi ha battuto sul tempo...
 

State pensando correttamente.

//подсчитывает количество пунктов цены в одном пикселе
double GetPointsInPixel(long eChartId, int eWindow)
   {
   double eMin=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MIN,eWindow,eMin);
   if(eMin==EMPTY_VALUE) return(0);
   double eMax=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MAX,eWindow,eMax);
   if(eMax==EMPTY_VALUE) return(0);
   long ePixels=-1;
   ChartGetInteger(eChartId,CHART_HEIGHT_IN_PIXELS,eWindow,ePixels);
   if(ePixels<=0) return(0);
   return(double(eMax-eMin)/ePixels);
   }

double eIndent=GetPointsInPixel(eChartId,eWindow);

Poi aggiungi o sottrai questo valore al prezzo richiesto, quando gli eventi cambiano:

-cambiamento di orario,

-Aumento/diminuzione di un grafico,

-Riduzione della scala dei prezzi.

 
Nikolai Semko:

Studiate questo breve codice e potrebbe aiutarvi. Tutto è implementato in Canvas.

La cosa buona di Canvas è che per MT4 e MT5 il codice sarà quasi lo stesso.

Ok, grazie.)

 
Artyom Trishkin:
Ops... Nikolai mi ha battuto sul tempo...

... ))))))La cosa principale è che i pensieri sono gli stessi ))))
Grazie )))))

 
Aleksei Stepanenko:

State pensando correttamente.

double eIndent=GetPointsInPixel(eChartId,eWindow);

Poi aggiungi o sottrai questo valore al prezzo richiesto, quando gli eventi cambiano:

-cambiamento di orario,

-Aumento/diminuzione di un grafico,

-Riduzione/restringimento della scala dei prezzi.

Grazie ))))))))

 

Vitaliy Kostrubko:

Aleksei Stepanenko:

State pensando correttamente.

double eIndent=GetPointsInPixel(eChartId,eWindow);

Poi aggiungi o sottrai questo valore al prezzo richiesto, quando gli eventi cambiano:

-cambiamento di orario,

-Aumento/diminuzione di un grafico,

-Riduzione/restringimento della scala dei prezzi.

Grazie ))))))))

E dite a quel misero consulente che deve iniziare a imparare la lingua, non gli esempi di ****coders.

 
Alexey Viktorov:

E dite a quel misero consulente che deve iniziare a imparare la lingua, non gli esempi di ****coders.

Copia )))))
... Il tempo dimostra che anche 10 anni di esperienza di programmazione con una varietà di EA (diversi livelli di complessità) == non è sufficiente per conoscere l'intero campo della codifica)
perché durante questi 10 anni si può diventare un super-professionista in 2/3 del linguaggio di programmazione ... e non ne conosce affatto 1/3))
quindi non c'è bisogno di offendersi)) ma sta a voi padroneggiare questa parte 1/3 == è una questione individuale)).

.... è solo più interessato a "ALGORITMI astuti che portano PROFITTO... e scrivere "cartoni animati" non è il suo interesse ...

Ma il tuo esempio glielo mostrerò di sicuro)).
Grazie ))))

 
Vitaliy Kostrubko:

Prendilo )))))
... Il tempo dimostra che anche 10 anni di esperienza di programmazione con i più svariati EA (diversi livelli di complessità) == non è sufficiente conoscere l'area di codifica TOTALE)
perché durante questi 10 anni si può diventare un super-professionista in 2/3 del linguaggio di programmazione ... e non ne conosce affatto 1/3))
quindi non c'è bisogno di offendersi)) ma sta a voi padroneggiare questa parte 1/3 == è una questione individuale)).

.... è solo più interessato a "ALGORITMI astuti che portano PROFITTO... e i "cartoni animati" non sono il suo interesse ...

Ma il tuo esempio glielo mostrerò di sicuro )).
Grazie ))))

Non dovete fare riferimento a me. Questa opzione, anche se l'ho usata, non l'ho espressa. Stavo solo sostenendo il mio omonimo nella sua opinione.

E se un "programmatore" parla di impossibilità di spostare un oggetto grafico, non è affatto un programmatore e nemmeno una parodia di un programmatore, ma solo ****coder.