开放器中的服务器版本 - 页 13

 
prostotrader:

还有一个选项,是关于铜的(似乎有2和5)。

所有其他期货都是3个月或1个月。

你可以自动替代一个月。

好吧,如果是这样的话,也许最好是采取

TimeToString(SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME), TIME_DATE)

并从该日期拉出一个年和月+3(1)。

或者把这个日期粘在一个结构中,然后从那里取月和年。然后把人物的名字 粘在一起。我现在要试试这个结构。

 

我喜欢它通过结构变成的方式...

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:

我喜欢它通过结构工作的方式...

现在试着做期货 XXX-12.20

这应该算作XXXX-3.21

由以下人员添加

然后尝试一下,如果你想要的不是下一个期货,而是通过期货(NtxFutMonth = 6)。

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

现在试着做期货 XXX-12.20

你应该得到XXXX-3.21。

哦!对了。这是下一阶段的工作。我就完成它。

 
Alexey Viktorov:

哦!对了。这是下一步的工作。我马上去办。

:)

这有什么意义?我给你的函数已经工作了多年...

 
prostotrader:

现在试着做期货 XXX-12.20

这将是XXXX-3.21

添加

然后尝试一下,如果你想要的不是下一个期货,而是通过期货(NtxFutMonth = 6)。

有些东西出来得太容易了。请看一下。

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));
 }

我有。

newFutures("RTS-12.19")
带回了RTS-3.20
 
prostotrader:

:)

这有什么意义?我给你的函数已经工作了多年...

我问是因为我认为有一个简单的选择。我一点也不怀疑你的功能,但从我的角度来看,它比我做的要复杂一些。
 
Alexey Viktorov:
我问是因为我认为有一个简单的选择。我一点也不怀疑你的功能,但从我的角度来看,它比我做的要复杂一些。

好的,没问题。

看跌NtxFutMonth=6,期货XXXX-12.20

 
prostotrader:

好的,没问题。

看跌NtxFutMonth=6,期货XXXX-12.20

把它放在RTS-12.19上。

newFutures("RTS-12.19", 6)

并得到了RTS-6.20。

我只是担心我错过了一些微妙的东西。这就是为什么我要求你检查。

 
Alexey Viktorov:

把它放在RTS-12.19上

并得到了RTS-6.20

我只是担心我错过了一些微妙的东西。这就是为什么我要求你检查。

试试 这个

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