Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 304

 
Alexey Viktorov:
Artyom Trishkin:
Grazie, perdonatemi, non ho formulato correttamente il mio pensiero.
Voglio ottenereil prezzo di apertura dell'anno, non specificando una data particolare, ma passando un indice, come se ci fosse una barra di 1 anno nel terminale. L'ultimo mese ha l'indice 1, anche fare l'indice dell'anno scorso 1.Help per implementare questo?
 
mila.com:
Grazie, perdonatemi, ho formulato il pensiero in modo errato.
Voglio ottenereil prezzo di apertura dell'anno, non specificando una data specifica, ma passando un indice, come se ci fosse una barra di 1 anno nel terminale. Il mese scorso ha l'indice 1, allo stesso modo per fare l'indice 1 dell'anno scorso.

Molto semplice.

double f(int numYear)
 {
   MqlDateTime newYear = {0}; // Обнулить обязательно.
   newYear.year = numYear;
   double priceOpenYear[1];
   CopyOpen(_Symbol, PERIOD_MN1, StructToTime(newYear), 1, priceOpenYear);
   return(priceOpenYear[0]);
}

E non dipende in alcun modo dal giorno lavorativo/non lavorativo. PERIOD_MN1 è sempre il primo giorno del mese, anche PERIOD_W1 è sempre domenica.

 

Ragazzi!

Uno dei clienti si sta lamentando che gli EA cadono quando il prezzo si muove bruscamente. Questo è successo con diverse società di intermediazione.

Non c'è niente nel loro codice che possa causare la cancellazione. Io stesso non ho mai affrontato questo problema.

Quale può essere il problema?

 
Vladimir Tkach:

Ragazzi!

Uno dei clienti si sta lamentando che gli EA cadono quando il prezzo si muove bruscamente. Questo è successo con diverse società di intermediazione.

Non c'è niente nel loro codice che possa causare la cancellazione. Io stesso non ho mai affrontato questo problema.

Quale può essere il problema?


Non vedi niente nei registri? Neanche per lo scarico?

 
Aleksey Vyazmikin:

Non c'è niente di chiaro nei registri? Neanche per lo scarico?


2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1: rimosso

 
Vladimir Tkach:

2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1: rimosso


Se l'esperto non usa modelli - si riapre da solo sul suo grafico, allora non ho ipotesi...

 
Aleksey Vyazmikin:

Se l'esperto non usa modelli - riapre sul suo grafico stesso, allora non ho ipotesi...

Vladimir Tkach:

2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1: rimosso

C'è abbastanza memoria libera? Expert non intasa la RAM con nulla?

 

Buona sera.

Per favore, ditemi perché la funzioneOrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) non funziona.

Restituisce un errore: l'espressione non può essere valutata. Biglietto - il valore è riempito.

Non riesco a capire niente ((((

Grazie.

 
rabanik:

Buona sera.

Per favore, ditemi perché la funzione OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) non funziona.

Restituisce un errore: l'espressione non può essere valutata. Biglietto - il valore è riempito.

Non riesco a capire niente ((((

Grazie.

Quando si seleziona un ordine per ticket, non abbiamo bisogno di specificare pool - MODE_TRADES è ridondante qui - questo parametro viene ignorato quando si seleziona per ticket e l'ordine viene selezionato da una delle due liste - dalla lista delle posizioni chiuse o dalla lista delle posizioni di mercato - a seconda che la posizione sia chiusa o meno.

Dopo aver selezionato con successo un ordine in base al ticket, per capire da quale delle due liste l'ordine è stato selezionato, è necessario controllare il tempo di chiusura della posizione - se è superiore a zero, allora l'ordine è già stato chiuso ed è stato selezionato dalla lista degli ordini storici, altrimenti - l'ordine è ancora sul mercato.

Ma per capire qual è il tuo errore, devi allegare il codice - dare più informazioni, perché in questa linea, in linea di principio, non c'è nessun errore (tranne che non controlli il risultato di ritorno della funzione, usi un modificatore che è ignorato in questo caso e non c'è ";" dopo la parentesi di chiusura).

 
Alexey Viktorov: Molto semplice.

Grazie, ma per me restituisce zero. Quale potrebbe essere la ragione?

Comment("OpenYear : ",DoubleToString(f(1)));