[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 191

 
eddy:

il prezzo sbagliato è 1,37197000.

il prezzo corretto è 1,37197 o 1,3719, a seconda di quale DNS.

NormalizeDouble() è usato per impostare il numero di cifre dopo il punto decimale


Aggiunto NormalizeDouble() al prezzo in OrderSend(), nessun errore ora, grazie!
 
artmedia70:

Più facile di così non si può:

Mettete le funzioni stesse al di fuori della funzione start(), o alla fine di tutto il codice.



Grazie!
 
eddy:

Ho bisogno di ricordare GetTickCount sul primo tick dopo aver avviato l'indicatore, ma il codice qui sotto non funziona - il terminale si blocca. forse RefreshRates non funziona affatto in init()...?

while(true){ if(RefreshRates()) { tik=GetTickCount(); break; } Sleep(1 ); }

Qualcuno ha qualche idea su come implementare questo? Vorrei farlo in init, perché se imposto un flag all'inizio - sarà controllato ogni volta
 
eddy:
Chi ha qualche idea su come implementarlo? Voglio farlo in init, perché se si crea una bandiera all'inizio, sarà controllata ogni volta
Quando dichiarateuna variabile globale, assegnatele un valore e resettatela all'inizio. Quindi avrà un valore iniziale solo sul primo tick, prima di assegnare, e su tutti i tick successivi - il valore assegnato all'inizio. Poi puoi trasferire all'avvio tutte le azioni che vengono eseguite una volta all'avvio di Expert Advisor.
 
eddy:

Potreste consigliarmi come caricare l'indicatore su un grafico in modo programmatico?

C' è la funzione bool ServiceLoadCustomIndicator(int hwndChart,...); //hwndChart- descrittore di sistema della finestra del grafico, dove viene caricato l'indicatore.

Non so come conoscere il descrittore della finestra del grafico.

Ho solo bisogno di memorizzare GetTickCount sul primo tick dopo l'inizio dell'indicatore, ma il codice qui sotto non funziona - il terminale si blocca. Forse in init() RefreshRates non funziona affatto...?

https://docs.mql4.com/ru/windows/WindowHandle
 
granit77:
Assegnare un valore alla variabile globale nella dichiarazione e resettarla all'inizio. Allora avrà il valore originale solo sul primo tick, prima di assegnare, e su tutti i tick successivi - il valore assegnato all'inizio. Quindi tutte le azioni, che vengono eseguite una volta all'inizio dell'EA, possono essere trasferite all'inizio.

Non ho bisogno di assegnare nulla a questa variabile all'avvio.

Ho deciso di creare un indicatore separato per memorizzare i tick in una variabile globale, il cui valore sarà noto all'indicatore principale all'avvio

Zhunko, cosa succede se ci sono diverse finestre con lo stesso TF e simbolo?

 
eddy:

Non ho bisogno di assegnare nulla a questa variabile all'avvio. solo una volta per ricordare il tick.

Ho deciso di creare un indicatore separato per memorizzare i tick in una variabile globale, il cui valore sarà valutato dall'indicatore principale all'avvio

Zhunko, cosa succede se ci sono diverse finestre con lo stesso timeframe e simbolo?

Controllato molto tempo fa (puoi farlo anche tu) restituisce l'ultimo o quello attivo.
 
Zhunko: Restituisce l'ultimo o quello attivo.

cioè se nessuno di loro è attivo, restituisce l'ultimo?

Comunque, non importa, penso che quando lo si aggiunge, quello dove dovrebbe essere aggiunto è sempre attivo comunque.

 
eddy:

Comunque, non importa, penso che sia sempre attivo quando lo aggiungi comunque, dove vuoi aggiungerlo

Sì. Esattamente. Ho una funzione che restituisce i descrittori di tutte le stesse finestre del grafico in ordine Z. Non l'ha incluso nella biblioteca. Ma non servirà a molto.
 
eddy:

Non ho bisogno di assegnare nulla a questa variabile all'avvio.

Ho deciso di fare un indicatore separato per memorizzare i tick in una variabile globale, il cui valore viene riconosciuto dall'indicatore principale all'avvio

Quello che volevo dire è questo:
bool FirstStart=true;

int start(){

    if(FirstStart){
      if(RefreshRates()) tik=GetTickCount();
      FirstStart=false;
    } 
}