La fonctionnalité similaire à iBarShift pour MT4 me manquait. Pouvez-vous me dire comment faire ?
Et d'après ce que j'ai compris, vous devriez utiliser CopyTime au lieu de Time[10] ?
L'analogue de ibarshift :
int iBarOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
analogue de Time[] :
Time( int i )
Il y a beaucoup d'autres choses qui peuvent être utiles :
double iHigh(string symbol,int tf,int ind) double High( int i ) double iLow(string symbol,int tf,int ind) double Low( int i ) double iClose(string symbol,int tf,int ind) double Close( int i ) double iOpen(string symbol,int tf,int ind) double Open( int i ) double HighOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) double LowOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) double CloseOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) double OpenOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) string SPeriod(ENUM_TIMEFRAMES tf) //символьное представление периода datetime iTime( const string symbol, int tf, int ind ) //+------------------------------------------------------------------+ //| Аналог Bars(), не требует предварительной синхронизации истории | //| Вход : symbol - символ в терминале | //| timeframe - таймфрейм | //| Выход : нет | //| Прим. : нет | //+------------------------------------------------------------------+ int BarsSinh( string symbol,ENUM_TIMEFRAMES timeframe ) //+------------------------------------------------------------------+ //| Произвести синхронизацию таймсерии с историей | //| Вход : symbol - символ в терминале | //| tf - таймфрейм | //| Выход : нет | //| Прим. : нет | //+------------------------------------------------------------------+ void SynhronizeSeries( string symbol, ENUM_TIMEFRAMES tf ) //+------------------------------------------------------------------+ //| Проверить наличие истории на дату start_date, если остуствует, | //| то произвести попытку загрузки | //| Вход : symbol - символ в терминале | //| period - таймфрейм | //| start_date - дата проверки истории | //| Выход : код результата выполнения операции подробнее | //| см. https://www.mql5.com/ru/docs/series/timeseries_access | //| Прим. : нет | //+------------------------------------------------------------------+ int CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date) //+------------------------------------------------------------------+ //| возвращает строкое значение периода | //+------------------------------------------------------------------+ string GetPeriodName(ENUM_TIMEFRAMES period)
Si quelqu'un est intéressé, j'ai trouvé une alternative.
int iBarShiftFast(string symbol, ENUM_TIMEFRAMES timeframe, datetime time) { datetime lastBar; SeriesInfoInteger(symbol, timeframe, SERIES_LASTBAR_DATE, lastBar); return(Bars(symbol, timeframe, time, lastBar) - 1); }
D'après mes mesures, l'accélération par rapport à la variante CopyTime est de 2 à 7 fois (selon les données d'entrée). Si vous avez des commentaires ou des bugs, veuillez nous écrire.
Si quelqu'un est intéressé, j'ai trouvé une alternative.
D'après mes mesures, l'accélération par rapport à la variante CopyTime est de 2 à 7 fois (selon les données d'entrée). Si vous avez des commentaires ou des bugs, veuillez nous écrire.
Merci. Je vais l'essayer.
Ou peut-être que c'est la bonne façon de faire maintenant :
Ou peut-être que c'est plus correct maintenant :
Et encore plus rapide et plus correct (le premier paramètre doit être NULL, cela ne fonctionne pas avec zéro)
int bar = Bars(NULL, 0, t, 32000000000);
Parce qu'il n'est pas nécessaire d'exécuter inutilement la fonctionTimeCurrent()
32000000000 n'est pas du moment présent, mais presque du moment de 3000
Et encore plus rapide et plus correct (le premier paramètre doit être NULL, cela ne fonctionne pas avec zéro)
Parce qu'il n'est pas nécessaire d'exécuter inutilement la fonctionTimeCurrent()
32000000000 n'est pas du moment présent, mais presque du moment de 3000
Et que dire de -1 ? C'est un moment important...
Et pour -1 ? C'est un point important...
Je ne suis pas sûr de savoir de quoi il s'agit ?
La fonction Bars renvoie le nombre de barres. Lorsque nous voulons obtenir l'indice d'une barre d'indice 9 (désolé pour la tautologie), il retournera 10, car l'indice de la première barre est 0.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
La fonctionnalité similaire à iBarShift pour MT4 me manquait. Pouvez-vous me dire comment faire ?
Et d'après ce que j'ai compris, vous devriez utiliser CopyTime au lieu de Time[10] ?