Versión del servidor en Opener - página 13

 
prostotrader:

Hay otra opción, para el cobre (parece que hay 2 y 5),

todos los demás futuros son de 3 o 1 mes.

Puede sustituir automáticamente un mes.

Bueno, si ese es el caso, tal vez sea mejor tomar

TimeToString(SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME), TIME_DATE)

y sacar el año y el mes+3(1) de esa fecha.

O bien, pegar esta fecha en una estructura y tomar el mes y el año a partir de ahí. Y luego pegar el nombre del personaje. Voy a probar la estructura ahora.

 

Me gustó la forma en que resultó a través de la estructura...

string newFutures(const string aSymbol, int month = 3)
 {
  MqlDateTime mqlDateTime;
  TimeToStruct(SymbolInfoInteger(aSymbol, SYMBOL_EXPIRATION_TIME), mqlDateTime);    // Заполнили структуру датой экспирации фьючерса
  string symb = StringSubstr(aSymbol, 0, StringFind(_Symbol, "-")+1);               // Вытащили имя символа вместе с дефисом
  return(symb+(string)(mqlDateTime.mon+month)+"."+(string)(mqlDateTime.year%1000)); // Вернули составленное имя следующего фьючерса
 }
 
Alexey Viktorov:

Me gustó la forma en que trabajó a través de la estructura...

Ahora intente los futuros XXX-12.20

Eso debería dar como resultado XXXX-3.21

Añadido por

Y luego intente si quiere no próximos futuros, sino a través de futuros (NtxFutMonth = 6)

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
 
prostotrader:

Ahora intente los futuros XXX-12.20

Debería obtener XXXX-3.21.

¡Ah! Bien. Esa es la siguiente fase. Lo terminaré.

 
Alexey Viktorov:

¡Ah! Bien. Ese es el siguiente paso. Me pondré a ello.

:)

¿Qué sentido tiene? La función que te di lleva años funcionando...

 
prostotrader:

Ahora intente los futuros XXX-12.20

Eso sería XXXX-3.21

Añadido

Y luego intente si quiere no próximos futuros, sino a través de futuros (NtxFutMonth = 6)

Algo salió demasiado fácil. Compruébalo, por favor.

string newFutures(const string aSymbol, int month = 3) // Сюда можно вставить и 1 и 6
 {
  MqlDateTime mqlDateTime;
  TimeToStruct(SymbolInfoInteger(aSymbol, SYMBOL_EXPIRATION_TIME)+month*PeriodSeconds(PERIOD_MN1), mqlDateTime);// Получилось время экспирации следующего фьючерса
  string symb = StringSubstr(aSymbol, 0, StringFind(_Symbol, "-")+1);
  return(symb+(string)(mqlDateTime.mon)+"."+(string)(mqlDateTime.year%1000));
 }

Lo he hecho.

newFutures("RTS-12.19")
trajo de vuelta el RTS-3.20
 
prostotrader:

:)

¿Qué sentido tiene? La función que te di lleva años funcionando...

Lo pregunté porque pensé que había una opción sencilla. No dudo en absoluto de su función, pero desde mi punto de vista es un poco más complicado que yo.
 
Alexey Viktorov:
Lo pregunté porque pensé que había una opción sencilla. No dudo en absoluto de la funcionalidad de tu función, pero desde mi punto de vista es un poco más complicada de lo que yo hacía.

Bien, no hay problema.

PonerNtxFutMonth = 6 en futuros XXXX-12.20

 
prostotrader:

Bien, no hay problema.

PonerNtxFutMonth = 6 en futuros XXXX-12.20

Ponlo en RTS-12.19.

newFutures("RTS-12.19", 6)

y obtuve RTS-6.20.

Me temo que me he perdido algunas sutilezas. Por eso te pedí que lo comprobaras.

 
Alexey Viktorov:

Póngalo en RTS-12.19

y obtuve RTS-6.20

Me temo que me he perdido algunas sutilezas. Por eso te pedí que lo comprobaras.

Prueba con este.

Current Next Futures
Current Next Futures
  • www.mql5.com
Cкрипт с тремя независимыми функциями для определения текущего (ближайшего) фьючерса рынка FORTS. В параметрах вводится короткое наименование фьючерса, например br (можно мелким шрифтом). На выходе полное...