
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
Supponiamo di avere
Sappiamo chestart_time dovrebbe essere2018.04.28 23:00
Quindi si scopre che il tempo è sbagliato qui?
Alexey, dai un'occhiata al mio esempio. Vi ho mostrato linea per linea come il tempo orario che passate viene convertito al tempo più vicino dalla barra corrente.
Impossibile trovare una dichiarazione del limite del tipo di variabile. La mia vista è debole.
Posto 50, procedura OnCalculate
Posto 50, procedura OnCalculate
Grazie, ma qual è il 50? Puoi aiutarmi con un link?
Grazie, ma qual è il 50? Puoi aiutarmi con un link?
https://www.mql5.com/ru/forum/262864/page5
Il link è solo alla pagina. C'è scritto #50 nel titolo del post. Il tuo #74 ))
Hai scritto primalimit=start_index-stop_index+1, cioèlimit==1, e poi dove la divisione per 2 èlimit=(int)(stop_time-start_time)/PeriodSeconds(_Period). Uno non viene aggiunto. Lo zero è diviso per il periodo.
Giusto,limit=start_index-stop_index+1è per i>0, cioè per il calcolo della storia, e limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) è per il calcolo sulla barra corrente.
E la cosa è, in effetti, il motivo per cui il nostro tempo è così storto - se abbiamo un lasso di tempo di un'ora, le date devono essere rotonde, sia all'inizio che alla fine - questo è il vero problema, che l'ora della barra sulla data di inizio è in qualche modo sbagliata!!!
Forse qui c'è un problema.
Poiché start_time è corretto a questo punto
datetime start_time=rates[i].time;
Alexey, non c'è nessun "alla fine". È solo una quantizzazione. Esattamente alle 18:00 la barra si è aperta, ha mostrato il minimo e il massimo e ha chiuso tranquillamente, nello stesso secondo.
Per esempio, la barra si è aperta alle 18:00, quindi il tempo iniziale(start_time) sarà 18:00 e il tempo finale(stop_time) dovrebbe essere 19:00 per il timeframe orario. Così, l'indice tra loro sarà diverso sul timeframe M1. E nel codice, l'indice iniziale e quello finale sono uguali, il che non è vero.
Giusto,limit=start_index-stop_index+1è per i>0, cioè per il calcolo della storia, e limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) è per il calcolo sulla barra corrente.
E la cosa è, in effetti, il motivo per cui il nostro tempo è così storto - se abbiamo un lasso di tempo di un'ora, le date devono essere rotonde, sia all'inizio che alla fine - questo è il vero problema, che l'ora della barra sulla data di inizio è in qualche modo sbagliata!!!
Forse qui c'è un problema.
Poiché start_time è corretto a questo punto
E perché sono rotondi, se prima si fa CopyRates dal timeframe orario (risultano numeri rotondi), poi si passa alla proceduraCreateFigure time dal timeframe corrente (tempo, che diventa Time) e Rates dal timeframe orario, e poi si cerca un indice nell'array del tempo corrente?start_index=ArrayBsearch(Time,start_time);