Dúvidas com relação ao RSI - página 5

 
humm... eu nao cheguei a pensar nisto, posso fazer alteração para usar ontick e ver o que acontece...
 
ewertonm:
humm... eu nao cheguei a pensar nisto, posso fazer alteração para usar ontick e ver o que acontece...
Já alterei de OnTimer( ) para OnTick( ) e o problema permanece...
 
acabei de fazer a mudança e o problema é mesmo...
 
seria um bug no sistema?
 
Matei a charada, problema de parâmetros em CopyBuffer() como alertado na primeira resposta, aliás esse problema é um ótimo para treinamentos, pois é um bug pega ratão !!!
 
      //--- A linha RSI sobre os preços.
      // if(CopyBuffer(RSI_handle[N],0,per[N],1,RSI_handlex)<=0) // Bug !!!
      if(CopyBuffer(RSI_handle[0],0,0,1,RSI_handlex)<=0) // Correção!
         continue; // quebrar a iteração atual. 
      ArraySetAsSeries(RSI_handlex,true);

O problema é que o período não vai no CopyBuffer(), aliás nenhum parâmetro do RSI vai aqui, só na inicialização do indicador.

Você deve ter inserido isso justamente na passagem da posição inicial do buffer, forçando a leitura da posição 14 ao invés de ler em 0 !!!

O código anterior resolve o entreveiro ;-) 

 
figurelli:

O problema é que o período não vai no CopyBuffer(), aliás nenhum parâmetro do RSI vai aqui, só na inicialização do indicador.

Você deve ter inserido isso justamente na passagem da posição inicial do buffer, forçando a leitura da posição 14 ao invés de ler em 0 !!!

O código anterior resolve o entreveiro ;-) 

Ahah... easy... fiquei tentado também a achar que estava tudo certo no CopyBuffer...

Ótimo trabalho, Figurelli !!! 

Da maneira como ele estava fazendo ele estava copiando o indicador com 14 períodos de atraso... 

 
Malacarne:

Ahah... easy... fiquei tentado também a achar que estava tudo certo no CopyBuffer...

Ótimo trabalho, Figurelli !!! 

Obrigado Malacarne, você ajudou bastante também, eu passei a desconfiar quando percebi que o valor estava alguns períodos defasado, no começo pensei no ArraySetAsSeries(), mas como o buffer só pega a última posição não tinha lógica.

Seja como for, é um bom exercício para quem quer aprender MQL.

E mais, mesmo lendo 14 períodos atrás a estratégia apresenta um bom backtesting em um ano para EUR/USD ! 

 
figurelli:

Obrigado Malacarne, você ajudou bastante também, eu passei a desconfiar quando percebi que o valor estava alguns períodos defasado, no começo pensei no ArraySetAsSeries(), mas como o buffer só pega a última posição não tinha lógica.

Seja como for, é um bom exercício para quem quer aprender MQL.

E mais, mesmo lendo 14 períodos atrás a estratégia apresenta um bom backtesting em um ano para EUR/USD ! 

Pessoal, obrigado pela ajuda.  Vou fazer esta correção e ver se os resultados serão bons....

 
ewertonm:

Pessoal, obrigado pela ajuda.  Vou fazer esta correção e ver se os resultados serão bons....

Ewerton, de nada, vou aproveitar esse bug e colocar no meu tópico abaixo, já que é um caso clássico.

Uma dica para as próximas vezes é postares o código fonte com arquivo (usando a opção Anexar arquivo no final da janela do post).

Ainda há tempo de apagares teu fonte original, pois não é mais necessário uma vez que o problema já foi resolvido, qualquer ajuda para isso é só perguntar. 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Transformando os bugs do seu trading system em oportunidades

figurelli, 2013.12.31 00:48

Não existe nada pior do que descobrir um bug em um trading system lucrativo ;-)

O que você faz, remove o bug ou deixa tudo como está?

Como essa situação não é rara, e provavelmente irá acontecer mais cedo ou mais tarde com todos que mergulham no desenvolvimento de EAs (principalmente com o MT5, onde existe um grau de dificuldade e potencialidade acima da média de outras plataformas), apresento nesse tópico uma metodologia para transformar bugs em oportunidades.

A área de finanças quantitativas apresenta esse diferencial de outras áreas, onde os bugs são simplesmente removidos e eliminados para sempre.

No nosso caso, eles muitas vezes são a porta para a descoberta de novas táticas e estratégias competitivas, e portanto devemos estar atentos aos resultados deles e em formas de transformar o que parecia uma não conformidade em uma oportunidade.


Razão: