[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 346

 
scuse
 
Stepan241 >> :

All'inizio dello script si scrive

#proprietà show_inputs

extern double Lot=0.1

Dopo di che, quando lo script è attaccato alla finestra del simbolo, apparirà una finestra di dialogo.

Ho capito. Ma non è quello di cui ho bisogno. Con questi comandi apparirà una finestra di dialogo - con le impostazioni generali di EA e le impostazioni correnti dello script, e ho chiesto se non c'è una funzione simile, che potrebbe essere usata per emettere DO SOLO con le impostazioni dello script in una volta.

 
Potete dirmi come fare in modo che tutti gli ordini aperti si chiudano all'ora specificata?
 
JackaLrus писал(а) >>

Ho capito. Ma non è quello di cui ho bisogno. Con questi comandi apparirà una finestra di dialogo - con le impostazioni generali di EA e le impostazioni correnti dello script, e ho chiesto se non c'è una funzione simile, che potrebbe essere usata per emettere DO SOLO con le impostazioni dello script in una volta.

Solo MetaEditor allora.

 
vik-777 >> :
Potreste consigliarmi come chiudere tutti gli ordini aperti in un momento specifico?

se (HourTime[0]=12)_CloseAllOrder

Vedere la funzione _CloseAllOrder nella pagina precedente o nella pagina precedente

 
Stepan241 >> :

se (HourTime[0]=12)_CloseAllOrder

per la funzione _CloseAllOrder stessa, vedere l'ultima pagina o la pagina precedente

Grazie, la funzione è molto utile

 

Cari esperti,

Si prega di consigliare qual è la ragione di questo risultato:

gist:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

stampa "c=3 q=2"

domanda: come fa ad avere due su tre?

il fatto è che se sostituisco 0,3 con 0,4 o qualsiasi altra frazione, risolve il problema come previsto

per esempio

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4"

Domanda: come fa ad avere due su tre?

provare a compilare, forse il mio computer non può contare (solo sciocco...)

 
mukata >> :

Cari esperti,

Si prega di consigliare qual è la ragione di questo risultato:

gist:

int start()
{
//----
double c;
int q;
c=0.3/0.1;
q=c;
Print("c=",c," q=",q);
//----
return(0);
}

stampa "c=3 q=2"

domanda: come fa ad avere due su tre?

il fatto è che se sostituisco 0,3 con 0,4 o qualsiasi altra frazione, risolve il problema come previsto

per esempio

int start()
{
//----
double c,v;
int q,w;
c=0.3/0.1;
v=0.4/0.1;
q=c;
w=v;
Print("c=",c," q=",q," v=",v," w=",w);
//----
return(0);
}

"c=3 q=2 v=4 w=4"

Domanda: come fa ad avere due su tre?

Prova a compilarlo, forse il mio computer non sa calcolare (è stupido...)


Non è un'assurdità, solo un comune errore di arrotondamento quando si lavora con i numeri reali.

Nel primo caso, per esempio, c è uguale a 2,999999999, l'output è arrotondato, cioè 3, ma quando si assegna a un tipo intero la parte frazionaria viene scartata.

 
splxgf >> :

Questo non è un'assurdità, sono errori di arrotondamento comuni quando si tratta di numeri reali.

Nel primo caso, per esempio, c è uguale a 2,99999999999...

come può 2.99999999 essere 2.9999? 0,3/0,1=3 esattamente, non è che sto dividendo 1 per 3 e dovrebbe essere 0,33333...

ma quando si assegna a un tipo intero, la parte frazionaria viene scartata.

A un tipo intero viene assegnato un valore c, che è chiaramente uguale a tre, senza parti frazionarie. Non c'è niente da scartare...

La risposta è sbagliata al 100%.

altre opzioni?

 
mukata >> :


Non vedo come 2,9999 possa essere 2,9999? 0,3/0,1=3 anche, non è che sto dividendo 1 per 3 e dovrebbe essere 0,33333...


Questo è solo apparentemente esatto, mentre la rappresentazione della macchina può assumere valori diversi. Cioè 2,9999, 3 o 3,00000001


Per sbarazzarsi di questi malintesi, MQL ha la funzione NormalizeDouble()

Motivazione: