Versão do servidor em Opener - página 13

 
prostotrader:

Há outra opção, para o cobre (parece haver 2 e 5),

todos os outros futuros são de 3 ou 1 mês.

Você pode substituir automaticamente por um mês.

Bem, se for esse o caso, talvez seja melhor levar

TimeToString(SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME), TIME_DATE)

e puxar um ano e mês+3(1) a partir dessa data.

Ou enfie esta data em uma estrutura e tire o mês e o ano de lá. E depois colar o nome do personagem. Vou tentar a estrutura agora.

 

Eu gostei da maneira como acabou por sair através da estrutura.

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:

Gostei da forma como funcionou através da estrutura.

Agora tente para os futuros XXX-12.20

Isso deve funcionar até XXXX-3.21

Adicionado por

E então tente se você não quiser os próximos futuros, mas atravé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:

Agora tente para os futuros XXX-12.20

Você deve conseguir XXXX-3.21.

Oh! certo. Essa é a próxima fase. Vou terminá-lo.

 
Alexey Viktorov:

Oh! certo. Esse é o próximo passo. Vou direto ao assunto.

:)

Qual é o objetivo? A função que lhe dei vem trabalhando há anos...

 
prostotrader:

Agora tente para os futuros XXX-12.20

Isso seria XXXX-3.21

Adicionado

E então tente se você não quiser os próximos futuros, mas através de futuros (NtxFutMonth = 6)

Algo saiu muito fácil. Confira, 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));
 }

Eu tenho.

newFutures("RTS-12.19")
trouxe de volta o RTS-3.20
 
prostotrader:

:)

Qual é o objetivo? A função que lhe dei vem trabalhando há anos...

Eu perguntei porque pensava que havia uma opção simples. Não duvido em nada de sua função, mas do meu ponto de vista é um pouco mais complicado do que eu.
 
Alexey Viktorov:
Eu perguntei porque pensava que havia uma opção simples. Não duvido em nada da funcionalidade de sua função, mas do meu ponto de vista é um pouco mais complicado do que eu.

OK, sem problemas.

ColocarNtxFutMonth = 6 em futuros XXXX-12,20

 
prostotrader:

OK, sem problemas.

ColocarNtxFutMonth = 6 em futuros XXXX-12,20

Coloque-o no RTS-12.19.

newFutures("RTS-12.19", 6)

e conseguiu o RTS-6.20.

Só tenho medo de ter perdido algumas sutilezas. Foi por isso que lhe pedi para verificar.

 
Alexey Viktorov:

Colocá-lo no RTS-12.19

e conseguiu o RTS-6.20

Só estou com medo de ter perdido algumas sutilezas. Foi por isso que lhe pedi para verificar.

Experimente este aqui.

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