- Question
- New build questions
- Porcentagem do Algotrading nos Robos
Bom, eu nao sei se aqui seria o lugar ideal, mas se vocês puderem me ajudar, seria muito grato.
Bom, minha dúvida é a seguinte, iniciei recentemente a aprender programar em MQL5,
e estava a testar um EA usando o indicador RSI,
construi a seguinte rotina:
//--- Seção A.8.3: Indicador de RSI RSI_handle[i]=(iRSI(SymbolArr[i],PERIOD_CURRENT,per[i],PRICE_WEIGHTED)); if(RSI_handle[i]<0) { Print("Identificador de RSI ",SymbolArr[i]," não foi criado, identificador=",Valor Invalido,"\n Error=",GetLastError()); ExpertRemove(); }
bom, até ai tudo bem, mas logo em seguida estava tentando capturar o valor de RSI_handle
para realizar alguns calculos, conforme a rotina abaixo:
//--- A linha RSI sobre os preços. if(CopyBuffer(RSI_handle[N],0,per[N],1,RSI_handlex)<=0) continue; // quebrar a iteração atual. ArraySetAsSeries(RSI_handlex,true);
Só que ao comparar o valor que é lançado na seção A83 -RSI_Handle com o valor copiado para o Buffer RSI_handlerx,
os números não batem... alguém poderia me ajudar a identificar onde estou errando na construção
desta rotina?
Obrigado a todos...
Bom, eu nao sei se aqui seria o lugar ideal, mas se vocês puderem me ajudar, seria muito grato.
Nesse caso também recomendo que você edite os códigos fontes utilizando a opção de código (SRC) do editor (Ctrl+A+M), provavelmente o Malacarne já fez isso para você.
Fazendo uma análise do código para te ajudar, me parece que tua expectativa de que os números dos manipuladores devem bater é que está errada.
Note que RSI_handle é realmente um handler, mas RSI_handlex, apesar do nome que você está utilizando, deveria sera apenas um array de destino, onde serão copiados N dados (count), como mostra a documentação de CopyBuffer que recomendo leres novamente.
int CopyBuffer( int indicator_handle, // indicator handle int buffer_num, // indicator buffer number int start_pos, // start position int count, // amount to copy double buffer[] // target array to copy );
Bom, eu nao sei se aqui seria o lugar ideal, mas se vocês puderem me ajudar, seria muito grato.
Bom, minha dúvida é a seguinte, iniciei recentemente a aprender programar em MQL5,
e estava a testar um EA usando o indicador RSI,
construi a seguinte rotina:
bom, até ai tudo bem, mas logo em seguida estava tentando capturar o valor de RSI_handle
para realizar alguns calculos, conforme a rotina abaixo:
Só que ao comparar o valor que é lançado na seção A83 -RSI_Handle com o valor copiado para o Buffer RSI_handlerx,
os números não batem... alguém poderia me ajudar a identificar onde estou errando na construção
desta rotina?
Obrigado a todos...
Olá Ewerton, ao postar algum tópico por favor identifique a melhor seção para tua postagem! O conteúdo de teu post não estava relacionado ao tópico Radar do fórum internacional, por isso resolvi criar um tópico novo a partir de seu post original.
Ainda com relação ao post original, sempre que for colar trechos de código, use o botão "SRC" do editor...
Bom, mas vc´s entenderam o que estou tentando fazer ?
como disse estou ainda em fase de aprendizagem da linguagem, e como não ha muito mateiral
explicativo em portugues, estou quebrando a cabeça aqui.
NA verdade eu to querendo copiar o valor de RSI que é plotado no grafico para uma variavel de memoria, que
me ajudaria a implementar alguns calculos matematicos, por isto usei a variavel RSI_handerx, onde deveria
ser armazenado o valor de RSI_handler. Mas o valor qd é plotado no grafico é totalmente divergente do que é
capturado pela memoria.
Ewerton, note também que o ExpertRemove() é um tratamento radical para a situação de não conseguir um manipulador, pois além de parar o EA você vai remover ele do gráfico.
if(RSI_handle[i]<0) { Print("Identificador de RSI ",SymbolArr[i]," não foi criado, identificador=",Valor Invalido,"\n Error=",GetLastError()); ExpertRemove(); }
Talvez algo menos radical seja colocar um alerta na tela, usando a função Alert(), e testar a existência do manipulador antes do CopyBuffer() e de utilizar de fato os dados do RSI.
Bom, mas vc´s entenderam o que estou tentando fazer ? ...
Mas o valor qd é plotado no grafico é totalmente divergente do que é
capturado pela memoria.
O ideal seria poder ver mais detalhes do código fonte e também dos dados que você está vendo nessa comparação.
sim, mas esta função é para parar o grafico, quando ocorrer um erro nos dados. O que esta me intrigando é que como estou indicando que o valor de RSI_hander para ser copiado para
RSI_handlerx está sendo divergente de quando plota o grafico.
Eu vejo isto qd peço para printar o valor de RSI_handlerx e comparo o valor que foi plotado no gráfico.
if(CopyBuffer(RSI_handle[N],0,per[N],1,RSI_handlex)<=0) continue; // quebrar a iteração atual. ArraySetAsSeries(RSI_handlex,true);
sim, mas esta função é para parar o grafico, quando ocorrer um erro nos dados. O que esta me intrigando é que como estou indicando que o valor de RSI_hander para ser copiado para
RSI_handlerx está sendo divergente de quando plota o grafico.
Eu vejo isto qd peço para printar o valor de RSI_handlerx e comparo o valor que foi plotado no gráfico.
Obs: é uma opção parar o gráfico a cada erro de leitura do manipulador, mas ainda considero um tratamento radical.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso