How can I get expiration date from an Index?

 

Hi,

How can I get de expiration date from an Index, like the Description window? 

I tried use the code below, however dind't work.
datetime m_Expiration = (datetime)SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME);
the date returned is D'1970.01.01 00:00:00'

Arquivos anexados:
Description.png  16 kb
 
Glayton Teixeira de Araújo:

Hi,

How can I get de expiration date from an Index, like the Description window? 

I tried use the code below, however dind't work.
datetime m_Expiration = (datetime)SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME);
the date returned is D'1970.01.01 00:00:00'

Por quê a pergunta em ingles???


Este Fórum está virando uma zona...


lamentável.

 

Boa Flávio,

eu simplesmente ignoro.

 
Flavio Jarabeck #:

Por quê a pergunta em ingles???


Este Fórum está virando uma zona...


lamentável.

poderia pelo menos responder o cara em vez de reclamar, outras pessoas de outros países podem ver o tópico tbm, o mundo não é só o seu umbigo.

 
Glayton Teixeira de Araújo:

Hi,

How can I get de expiration date from an Index, like the Description window? 

I tried use the code below, however dind't work.
datetime m_Expiration = (datetime)SymbolInfoInteger(_Symbol, SYMBOL_EXPIRATION_TIME);
the date returned is D'1970.01.01 00:00:00'

Olá Glayton, estou tendo problemas com esse "invalid expiration" em ordens pendentes (já testei inúmeras soluções dadas no fórum e nenhuma resolveu), não sei ao certo o que se passa, vi tbm que esse erro aparece quando rodamos o backtest enquanto o mercado está fechado.. na próxima semana testarei durante o pregão

Abraço e boa sorte!
 
Rodrigo Rath #:
Olá Glayton, estou tendo problemas com esse "invalid expiration" em ordens pendentes (já testei inúmeras soluções dadas no fórum e nenhuma resolveu), não sei ao certo o que se passa, vi tbm que esse erro aparece quando rodamos o backtest enquanto o mercado está fechado.. na próxima semana testarei durante o pregão

Abraço e boa sorte!

Oi, Rodrigo. Essa função funciona perfeitamente para as opções, infelizmente o mesmo não ocorre para o índice futuro. Até imaginei que podeira ser um outro parâmetro ou função, mas até o momento sem sucesso. Avise caso tenha algum progresso.

Obrigado pelo retorno. 

 
Glayton Teixeira de Araújo #:

Oi, Rodrigo. Essa função funciona perfeitamente para as opções, infelizmente o mesmo não ocorre para o índice futuro. Até imaginei que podeira ser um outro parâmetro ou função, mas até o momento sem sucesso. Avise caso tenha algum progresso.

Obrigado pelo retorno. 

Olá Glayton, infelizmente até o momento não encontrei respostas para essa questão, o máximo são suposições sobre nossos brokers serem incompatíveis, não aceitam a informação, diferentemente dos forex que por funcionarem 24h tem sistema de datas e validades diferentes (é pelo menos minha conclusão).

Eu estava tentando fazer as famosas ordens OCO, consegui usando OrderOpen do CTrade:

if(m_trade.OrderOpen(Symbol_Name,ORDER_TYPE_BUY_STOP_LIMIT,1,price,price,sl,tp,ORDER_TIME_DAY,0,"robô 20"))
               Print("BuyLimit - > true. ticket of order = ",m_trade.ResultOrder());


(são 2 linhas destas, trocando obviamente os valores dos parâmetros para a posição de compra e de venda).

No meu teste de expert, ele coloca as 2 ordens pendentes com X pontos de distância da cotação (venda abaixo e compra acima), caso ele execute uma das ordens (com lucro ou prejuízo) a outra ordem não executada é cancelada, e novo par de ordens é colocado respeitando as distâncias novamente.

Observe que no parâmetro expiration_date o valor é zero, e funciona mesmo assim.

Bom, fugi um pouco da questão, mas enfim, foi só dessa forma que consegui que as ordens pendentes fossem aceitas/colocadas.

Abraço e boa sorte aí!!
Arquivos anexados:
 

Olá Rodrigo,

tomei dois exemplos de ativos, assinalado em azul atributo TERMINO DE VALIDADE, ou seja os valores que você pode colocar  na ordem.

Exemplo: AMBV3 você pode especificar uma data hora para  termino de validade da ordem.  WDOM22 não é permitido especificar uma data hora para termino de validade ,obrigatoriamente a validade da ordem deve ser HOJE. 


 

 
Rodrigo Rath #:

Olá Glayton, infelizmente até o momento não encontrei respostas para essa questão, o máximo são suposições sobre nossos brokers serem incompatíveis, não aceitam a informação, diferentemente dos forex que por funcionarem 24h tem sistema de datas e validades diferentes (é pelo menos minha conclusão).

Eu estava tentando fazer as famosas ordens OCO, consegui usando OrderOpen do CTrade:

if(m_trade.OrderOpen(Symbol_Name,ORDER_TYPE_BUY_STOP_LIMIT,1,price,price,sl,tp,ORDER_TIME_DAY,0,"robô 20"))
               Print("BuyLimit - > true. ticket of order = ",m_trade.ResultOrder());


(são 2 linhas destas, trocando obviamente os valores dos parâmetros para a posição de compra e de venda).

No meu teste de expert, ele coloca as 2 ordens pendentes com X pontos de distância da cotação (venda abaixo e compra acima), caso ele execute uma das ordens (com lucro ou prejuízo) a outra ordem não executada é cancelada, e novo par de ordens é colocado respeitando as distâncias novamente.

Observe que no parâmetro expiration_date o valor é zero, e funciona mesmo assim.

Bom, fugi um pouco da questão, mas enfim, foi só dessa forma que consegui que as ordens pendentes fossem aceitas/colocadas.

Abraço e boa sorte aí!!

Olá Rodrigo,

Testei meu código hoje e a função funcionou perfeitamente. Não sei como se dá a informação, mas a função que apresentava falha, por algum motivo foi corrigida.

   m_Expiration = (datetime)SymbolInfoInteger("WINQ22", SYMBOL_EXPIRATION_TIME);
   m_Expiration = D'2022.08.17 19:15:00'

Era exatamente essa informação que estava precisando (vencimento do contrato futuro de índice).

Abraços e obrigado pelo retorno.

Razão: