Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 535
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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?