La situazione è la seguente: se c'è una barra nel grafico, corrisponde a una cella nel buffer dell'indicatore. Finché non scrivete qualcosa in questa cella, essa memorizzerà dei rifiuti.
Perché non fa schifo in MT4 ma semplicemente non visualizza l'indicatore sotto questa barra?
Quando si divide un intero (int, long, datetime ecc.) il risultato è un intero, cioè il resto viene scartato. 00:00 di oggi e 23:59:59 di ieri, la differenza sarà di 1 giorno.
In primo luogo non lo è - è dimostrato sperimentalmente nell'indicatore.
In secondo luogo, come si ottiene un 1 - mostratemelo matematicamente, dato che inizialmente stiamo calcolando in secondi.
Alexey Kozitsyn: Esattamente allo stesso modo dell'azzeramento dei tipi semplici. Assegnando loro un valore di 0. Una volta che i campi richiesti sono stati assegnati valori 0 - utilizzate l'operazione inversa StructToTime().
Aleksey Lebedev: При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks-:
Prima di tutto non lo è - provato sperimentalmente nell'indicatore.
Non discutere le basi).
-Aleks-:
In secondo luogo come si ottiene 1 - mostratemelo matematicamente, dato che inizialmente abbiamo il calcolo in secondi.
Usate la conversione della struttura se è più facile da capire.
Ciò che è compreso è ciò che è stato trattato. Non ho provato il tuo codice per eseguirlo, ma credo che tu l'abbia fatto da solo, quindi spiegami in modo poco intelligente come funziona:
86401/86400-86400/86400 è uguale a 1, se per le regole della matematica 1.000012-1=0.000012 , mentre int dovrebbe arrotondare a un numero intero, cioè 0.
Ciò che è compreso è ciò che è stato trattato. Non ho provato il tuo codice da eseguire, ma penso che tu stesso l'abbia fatto, quindi spiegami in modo poco intelligente come funziona:
86401/86400/86400 è uguale a 1, se secondo le regole della matematica 1.000012-1=0.000012 , e int dovrebbe arrotondare al numero intero, cioè 0.
ma fallo)
L'inizio del giorno 00:00:00 è diviso per 86400 senza resto, il precedente è almeno 1 secondo meno. Arrotondato - il resto della divisione viene scartato, non l'intera espressione.
L'inizio del giorno 00:00:00 è diviso per 86400 senza resto, il precedente è almeno 1 secondo in meno. Arrotondato - il resto della divisione viene scartato, non l'intera espressione.
86400/86400=1
86399/86400=0
quindi sono sorpreso che il particolare arrotondamento avvenga all'interno di un'espressione - pensavo che fosse quando ad una variabile veniva assegnato un valore che il valore dopo il punto decimale veniva scartato.
Devi specificarlo subito :) .
La situazione è la seguente: se c'è una barra nel grafico, corrisponde a una cella nel buffer dell'indicatore. Finché non scrivete qualcosa in questa cella, essa memorizzerà dei rifiuti.
Quando si divide un intero (int, long, datetime ecc.) il risultato è un intero, cioè il resto viene scartato. 00:00 di oggi e 23:59:59 di ieri, la differenza sarà di 1 giorno.
In primo luogo non lo è - è dimostrato sperimentalmente nell'indicatore.
In secondo luogo, come si ottiene un 1 - mostratemelo matematicamente, dato che inizialmente stiamo calcolando in secondi.
Esattamente allo stesso modo dell'azzeramento dei tipi semplici. Assegnando loro un valore di 0. Una volta che i campi richiesti sono stati assegnati valori 0 - utilizzate l'operazione inversa StructToTime().
Azzerato:
MqlDateTime str1;
datetime Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
str1.hour=0;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));
Aleksey Lebedev:
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks-:
Prima di tutto non lo è - provato sperimentalmente nell'indicatore.
Non discutere le basi).
-Aleks-:
In secondo luogo come si ottiene 1 - mostratemelo matematicamente, dato che inizialmente abbiamo il calcolo in secondi.
Usare la conversione attraverso la struttura, se è più facile da capire.
Non sfidare le basi)
Usate la conversione della struttura se è più facile da capire.
Ciò che è compreso è ciò che è stato trattato. Non ho provato il tuo codice per eseguirlo, ma credo che tu l'abbia fatto da solo, quindi spiegami in modo poco intelligente come funziona:
86401/86400-86400/86400 è uguale a 1, se per le regole della matematica 1.000012-1=0.000012 , mentre int dovrebbe arrotondare a un numero intero, cioè 0.
Ciò che è compreso è ciò che è stato trattato. Non ho provato il tuo codice da eseguire, ma penso che tu stesso l'abbia fatto, quindi spiegami in modo poco intelligente come funziona:
86401/86400/86400 è uguale a 1, se secondo le regole della matematica 1.000012-1=0.000012 , e int dovrebbe arrotondare al numero intero, cioè 0.
ma fallo)
L'inizio del giorno 00:00:00 è diviso per 86400 senza resto, il precedente è almeno 1 secondo meno. Arrotondato - il resto della divisione viene scartato, non l'intera espressione.
86400/86400=1
86399/86400=0
e poi eseguirlo)
L'inizio del giorno 00:00:00 è diviso per 86400 senza resto, il precedente è almeno 1 secondo in meno. Arrotondato - il resto della divisione viene scartato, non l'intera espressione.
86400/86400=1
86399/86400=0
Ragazzi! È possibile visualizzare l'indicatore sul grafico in modo programmatico? O solo a mano?