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

[Deleted]  
scuse
[Deleted]  
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.

[Deleted]  
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

[Deleted]  
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()