He echado de menos una funcionalidad similar a la de iBarShift para MT4. ¿Puede decirme cómo hacerlo?
¿Y por lo que tengo entendido deberías usar CopyTime en lugar de Time[10]?
El análogo de ibarshift:
int iBarOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
análogo de Time[]:
Time( int i )
Hay muchas más cosas por ahí que te serán útiles:
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 alguien está interesado, he encontrado una alternativa.
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); }
Según mis mediciones, la aceleración en comparación con la variante CopyTime es de 2 a 7 veces (dependiendo de los datos de entrada). Si tienes algún comentario o fallo, escríbenos.
Si alguien está interesado, he encontrado una alternativa.
Según mis mediciones, la aceleración en comparación con la variante CopyTime es de 2 a 7 veces (dependiendo de los datos de entrada). Si tienes algún comentario o fallo, escríbenos.
Gracias. Lo probaré.
O tal vez esta es la forma correcta de hacerlo ahora:
O tal vez esto sea más correcto ahora:
Y aún más rápido y correcto (el primer parámetro debe ser NULL, no funciona con cero)
int bar = Bars(NULL, 0, t, 32000000000);
Porque no hay necesidad de ejecutar la funciónTimeCurrent() innecesariamente
32000000000 no es del momento actual, sino casi del momento de 3000
Y aún más rápido y correcto (el primer parámetro debe ser NULL, no funciona con cero)
Porque no hay necesidad de ejecutar la funciónTimeCurrent() innecesariamente
32000000000 no es del momento actual, sino casi del momento de 3000
¿Y qué pasa con el -1? Este es un momento importante...
¿Y el -1? Es un punto importante...
No estoy seguro de qué se trata.
La función Bars devuelve el número de barras. Cuando queramos obtener el índice de una barra con índice 9 (perdón por la tautología), devolverá 10, porque el índice de la primera barra es 0.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
He echado de menos una funcionalidad similar a la de iBarShift para MT4. ¿Puede decirme cómo hacerlo?
¿Y por lo que tengo entendido deberías usar CopyTime en lugar de Time[10]?