← К каталогу
Исходный код · ID 2353

cexpirations.mqh

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Библиотека на языке MQL, предоставляющая функции для работы с фьючерсными контрактами и их сроками истечения. Позволяет по короткому имени инструмента определять текущий, следующий и последний фьючерсные контракты.

Включает функции для расчёта оставшегося времени до экспирации текущего инструмента в днях, часах или минутах, а также для преобразования этой длительности в читаемую строку формата дней, часов и минут.

Библиотека использует стандартные функции платформы для работы с символами и их информацией, включая выбор символа и получение времени истечения.

Состав библиотеки

Классов: 0 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 5

Функции
Функция string CurrFutures(string short_name)

Возвращает текущий (активный) фьючерсный контракт по короткому имени инструмента, находя первый символ с истекающим сроком действия в будущем.

Функция string NextFutures(string short_name)

Возвращает следующий фьючерсный контракт после текущего по короткому имени инструмента, перебирая месяцы вперёд.

Функция string LastFutures(string short_name)

Возвращает последний (прошлый) фьючерсный контракт по короткому имени инструмента, перебирая месяцы назад.

Функция ulong CurrentExpDuration(ENUM_EXP_DURATION mode)

Возвращает оставшееся время до истечения срока действия текущего инструмента в выбранных единицах: дни, часы или минуты.

Функция string CurrentExpDurationToString(ulong time)

Преобразует значение длительности в строку, отображающую дни, часы и минуты.

Получить полный код

Поиск по коду файла

??//+------------------------------------------------------------------+

//|                                                  Expirations.mqh |

//|                        Copyright 2017, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#define  YEAR  365

//+------------------------------------------------------------------+



//+------------------------------------------------------------------+

string CurrFutures(string short_name)

  {

   StringToUpper(short_name);

   string long_name;

   MqlDateTime time;

   TimeCurrent(time);

   int year=time.year;

   int mon=time.mon;

   for(int i=0; i<12; i++)

     {

      if(mon>12) { mon=1; year++; }

      StringConcatenate(long_name,short_name,"-",mon,".",year%100);

      if(SymbolSelect(long_name,true))

        {

         if(SymbolInfoInteger(long_name,SYMBOL_EXPIRATION_TIME)>TimeCurrent()) break;

        }

      mon++;

      long_name="";

     }

   return(long_name);

  }

//+------------------------------------------------------------------+



string NextFutures(string short_name)

  {

   StringToUpper(short_name);

   string long_name;

   MqlDateTime time;

   TimeCurrent(time);

   int year=time.year;

   int mon=time.mon;

   datetime currtime=0;

   for(int i=0; i<12; i++)

     {

      if(mon>12) { mon=1; year++; }

      StringConcatenate(long_name,short_name,"-",mon,".",year%100);

      //Print(long_name);

      if(SymbolSelect(long_name,true))

        {

         int expirat=(int)SymbolInfoInteger(long_name,SYMBOL_EXPIRATION_TIME);

         Print("expirate: ",(datetime)expirat);

         

         if(currtime==0)

           if(expirat>TimeCurrent()) { currtime=expirat; mon++; continue; }

         if(currtime!=0) if(expirat>currtime) break;

        }

      mon++;

      long_name="";

     }

   return(long_name);

  }

  

//+------------------------------------------------------------------+

string LastFutures(string short_name)

  {

   StringToUpper(short_name);

   string long_name;

   MqlDateTime time;

   TimeCurrent(time);

   int year=time.year;

   int mon=time.mon;

   for(int i=0; i<12; i++)

     {

      if(mon<1) { mon=12; year--; }

      StringConcatenate(long_name,short_name,"-",mon,".",year%100);

      if(SymbolSelect(long_name,true))

        {

         if(SymbolInfoInteger(l

Показано первые 50% кода (символов: 8917)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
891,70₽ ≈ $10.90