Negociando WIN

 

Galera, boa noite

Seguinte: montei um robô para operação com WINQ17, porém, após o vencimento, vou ter que alterar manualmente para a próxima letra do contrato? Não daria para fazer nada automaticamente?

Grande abs!

 

Da sim Felipe, você pode usar o ativo Win$, e pegar o contrato do periodo.

Agora toda vez que o contrato acabar voce tera que atualizar o grafico.

ou rodar diretamente no ativo win$ apontando sempre para o ativo do contrato vigente

 
Sanderson Genuino:

Da sim Felipe, você pode usar o ativo Win$, e pegar o contrato do periodo.

Agora toda vez que o contrato acabar voce tera que atualizar o grafico.

ou rodar diretamente no ativo win$ apontando sempre para o ativo do contrato vigente


Sanderson, deixa eu ver se entendi:

Eu teria que rodar o robô no gráfico do WIN$ porém no código MQL5 eu teria que, ao invés de colocar _Symbol para fazer referência ao atual gráfico, por WIN$? Vai funcionar?

Obrigado

 
Felipe Dourado:

Sanderson, deixa eu ver se entendi:

Eu teria que rodar o robô no gráfico do WIN$ porém no código MQL5 eu teria que, ao invés de colocar _Symbol para fazer referência ao atual gráfico, por WIN$? Vai funcionar?

Obrigado

Não é tão fácil assim, você precisa pegar na descrição do ativo no caso o WIN$ 

Precisa utilizar as Funções de strings 
https://www.mql5.com/pt/docs/strings


 
input bool UseTeste=false;

void OnTick()
  {

   Ativo = "zzz";
   
   if((TimeCurrent()>D'2017.10.18 00:00' && TimeCurrent()<D'2017.12.12 20:00')){
   Ativo = "WINZ17";}
   
   if((TimeCurrent()>D'2017.12.13 00:00' && TimeCurrent()<D'2018.02.13 20:00')){
   Ativo = "WING18";}
   
   if((TimeCurrent()>D'2018.02.14 00:00' && TimeCurrent()<D'2018.04.17 20:00')){
   Ativo = "WINJ18";}
   
   if((TimeCurrent()>D'2018.04.18 00:00' && TimeCurrent()<D'2018.06.12 20:00')){
   Ativo = "WINM18";}
   
   if((TimeCurrent()>D'2018.06.13 00:00' && TimeCurrent()<D'2018.08.14 20:00')){
   Ativo = "WINQ18";}
   
   if((TimeCurrent()>D'2018.08.15 00:00' && TimeCurrent()<D'2018.10.16 20:00')){
   Ativo = "WINV18";}
   
   if((TimeCurrent()>D'2018.10.17 00:00' && TimeCurrent()<D'2018.12.11 20:00')){
   Ativo = "WINZ18";}
   
   tradenow=1;
   
   if(UseTeste)
   {
   Ativo = _Symbol;
   if((TimeCurrent()>D'2013.02.13 16:00' && TimeCurrent()<D'2013.02.13 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2013.04.17 16:00' && TimeCurrent()<D'2013.04.17 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2013.06.12 16:00' && TimeCurrent()<D'2013.06.12 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2013.08.14 16:00' && TimeCurrent()<D'2013.08.14 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2013.10.16 16:00' && TimeCurrent()<D'2013.10.16 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2013.12.18 16:00' && TimeCurrent()<D'2013.12.18 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2014.02.12 16:00' && TimeCurrent()<D'2014.02.12 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2014.04.16 16:00' && TimeCurrent()<D'2014.04.16 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2014.06.18 16:00' && TimeCurrent()<D'2014.06.18 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2014.08.13 16:00' && TimeCurrent()<D'2013.08.13 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2014.10.15 16:00' && TimeCurrent()<D'2014.10.15 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2014.12.17 16:00' && TimeCurrent()<D'2014.12.17 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2015.02.18 16:00' && TimeCurrent()<D'2015.02.18 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2015.04.15 16:00' && TimeCurrent()<D'2015.04.15 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2015.06.17 16:00' && TimeCurrent()<D'2015.06.17 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2015.08.12 16:00' && TimeCurrent()<D'2015.08.12 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2015.10.14 16:00' && TimeCurrent()<D'2015.10.14 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2015.12.16 16:00' && TimeCurrent()<D'2015.12.16 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2016.02.17 16:00' && TimeCurrent()<D'2016.02.17 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2016.04.13 16:00' && TimeCurrent()<D'2016.04.13 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2016.06.15 16:00' && TimeCurrent()<D'2016.06.15 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2016.08.17 16:00' && TimeCurrent()<D'2016.08.17 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2016.10.12 16:00' && TimeCurrent()<D'2016.10.12 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2016.12.14 16:00' && TimeCurrent()<D'2016.12.14 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2017.02.15 16:00' && TimeCurrent()<D'2017.02.15 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2017.04.12 16:00' && TimeCurrent()<D'2017.04.12 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2017.06.14 16:00' && TimeCurrent()<D'2017.06.14 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2017.08.16 16:00' && TimeCurrent()<D'2017.08.16 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2017.10.18 16:00' && TimeCurrent()<D'2017.10.18 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   if((TimeCurrent()>D'2017.12.13 16:00' && TimeCurrent()<D'2017.12.13 20:00')){CLOSEALL(0);CLOSEALL(1);tradenow=0;}
   }
   
   Ask = SymbolInfoDouble(Ativo,SYMBOL_ASK);
   Bid = SymbolInfoDouble(Ativo,SYMBOL_BID);

}
 

Isso aqui que postei em cima deve resolver seu problema

 
Joao Luiz Sa Marchioro:

Isso aqui que postei em cima deve resolver seu problema


Brilhante João! Ele só terá que se preocupar em 2019. (sem sarcasmo, ok?) Sua lógica é peculiar e interessante mas, trocar o _Symbol no EA me parece o caminho mais curto, até porque ele pode desiludir-se com o EA antes disso! - Se comento este ponto é por conta do meu algoritmo que já migrou do MT4 e agora está rodando no MT5 e adaptá-lo a Bolsa (rodava no Forex e devido a isso, ainda estou sofrendo com alguns ajustes; está na 5° versão). - 

 
Paulo Campozana:

Brilhante João! Ele só terá que se preocupar em 2019. (sem sarcasmo, ok?) Sua lógica é peculiar e interessante mas, trocar o _Symbol no EA me parece o caminho mais curto, até porque ele pode desiludir-se com o EA antes disso! - Se comento este ponto é por conta do meu algoritmo que já migrou do MT4 e agora está rodando no MT5 e adaptá-lo a Bolsa (rodava no Forex e devido a isso, ainda estou sofrendo com alguns ajustes; está na 5° versão). - 

Sim, está foi a melhor forma que achei pra resolver. Meu principal problema era que no símbolo padrão do mês o indicador não funcionava, por isso bolei essa lógica “dentro da minha ignorância em programação” e abaixo fiz uma estrutura para os testes em série continua serem mais reais. Foi o melhor que consegui. 
 
Joao Luiz Sa Marchioro:

João, deixa eu ver se entendi. Eu não poderia utilizar a "metade" do seu código? Veja abaixo se a solução não funcionaria também?


 if((TimeCurrent()>D'2017.10.18 00:00' && TimeCurrent()<D'2017.12.12 20:00')){
   Ativo = "WINZ17";}
   
   if((TimeCurrent()>D'2017.12.13 00:00' && TimeCurrent()<D'2018.02.13 20:00')){
   Ativo = "WING18";}  

if(PositionSelect(Ativo)==true && enterSLTP==true)
     {
      ZeroMemory(requisicao);
      ZeroMemory(resposta);

      requisicao.action = TRADE_ACTION_SLTP;
      requisicao.symbol = Ativo;
      .
      .
      .
     }
 
Felipe Dourado Goncalves De Souza:

João, deixa eu ver se entendi. Eu não poderia utilizar a "metade" do seu código? Veja abaixo se a solução não funcionaria também?


Como comeso atrabalha aque
 
Felipe Dourado Goncalves De Souza:

João, deixa eu ver se entendi. Eu não poderia utilizar a "metade" do seu código? Veja abaixo se a solução não funcionaria também?


Não entendi muito sua pergunta Felipe, mas de qualquer forma você é obrigado a usar o ASk e Bid que está no código.

Se você se refere ao que está abaixo do "UseTeste" essa parte é apenas para facilitar o uso do testador de estratégias, podendo rodar os teste em série contínua.

A parte que serve para operações no Win é apenas a parte superior do código mesmo.