Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 76

 
FinEngineer: Resta apenas um erro 2012.12.22 00:56:44 Pair_delta_RSI (EURGBP,M1) Nem todos os dados de RSI1_Handle são calculados (-1bars ). Erro4806

Este erro não aparece durante a compilação, mas quando anexo o indicador ao gráfico, ou quando altero o período de tempo.

Será que esta mensagem de erro está sempre a tocar, ou desaparece com o tempo?

 
Rapazes! O MT5 pode ser ligado a qualquer CD?
 
net:
Rapazes! O MT5 pode ser ligado a qualquer empresa de corretagem?

Não. A negociação através do MT5 é possível através do corretor que oferece a possibilidade de negociar através desta plataforma, tal como o VTB24 e o Alfa forex.

Условия для трейдеров
  • www.alfa-forex.ru
Если у вас уже есть опыт работы на валютном рынке, то вы по достоинству оцените преимущества работы с Альфа-Форекс Самые узкие спреды на рынке: EUR/USD — от 0,7 пункта Отсутствие минимального депозита Быстрый ввод и вывод средств Исполнение ордеров без проскальзываний и реквот Альфа-Форекс входит в банковскую группу в составе Консорциума...
 
Yedelkin:

Esta mensagem de erro toca constantemente, ou desaparece com o tempo?

Uma vez, quando anexar o indicador ao gráfico...
 
Yedelkin:

Será que esta mensagem de erro está sempre a tocar, ou desaparece com o tempo?

2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) matriz fora do intervalo em 'Pair_delta_RSI.mq5' (92,37)
acontece que este erro também aparece... ou seja,.... há dois erros...
 
Yedelkin:

Esta mensagem de erro toca constantemente, ou desaparece com o tempo?

Experimentei-o em alphaforex, experimentei-o em alpari, mesmo erro...
 

FinEngineer:

Yedelkin: Esta mensagem de erro está sempre a tocar, ou desaparece com o tempo?

Uma vez, quando anexar o indicador ao gráfico...

Então está a ir bem. Quando se limita a anexar o programa a um gráfico ou a alterar o período de tempo, não há novos dados calculados para o indicador RSI ou qualquer outro no terminal. E o terminal precisa de algum tempo para calcular os amortecedores indicadores necessários. Olhe cuidadosamente para o seu código (compreendo que está escrito de acordo com a amostra de outra pessoa, mas mesmo assim): Quando os dados calculados para o RSI não são suficientes, a função OnCalculate() deixa de funcionar ('return(0);') e espera por um novo tick. Assim que no tique seguinte forem calculados os amortecedores indicadores do LER, o seu indicador começa a funcionar em modo normal. O que faz, a julgar pelo que se diz.

Também pode inserir a verificação com BarsCalculated() na função OnInit() - então o erro ocorrerá muito raramente (se de todo). Um exemplo é dado na descrição da função BarsCalculated().

 
FinEngineer: 2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) matriz fora do intervalo em 'Pair_delta_RSI.mq5' (92,37)
acontece que este erro também aparece... ou seja, há dois erros...
Relativamente a este erro, já vos escrevi ontem. (Não se esqueça de inserir o código correctamente :) )
 
Yedelkin:
Sobre este erro, já vos escrevi ontem. (Não se esqueça de inserir o código correctamente :) )

Removido pedaço de código responsável por dados insuficientes (abaixo)

int calculado=BarsCalculado(RSI1_Handle);

if(calculated<rates_total)

{

Imprimir("Nem todos os dados do RSI1_Handle são calculados (",calculado, "barras). Erro",GetLastError()));

return(0);

}

calculado=BarsCalculated(RSI2_Handle);

if(calculated<rates_total)

{

Imprimir("Nem todos os dados do RSI2_Handle são calculados (",calculado, "barras"). Erro",GetLastError()));

return(0);

Pode dizer-me como marcar fragmentos de código na mensagem?

Agora está a sair um erro:

2012.12.22 15:14:00 Pair_delta_RSI (EURGBP,M1) Obter o RSI1 é um fracasso! Erro4806

 
FinEngineer: Aconselha-se como seleccionar trechos de código na mensagem?

Inserir o código correctamente.

FinEngineer : Removido o pedaço de código responsável pela insuficiência de dados (abaixo)
   int calculated=BarsCalculated(RSI1_Handle);
   if(calculated<rates_total)
     {
      Print("Not all data of RSI1_Handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }
   calculated=BarsCalculated(RSI2_Handle);
   if(calculated<rates_total)
     {
      Print("Not all data of RSI2_Handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);

Funcionou bem ali, aquele "pedaço de código que é responsável pela insuficiência de dados". E informou correctamente que, à primeira vista, os dados do RSI ainda não são calculados pelo terminal. Se não gostar de receber mensagens de erro, tente fazer como acima, nomeadamente verificar os dados calculados não só em OnCalculate(), mas também em OnInit(). Por outras palavras, tentar esperar pelo cálculo dos dados para indicadores técnicos seleccionados no OnInit() e depois passar ao processamento de carraças no OnCalculate() quando os dados para indicadores estiverem garantidos para serem calculados.

A acrescentar. No final, a remoção de uma parte do código de controlo não aumenta o número de dados indicadores calculados :)

Razão: