Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 705

 
exsistentia:

A quanto pare non ho spiegato accuratamente il problema. Il fatto è che c'è un ordine GBPUSD aperto (non in sospeso), il prezzo aperto è 1,61029. La funzione OrderOpenPrice, da quanto ho capito, dovrebbe restituire il prezzo aperto reale dell'ordine (1,61029), ma restituisce un valore arrotondato a 4 cifre decimali, 1,6103. Testato su diversi ordini con diversi prezzi aperti - il risultato è lo stesso: manca l'ultima cifra.


Per questo, c'è DoubleToStr(), che scriverà con cifre reali, ma scriverà con 4! Vedi la Documentazione in alto a sinistra, troverai tutto lì e imparerai molto + tutorial!

Ecco fatto:

Alert("Цена открытия ",OPP);// не так

Alert("Цена открытия ",DoubleToStr(OPP,Digits);// а так
 
borilunad:


C'è DoubleToStr() per questo, che scriverà con cifre reali, ma in questo modo scriverà con 4! Vedi la Documentazione in alto a sinistra, troverai tutto lì e imparerai molto + tutorial!

Ecco fatto:



Grazie mille! E sto leggendo il tutorial, e scrivendo un EA mentre vado avanti.

E un'altra domanda: qual è il modo più semplice per sapere che un dato ordine è chiuso (per ticket)? Devo usare la funzione OrderCloseTime o esiste una funzione speciale per questo scopo?

 
exsistentia:



Grazie mille! Sto leggendo il tutorial e scrivendo un EA mentre vado avanti.

E un'altra domanda: qual è il modo più semplice per sapere se un ordine è chiuso (per ticket)? Devo usare la funzione OrderCloseTime o esiste una funzione speciale per questo scopo?

   if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()>0) {
      // Ордер закрыт
      }

La variabile ticket dovrebbe memorizzare il numero di ticket dell'ordine che viene controllato
 
artmedia70:

La variabile ticket dovrebbe memorizzare il numero di ticket dell'ordine che viene controllato

Se l'ordine è chiuso, non dovrebbe essere trovato nella storia (MODE_HISTORY)?
 
artmedia70:

La variabile ticket dovrebbe memorizzare il numero del ticket dell'ordine che viene controllato

Grazie.

Un'altra domanda. C'è un blocco nell'EA che dovrebbe cancellare gli ordini pendenti, a seconda della chiusura degli ordini a mercato:

OrderSelect(T1,SELECT_BY_TICKET);
datetime cls1;
cls1=OrderCloseTime(); // tempo per chiudere 1 ordine
OrderSelect(T2,SELECT_BY_TICKET);
datetime cls2;
cls2=OrderCloseTime(); // tempo per chiudere 2 ordini
Alert(cls1," ",cls2);

if(cls1==0 && cls2==0) //se entrambi gli ordini sono aperti
return(0);
else
CLS++; //conferma di chiusura per uno degli ordini

if(cls1>0 && CLS==1) //cancellare gli ordini pendenti a seconda dell'ordine chiuso
OrderDelete(T3);
if(cls2>0 && CLS==1)
OrderDelete(T4);
return(0);
}

Il blocco non funziona per qualche motivo (non chiude gli ordini pendenti) e Alert mostra sempre "0 0". Ho appositamente chiuso uno degli ordini aperti ma non succede nulla. Sembra che l'EA non rilevi che un ordine è già stato chiuso e stia elaborando dati non aggiornati. Quale potrebbe essere il problema?

 
exsistentia:

Grazie.

Un'altra domanda. C'è un blocco nell'EA che dovrebbe cancellare gli ordini pendenti, a seconda della chiusura degli ordini a mercato:


Il blocco non funziona per qualche motivo (gli ordini pendenti non vengono chiusi) e Alert mostra sempre "0 0". Ho volutamente chiuso uno degli ordini aperti ma non succede nulla. È come se l'EA non rilevasse che l'ordine è già stato chiuso e stia elaborando i dati obsoleti. Quale potrebbe essere il problema?

Dove si trova il biglietto d'ordine? E da dove viene OrderCloseTime se l'ordine è ancora attivo (almeno, è selezionato tra quelli attivi dal codice)?
 
evillive:
Dove si trova il biglietto d'ordine? E da dove viene OrderCloseTime se l'ordine è ancora attivo (almeno è selezionato tra quelli attivi dal codice)?
Oh, smettila di infierire. Il pool viene ignorato in questo caso. Solo con un tempo di chiusura maggiore/uguale a zero, possiamo determinare da quale lista l'ordine è stato selezionato. È un peccato non conoscere queste basi ;)
 
evillive:

se un ordine è chiuso, non dovrebbe essere cercato nella storia (MODE_HISTORY)?
Se selezionato per indice - sì, nella storia, se selezionato per ticket pool è ignorato. Impara la matematica ;)
 
artmedia70:
Oh, smettila di infierire. Il pool viene ignorato in questo caso. Solo con il tempo di chiusura maggiore/uguale a zero si può determinare da quale lista l'ordine è stato selezionato. È un peccato non conoscere queste basi ;)


Non faccio quasi mai ricerche per biglietto, più per indice, può essere un peccato, ma cosa si può fare ;)

ma la ricerca del biglietto giusto non è citata lì, forse lo sta cercando male e poi si lamenta che il codice non funziona...

 
evillive:

Non faccio quasi mai ricerche per biglietto, più per indice, forse è un peccato, ma cosa si può fare ;)

ma cercare il biglietto giusto lì nel codice non ha portato, forse lo sta cercando male e poi si lamenta che il codice non funziona...

È un casino là fuori...