Server-Version in Opener - Seite 13

 
prostotrader:

Es gibt eine weitere Option für Kupfer (es scheint 2 und 5 zu geben),

alle anderen Futures sind entweder 3 oder 1 Monat.

Sie können automatisch einen Monat ersetzen.

Nun, wenn das der Fall ist, ist es vielleicht besser, die

TimeToString(SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME), TIME_DATE)

und ziehen Sie ein Jahr und Monat+3(1) von diesem Datum ab.

Oder Sie fügen dieses Datum in eine Struktur ein und entnehmen daraus den Monat und das Jahr. Und dann kleben Sie den Namen der Figur zusammen. Ich werde die Struktur jetzt ausprobieren.

 

Ich mochte die Art und Weise, wie sie sich durch die Struktur entwickelt hat...

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:

Ich mochte die Art und Weise, wie es durch die Struktur arbeitete...

Versuchen Sie es jetzt mit den Futures XXX-12.20

Das sollte XXXX-3,21 ergeben.

Hinzugefügt von

Und dann versuchen Sie, wenn Sie nicht nächste Futures, sondern durch Futures (NtxFutMonth = 6)

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

Versuchen Sie es jetzt für Futures XXX-12.20

Sie sollten XXXX-3.21 erhalten.

Oh! Richtig. Das ist die nächste Phase. Ich werde es einfach zu Ende bringen.

 
Alexey Viktorov:

Oh! Richtig. Das ist der nächste Schritt. Ich kümmere mich sofort darum.

:)

Was soll das bringen? Die Funktion, die ich Ihnen gegeben habe, funktioniert schon seit Jahren...

 
prostotrader:

Versuchen Sie es jetzt für Futures XXX-12.20

Das wäre dann XXXX-3.21

Hinzugefügt

Und dann versuchen Sie, wenn Sie nicht nächste Futures, sondern durch Futures (NtxFutMonth = 6)

Etwas war zu einfach. Bitte überprüfen Sie das.

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

Ich habe.

newFutures("RTS-12.19")
brachte die RTS-3.20 zurück
 
prostotrader:

:)

Was soll das bringen? Die Funktion, die ich Ihnen gegeben habe, funktioniert schon seit Jahren...

Ich habe gefragt, weil ich dachte, es gäbe eine einfache Möglichkeit. Ich zweifle nicht im Geringsten an Ihrer Funktion, aber aus meiner Sicht ist es etwas komplizierter als ich dachte.
 
Alexey Viktorov:
Ich habe gefragt, weil ich dachte, es gäbe eine einfache Möglichkeit. Ich zweifle nicht an der Funktionalität Ihrer Funktion, aber aus meiner Sicht ist sie etwas komplizierter, als ich sie mir vorgestellt habe.

OK, kein Problem.

PutNtxFutMonth = 6 auf Futures XXXX-12,20

 
prostotrader:

OK, kein Problem.

PutNtxFutMonth = 6 auf Futures XXXX-12,20

Setzen Sie es auf RTS-12.19.

newFutures("RTS-12.19", 6)

und erhielt RTS-6.20.

Ich fürchte nur, dass ich einige Feinheiten übersehen habe. Deshalb habe ich Sie gebeten, das zu überprüfen.

 
Alexey Viktorov:

Setzen Sie es auf RTS-12.19

und bekam RTS-6.20

Ich fürchte nur, dass ich einige Feinheiten übersehen habe. Deshalb habe ich Sie gebeten, das zu überprüfen.

Versuchen Sie dies.

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