Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 440
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá 2015.09.17_19:07 GMT+3 .Estabeleci as dimensões das matrizes dinâmicas no programa EA. E o compilador dá erros: "vírgula esperada". E se houver uma variável no texto do programa, -- dá avisos: "a variável suce-e-suprime a declaração de variável a nível global". Não percebo. Tudo parece estar correcto, como na Ajuda. Aqui estão alguns trechos de código:
//--- gama de preços máximos de barras
bool ArraySetAsSeries(double &High[],bool);
//---
bool ArraySetAsSeries(double &Low[],bool);
//--- definir os tamanhos da matriz com reserva (reserva)
int ArrayResize(double &mrate[],int 16,int 9);
int ArrayResize(double &maVal[],int 16,int 9);
int ArrayResize(double &fVal[],int 3,int 2);
int ArrayResize(double &zVal[],int 3,int 0);
int ArrayResize(double &High[],int 1,int 0);
int ArrayResize(double &Low[],int 1,int 0);
//+------------------------------------------------------------------+
//| Função de desinicialização de peritos |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
Olá 2015.09.17_19:07 GMT+3 .Estabeleci as dimensões das matrizes dinâmicas no programa EA. E o compilador dá erros: "vírgula esperada". E se no texto do programa houver
Se se refere ao meu código - então sim, o meu código está a verificar a existência de uma nova barra.
Estou interessado no código que anexei - quero compreender o que ele faz.
O código que deu não faz nada, ou melhor, não funciona. Erro:
Esta condição só funcionará uma vez - a primeira vez que executar o programa. Neste momento, a variável estática será inicializada.
A condição abaixo não faz qualquer sentido verificar, uma vez que a variável TimeN no seu código será igual ao zero eterno (ou melhor, a data de 1 de Janeiro de 1970) e este zero eterno será comparado com a variável TimeC que é igual ao tempo em que a barra actual abre):
O código que deu não faz nada, ou melhor, não funciona. Erro:
Esta condição só funcionará uma vez - a primeira vez que executar o programa. Neste momento, a variável estática será inicializada.
A condição abaixo não faz sentido verificar de todo, uma vez que a variável TimeN no seu código será igual ao zero eterno (ou melhor, será a data de 1 de Janeiro de 1970) e este zero eterno será comparado com a variável TimeC que é igual ao tempo de abertura da barra actual):
Agora pergunto-me porque deveria tê-lo escrito... em Consultor Especialista.
Obrigado pelo esclarecimento!
Se o novo compasso estiver no prazo M1, então imprima a mensagem:
Acontece que eu não dei o código completo, o correcto foi
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
Acontece que eu não dei o código completo, o código correcto era
int init()
{
static datetime TimeN=0;
return(INIT_SUCCEEDED);
}
int start()
{
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return(0);
TimeN=TimeC;
// Код программы исполняется при появлении нового бара
return(INIT_SUCCEEDED);
}
Aqui está o código de trabalho:
Já tentou compilar este código? Há aqui um erro: a variável TimeN é declarada em OnInit() e à saída de OnInit() esta variável será destruída. Portanto, ocorre um erro na função OnTick()
Aqui está o código de trabalho:
Escrevi datatime estática TimeN=0; na área antes deint OnInit() - onde são declaradas variáveis externas e outras variáveis.