Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 883

 
Askr:
Come fa MT5 a scaricare l'archivio delle quote? In MT4 per esempio F2 e poi si preme refresh, ma qui?

Non è necessario scaricare nulla su MetaTrader 5. Puoi usare le quotazioni per il server di trading a cui sei connesso. Se vuoi puoi usareCopyRates, se vuoi puoi usareCopyTicks.

 
Askr:
Come fa MT5 a scaricare l'archivio delle quotazioni? In MT4 ad esempio F2 e poi si preme update, ma qui?

Non puoi farlo direttamente. A meno che non si crei un simbolo personalizzato per il quale è possibile importare la storia. Il simbolo personalizzato può essere usato solo per lavorare con la storia. Non vi permetterà di fare trading con esso.

 
Ihor Herasko:

E se l'EA non era attivo in quel momento? Dopo tutto, vorremmo ottenere i dati dalla cronologia dell'account. Ma questo, purtroppo, non può essere fatto in modo univoco. Si può fare solo con molte riserve.

È strano che gli sviluppatori non abbiano implementatoOrderCloseTime() in MT5. A quanto pare, c'era una buona ragione per farlo).

 
lil_lil:

È strano che gli sviluppatori non abbiano creatoOrderCloseTime() in MT5. A quanto pare, c'erano ragioni serie per questo).

Perché l'ordine ha un significato diverso in termini di MT5 e Mql5. Per trovare il tempo di chiusura di una posizione, dobbiamo selezionare gli ordini e le operazioni di questa posizione, trovare tra loro un'operazione con il modificatore DEAL_ENTRY_OUT e il tempo di questa operazione sarà uguale alla chiusura della posizione.

 

Buon pomeriggio, per favore consigliatemi, non posso fare una costruzione per la seguente condizione: l'indicatore è avviato, i parametri di prezzo adatti appaiono nella candela, un'indicazione grafica è disegnata, ma diciamo, se è ancora lontano prima che la candela si chiuda, l'indicatore può rilevare un'altra combinazione di candele in questo luogo. La domanda è come scrivere il codice nel processo di ogni secondo monitoraggio in modo che rimuova il risultato precedente quando la condizione in questa candela smette di funzionare?

Qui c'è un esempio corretto di rendering, ma se dovessi eseguire il tester qui, mi darebbe una lettura candela errata. Come si risolve il problema?

E un'altra domanda - come fare un avviso basato sul seguente concetto di design:

Compito - dato: TF 1 ora.

La condizione - per eseguire la parte di ricerca dell'indicatore solo, diciamo, dopo 55 minuti e fino a 60 minuti della candela corrente, e poi riavviare il ciclo.

Come implementare questo costrutto?

 
clickaider:

Buon pomeriggio, per favore consigliatemi, non riesco a fare una costruzione per la seguente condizione: l'indicatore parte, i parametri di prezzo adatti appaiono nella candela, viene disegnata un'indicazione grafica, ma diciamo, se la candela è lontana dalla chiusura, l'indicatore può rilevare un'altra combinazione di candele in questo luogo. La domanda è come scrivere il codice nel processo di ogni secondo monitoraggio in modo che rimuova il risultato precedente quando la condizione in questa candela smette di funzionare?

Qui c'è un esempio corretto di rendering, ma se dovessi eseguire il tester qui, mi darebbe una lettura candela errata. Come posso rimediare?

1. Il tester funzionava e funziona correttamente, senza errori.

2. errore nella tua comprensione del processo di test: quando si verifica la prima esecuzione dell'indicatore o della cronologia di paginazione (ricorda, il segno di questo è prev_calculated==0), fai il giro di tutte le barre in un ciclo. Quindi, in questo ciclo si usa arrays-timeseries

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])

che, per ogni i-esimo membro del ciclo, ha solo UN valore Open, High, Low e Close.

Ma quando tutte le barre sono passate, il tester inizia a lavorare in modalità tick su ogni barra - ecco perché puoi vedere come High sale e Low scende.

 
Vladimir Karputov:

1. il tester ha funzionato e funziona correttamente, non ci sono errori.

2) C'è un errore nella tua comprensione del processo di test: quando si verifica la prima esecuzione dell'indicatore o la paginazione della storia (ricorda, il segno di questo è prev_calculated==0) si bypassano tutte le barre nel ciclo. Quindi, in questo ciclo si usa arrays-timeseries

che, per ogni i-esimo membro del ciclo, ha solo UN valore Open, High, Low e Close.

E quando tutte le barre sono passate, il tester inizia a lavorare su ogni barra in modalità tick - ecco perché puoi vedere come High sale e Low scende.

Sì, sono d'accordo che quando il tester parte, il risultato è diverso a causa del riempimento dei valori di prezzo, ma la domanda è come inserire una condizione quando in una candela, per esempio, prima si forma un pattern, ma alla fine ne appare un altro ma non può essere sostituito con un altro indicatore di entrata perché non è scritta la condizione appropriata. Come specificarlo?

if(Cmp(shadow_upper_1,shadow_lower_0)<0 && body_size_0 < body_size_1 && shadow_lower_0 >= 0.7*shadow_upper_0 && 8*body_size_0 >= shadow_lower_0 && 7*body_size_0 <= shadow_upper_0 && close_0 >= Upper1_0 && close_0 <= body_Upper_Upper1_mediane75_0 && Upper1_1 >= Upper1_2)
         if(InpEnablePAT_DOJIUP_UPPER1) DrawPattern(index,PATTERN_TYPE_DOJIUP_UPPER1,high,low,time);

Ecco il codice che forma l'indicazione della candela, ma come renderla ridisegnabile?

 
clickaider:

Sì, sono d'accordo che quando si esegue il tester il risultato è diverso a causa del riempimento dei valori di prezzo, ma la questione è come mettere una condizione nella costruzione, quando in una candela, per esempio, prima si forma un pattern, ma alla fine appare un altro pattern, ma non può essere sostituito da un altro indicatore di entrata, perché non è prescritta la condizione appropriata. Come specificarlo?

Ecco il codice che forma l'indicazione della candela, ma come renderla ridisegnabile?

Memorizza il numero della barra nell'indice. Controllate prima di disegnare. Se c'è un oggetto sulla barra, cancellalo. ObjectDelete.

 
clickaider:

Sì, sono d'accordo che quando si esegue il tester il risultato è diverso a causa del riempimento dei valori di prezzo, ma la questione è come mettere una condizione nella costruzione, quando in una candela, per esempio, prima si forma un pattern, ma alla fine appare un altro pattern, ma non può essere sostituito da un altro indicatore di entrata, perché non è prescritta la condizione appropriata. Come specificarlo?

Ecco il codice che forma l'indicazione della candela, ma come renderla ridisegnabile?

Solo per fornire tre stati:

  • Disegna il modello 1
  • Disegna il modello 2
  • non disegnare nulla (per esempio, per DRAW_ARROW passate"0" nel buffer dell'indicatore, se avete scritto

//--- установим пустое значение 
   PlotIndexSetDouble(индекс_построения_DRAW_ARROW,PLOT_EMPTY_VALUE,0);
 
Vladimir Karputov:

Basta fornire tre stati:

  • disegnare il modello 1
  • disegnare il modello 2
  • non disegnare nulla (per esempio, per DRAW_ARROW si passa"0" al buffer dell'indicatore, se avete scritto

Ti ho mandato il codice sorgente, potresti vedere dove metterlo?
File:
PatternsBB.ex5  81 kb