Home Indicatore tecnico Post

Informazioni sull'Account: Indicator per MetaTrader 4

Allegato
11015.zip (5.3 KB, Scarica 0 volte)

Gli indicatori aggiungono informazioni sull'account direttamente nel grafico, mostrando Profitto, Saldo, Capitale, Margine Libero, Margine e Percentuale di Margine.

Indicatori Disponibili

  1. Indicatore 1: Account Info Verticale 4.01 - Visualizza le informazioni dell'account in sequenza verticale.
  2. Indicatore 2: Account Info Orizzontale 4.01 - Visualizza le informazioni dell'account in sequenza orizzontale.

Utilizzo delle Informazioni

  • Per nascondere le informazioni sull'account: Clicca su qualsiasi parte del testo delle informazioni.
  • Per mostrare le informazioni: Clicca sul testo 'Account Info'.
  • Per visualizzare solo il Profitto: Seleziona 'true' nel valore degli Input.

L'asse orizzontale e verticale deve avere spazi equidistanti tra le intestazioni delle informazioni senza sovrapposizioni di font. Scopri di più nelle Raccomandazioni qui sotto.

La funzione di nascondere/mostrare dipende dai tick in arrivo o dal refresh del grafico. In mercati con pochi tick o chiusi, il clic per nascondere/mostrare potrebbe non funzionare fino a quando non arriva un tick o non viene aggiornato il grafico. È incluso un indicatore di autorefresh nel download; è sufficiente attaccare l'indicatore di autorefresh a uno dei grafici, poiché aggiorna tutte le istanze di account info verticale e orizzontale su tutti i grafici.

Aumentare la frequenza di autorefresh avrà un impatto minimo sul carico della CPU, specialmente con attrezzature aggiornate. Un programma come Core Temp (gratuito) da questo link può essere utilizzato per mostrare nella barra delle applicazioni il carico della CPU, la temperatura della CPU e la percentuale della RAM utilizzata, monitorando così l'impatto del programma sul carico della CPU.

Account Info: Clicca per nascondere

Account Info: Clicca per mostrare

Account Info: Clicca per nascondere

Account Info: Clicca per mostrare

Raccomandazioni

Spaziatura uniforme tra le intestazioni delle informazioni dell'account

Le seguenti condizioni devono essere soddisfatte:

  1. Le distanze tra le intestazioni successive dell'account devono essere uguali.
  2. Un aumento o una diminuzione della dimensione del font non deve causare sovrapposizioni verticali o orizzontali.

Spaziatura verticale uniforme tra le intestazioni delle informazioni dell'account *

* Per evitare ripetizioni inutili, ogni riferimento a 'spaziatura uniforme' implica 'spaziatura uniforme tra le intestazioni dell'account'.

Per le intestazioni dell'account in sequenza verticale, la distanza verticale uniforme è determinata da una formula del parametro OBJPROP_YDISTANCE.

La distanza verticale uniforme è mantenuta includendo nella formula i seguenti parametri:

  1. Le formule successive di OBJPROP_YDISTANCE mantengono la spaziatura verticale uniforme moltiplicando la dimensione del font in base ai termini successivi assegnati in sequenza pari 2, 4, 6, 8, 10, 12.
  2. Le sovrapposizioni verticali del font sono evitate poiché ogni spazio uniforme aumenta o diminuisce proporzionalmente al cambiamento della dimensione del font.
  3. Lo spostamento dell'asse verticale di OBJPROP_YDISTANCE è mantenuto includendo come aggiunta il valore del parametro di input corrispondente OBJPROP_YDISTANCE.

Il codice account_info_vertical qui sotto illustra la soluzione.

input int Up_Down=10; // Su <-> Giù 
..........
int OnInit()
 { 
   ..........
   {
    Up_Down_ML=Up_Down+Font_Size*10;
    Up_Down_M =Up_Down+Font_Size*8;
    Up_Down_FM=Up_Down+Font_Size*6;
    Up_Down_E =Up_Down+Font_Size*4;
    Up_Down_B =Up_Down+Font_Size*2;
    Up_Down_P =Up_Down;
   }
   ..........
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],..........)
 {
  ..........
  // Distanza Y per l'intestazione del Saldo
  ObjectSet("Acc_B_v",OBJPROP_YDISTANCE,Up_Down_B);
  ...........
  // Distanza Y per l'intestazione del Profitto
  ObjectSet("Acc_P_v",OBJPROP_YDISTANCE,Up_Down_P);
  ...........


Spaziatura orizzontale uniforme tra le intestazioni delle informazioni dell'account

Per le intestazioni dell'account in sequenza orizzontale, la distanza orizzontale uniforme è determinata da una formula del parametro OBJPROP_XDISTANCE.

La formula OBJPROP_YDISTANCE per la spaziatura verticale uniforme è relativamente semplice poiché tutti gli elementi delle formule successive delle intestazioni, il valore di input corrispondente di OBJPROP_YDISTANCE e i multipli di sequenza pari e la dimensione del font rimangono costanti nella formula.

Le formule successive di OBJPROP_XDISTANCE per la spaziatura orizzontale uniforme devono tenere conto di una variabile di aggiornamento in tempo reale sotto forma di lunghezze di intestazione dell'account precedenti che aumentano o diminuiscono in base ai cambiamenti nel margine dell'account, profitto o perdita, saldo, ecc.

La distanza orizzontale uniforme è mantenuta includendo nella formula i seguenti parametri:

  1. Le formule successive di OBJPROP_XDISTANCE mantengono la spaziatura orizzontale uniforme ottenendo un conteggio totale di tutte le lunghezze delle stringhe nelle intestazioni precedenti e moltiplicando per un moltiplicatore di dimensione del font adeguato.
  2. Le sovrapposizioni orizzontali del font sono evitate poiché ogni spazio uniforme aumenta o diminuisce proporzionalmente al cambiamento della dimensione del font.
  3. Lo spostamento dell'asse orizzontale di OBJPROP_XDISTANCE è mantenuto includendo come aggiunta il valore del parametro di input corrispondente OBJPROP_XDISTANCE.

Il codice account_info_horizontal qui sotto illustra la soluzione.

input int Left_Right_P=15; // Sinistra <-> Destra 

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],.........)
 {
  double Spacer_Mult=Font_Size*Spacing*0.1;
  ..........
  ..........
  // Lunghezza della stringa per l'intestazione Profitto
  int StLenP=StringLen(Acc_P_Header+Acc_Curr+Acc_gap_P+Acc_P_hs);
  ..........
  // Lunghezza della stringa per l'intestazione Saldo
  int StLenB = StringLen(Acc_B_Header+Acc_B_hs);
  ..........
  ..........
  // Distanza XDISTANCE per l'intestazione Equity
  ObjectSet("Acc_E_h",OBJPROP_XDISTANCE,(StLenP+StLenB)*Spacer_Mult+Left_Right_P);
  ..........
  // Distanza XDISTANCE per l'intestazione Saldo
  ObjectSet("Acc_B_h",OBJPROP_XDISTANCE,StLenP*Spacer_Mult+Left_Right_P);
  ..........
  // Distanza XDISTANCE per l'intestazione Profitto
  ObjectSet("Acc_P_h",OBJPROP_XDISTANCE,Left_Right_P);
  

Post correlati

Commento (0)