Colagem de futuros - encontrar costuras

 

Para testar a EA, precisamos nos livrar das costuras nas colas de futuros, particularmente nas de Si.

Como posso saber as datas dos pontos para eliminá-los?

A idéia é o dia de expiração - mas onde está a lista de todos os dias de expiração? Talvez haja uma maneira de descobrir a data de expiração sem ter que coletar informações?


 

Aqui está em Si compilado por http://www.moex.com/ru/contract.aspx?code=Si-12.17

Ano/Quarto36912
2012 15.03.2012 15.06.2012 17.09.2012 17.12.2012
2013 15.03.2013 17.06.2013 16.09.2013 16.12.2013
2014 17.03.2014 16.06.2014 15.09.2014 15.12.2014
2015 16.03.2015 15.06.2015 15.09.2015 15.12.2015
2016 15.03.2016 15.06.2016 15.09.2016 15.12.2016
2017 16.03.2017 15.06.2017 21.09.2017 21.12.2017


Qual é a melhor maneira de excluir essas datas?

Московская Биржа - Основные параметры срочного контракта
  • www.moex.com
Код контракта Цена Изменение, % Объем, ₽ Объем, контр. Откр. позиции Изменение Расчетная цена Исполнение Открытые позиции * Физические лица Юридические лица Итого Длинные Короткие Длинные Короткие Итоги торгов
 

Implementado desta forma


void OnTick()
  {
//--Исключаем экспирацию по Si
   if(Symbol()=="Si Splice")
     {
      datetime  Open_timeExp=iTime(_Symbol,0,0);
      MqlDateTime strExp;
      TimeToStruct(Open_timeExp,strExp);
      strExp.hour=0;
      strExp.min=0;
      strExp.sec=0;
      for(int i=0;i<23; i++)
        {
         if(StructToTime(strExp)==StringToTime(ExpSi(i)))
           {
            BuyNow=false;
            SellNow=false;
            break;
           }
        }
     }
  }
//////
//+------------------------------------------------------------------+
//|Массив с датами экспирации опциона Si                             |
//+------------------------------------------------------------------+
string ExpSi(int i)
  {
   string Exp[24]=
     {
      "15.03.2012 0:00",
      "15.03.2013 0:00",
      "17.03.2014 0:00",
      "16.03.2015 0:00",
      "15.03.2016 0:00",
      "16.03.2017 0:00",
      "15.06.2012 0:00",
      "17.06.2013 0:00",
      "16.06.2014 0:00",
      "15.06.2015 0:00",
      "15.06.2016 0:00",
      "15.06.2017 0:00",
      "17.09.2012 0:00",
      "16.09.2013 0:00",
      "15.09.2014 0:00",
      "15.09.2015 0:00",
      "15.09.2016 0:00",
      "21.09.2017 0:00",
      "17.12.2012 0:00",
      "16.12.2013 0:00",
      "15.12.2014 0:00",
      "15.12.2015 0:00",
      "15.12.2016 0:00",
      "21.12.2017 0:00"
     };

   return (Exp[i] );
  }
//+------------------------------------------------------------------+

Existe uma maneira mais inteligente?

 
Aleksey Vyazmikin:

Para testar a EA, precisamos nos livrar das costuras nas colas de futuros, particularmente nas de Si.

Como posso saber as datas dos pontos para eliminá-los?

A idéia é o dia de expiração - mas onde está a lista de todos os dias de expiração? Talvez haja uma maneira programática de encontrar isto, portanto não preciso coletar informações.


Por que adivinhar?

A partir da data atual, você pode obter o nome dos futuros mais líquidos para o instrumento e o próximo seguinte. E comparar as barras da cola e estes dois futuros. Assim, você entenderá onde fazem a transição e de acordo com que algoritmo.

 
pivomoe:

Por que adivinhar?

A partir da data atual, você pode obter o nome dos futuros mais líquidos no instrumento e aquele que o segue. E comparar as barras da cola e estes dois futuros. Desta forma, você entenderá onde eles estão mudando e por qual algoritmo.

Eu não entendo sua lógica.

Não estou sugerindo adivinhar - eu coletei as datas de validade no Si.


 
Aleksey Vyazmikin:

Eu não entendo sua lógica...

Não estou sugerindo adivinhar - recolhi as datas de validade no Si.


Onde você obtém as informações de que a colagem acontece no último dia da circulação? Entendo que você pensa (ou sabe) que a cola é feita de um futuro, e depois do outro. E se não for o caso? De onde vem esta informação?
 
A propósito, há um último dia de circulação nas propriedades dos símbolos. Ele pode ser acessado pelo consultor.
 
pivomoe:
A propósito, nas propriedades do símbolo está o último dia de circulação. Isto pode ser acessado a partir da EA.

existe, mas é inútil para descartar emendas de cola

Por exemplo, o atual Si-9.17 é 21.09.2017


e é melhor excluir não apenas o 15º, mas também o 16º, imho

 
Aleksey Vyazmikin:

Implementado desta forma


Talvez haja uma maneira mais racional?


Suponho que você poderia simplesmente excluir o 14º ao 17º do 3º, 6º, 9º e 12º mês

 
pivomoe:
Onde estão as informações de que a colagem está no último dia? Até onde eu entendo você pensa (ou sabe) que até certo ponto no tempo a cola é composta de um futuro e depois de outro. E se não for o caso? De onde vem esta informação?

A pilha consiste em diferentes futuros. Sobre o último dia - uma observação, incluindo o gráfico, mostra-o. Mas isto é na Otkritie broker, outros podem ser diferentes.

 
pivomoe:
A propósito, há um último dia de circulação nas propriedades dos símbolos. Ele pode ser acessado a partir da EA.

Como encontrar os futuros antigos - eles não estão nas ferramentas.