Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 143
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
Concordo sobre a int(round). Obrigado. Uma conversão de tipo explícito não faria mal. Mas funcionou bem sem conversão de tipo explícita.
Não tenho quaisquer erros. A construção é a mais recente.
Obrigado, a actualização MT5 ajudou. O erro desapareceu. a construção era de 23 de Julho de 2013. na antiga construção, a propósito, não havia mandados de conversão de tipo, por isso não reparei neles.
Quem teria esperado erros tão graves do compilador.
Obrigado, a actualização MT5 ajudou. O bicho desapareceu. A construção era de 23 de Julho de 2013. Na antiga construção, a propósito, não havia mandados de conversão de tipo, pelo que não reparei neles.
Quem teria esperado erros tão graves do compilador.
Necessidade de encontrar o mínimo no intervalo de tempo. Fiz o seguinte código para encontrar o mínimo no intervalo de tempo:
Para encontrar mínimos neste intervalo, utilizo a função CopyLow:
Depois, se bem entendi, recebo uma matriz unidimensionalLow[],
Procuro o mínimo nele com o ArrayMinimum:
Tentei definir hoje uma hora de início de 1 hora, uma hora de paragem de 2 horas e chamar Alerta para verificar min=-1.
Pergunta: para este problema, são as funções escolhidas correctamente para resolver este problema, ou existe um erro algures? Preciso de obter o preço mínimo.
Tentei procurá-lo no Manual, mas é um exemplo baseado na classe, e ainda não estou preparado para isso.
Quero escrever um EA sem utilizar aulas. Excluí todas as coisas estranhas da consideração e por ter recebido 3 deslizes para cada
Escrevi o seguinte fragmento do programa:
input int Kurtz_Period=5; // período Kurtz
input int Mittel_Period=8 ;
input int Long_Period=13;
int maHandle; //handle of Moving Average indicator
double ma_buf[]; // esta é uma matriz tampão para as leituras médias móveis da função MA
// e depois será copiado para as matrizes correspondentes
datatime Time_buf[]; // este é um conjunto de barras de tempo aberto
data/hora Hora_[6][150]; // matriz de tempo de abertura do bar
duplo Kurtz[6][70]; //isto é uma matriz para o Kurtz de movimento rápido, os números das filas correspondem aos números das moedas utilizadas, enquanto as colunas são as contagens do movimento
duplo Mittel[6][70]; // esta é a matriz para a média móvel Mittel
duplo Longo[6][70]; // este é um conjunto para um longo período de deslizamento Longo
string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // este é um conjunto de nomes de moedas:
int nomer_instr; // este é um número de instrumento (moeda), apenas para organizar ciclos por moedas
int OnInit()
{
//-----
//-------
}
nulo OnDeinit(const int razão)
{
//---
ArrayFree(Time_buf);
ArrayFree( ma_buf); // zerar a matriz libertada
//-------
}
nulo OnTick()
{
//---------------------
ArraySetAsSeries(time_buf, true); //set indexing for the time_array array as in timeseries
ArraySetAsSeries(ma_buf, true); //set indexing for array ma_buf as in timeseries
for( nomer_instr=0; nomer_instr<==5; nomer_instr++ ) // isto é um loop em todas as moedas utilizadas
{
int digit = int( SymbolInfoInteger( Name_symbol[nomer_instr], SYMBOL_DIGITS)); // este é o número de dígitos na cotação da moeda
CopyTime( Nome_símbolo[nomer_instr], PERÍODO_M1,0,160,Time_buf); // copiar dados históricos de tempo para cada barra para o buffer
for( i=1; i<=145; i++ ) Time[nomer_instr][i]=Time_buf[i]; // hora do 1º bar aberto
//#############################################################################################
//Bloqueio geradores das 3 primeiras barras deslizantes:Kurtz, Mittel, Long
manHandle = iMA( Nome_símbolo[nomer_instr],PERÍODO_M1, Kurtz_Period , 0, MODE_SMMA, PRICE_CLOSE );
if( CopyBuffer(maHandle,0,0,155,ma_buf)<0 )
{
Alerta("Erro na cópia de buffers indicadores ---PERIOD_M1,Kurtz_Period--- Média móvel - número de erro:",GetLastError()));
regressar;
}
for( i=1; i<=45; i++ ) Kurtz[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], dígito);
/*
//===============================================================
// BLOQUEIO de verificação da compensação de barras como em séries temporais e precisão da normalização numérica
// MA-5 de movimento rápido
if( Multi_Torgi == 0 && Optim_parametrov == nomer_instr ) // esta é uma chave para seleccionar o modo do Expert Advisor, agora está no modo de depuração
{
for( i=1; i<=5; i++ )
{
if(i==1) Alert("====================");
if(i===1) Alerta(" hora de abertura do 1º bar: Time[nomer_instr][1]=",Time[nomer_instr][1] );
Alerta(" número de barras: i=",i,", MA_buf[i]=",MA_buf[i],", Kurtz[nomer_instr][i]=",Kurtz[nomer_instr][i]);
}
}
//=================================================================
*/
//---------------------------------------------------------------------------------------------------------------------------
maHandle = iMA( Nome_símbolo[nomer_instr],PERÍODO_M1, Mittel_Period, 0, MODE_SMMA, PRICE_CLOSE );
if(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alerta("Erro na cópia de buffers indicadores ====PERIOD_M1, Mittel_Period,==== Média móvel - número de erro:",GetLastError()));
regressar;
}
for( i=1; i<=45; i++ ) Mittel[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], dígito);
//----------------------------------------------------------------------------------------------------------------------
maHandle = iMA( Nome_símbolo[nomer_instr],PERÍODO_M1, Período_Longo, 0, MODE_SMMA, PREÇO_CLOSE );
if(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alerta("Erro na cópia de buffers indicadores ====PERIOD_M1, Long_Period,====Moving Average - número de erro:",GetLastError()));
regressar;
}
for( i=1; i<=45; i++ ) Long[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], dígito);
// fim do bloco formando as contas dos 3 primeiros diapositivos: Kurtz, Mittel,Long
//#############################################################################################
} // fim do laço por moedas em uso
//============================================================
Outros operadores do programa
//============================================================
//-----------------------------------------
}// Fim de OnTick()
//+------------------------------------------------------------------+
Nenhum erro é detectado neste programa em tempo de compilação, mas quando testado no Diário de Bordo para cada deslize, um
mensagem de erro: 4806 é " dados solicitados não encontrados".
Por favor, digam-me onde tenho o erro.
Obrigado.
Não compreende o princípio da dactilografia? É tão simples:
Parece claro agora) Acontece que o int st operand é de um tipo menor do que tp[] datetime.
É por isso que não há conversão para segundos na operação:
Tentei encontrar o mínimo no intervalo de tempo. Não tenho a certeza se o estou a fazer bem. Consegue ver o post anterior?
Como se pode chamar Alerta ou Comentário sem novas carraças para fazer verificações ao fim-de-semana?
Necessidade de encontrar o mínimo no intervalo de tempo. Fiz o seguinte código para encontrar o mínimo no intervalo de tempo:
Para encontrar mínimos neste intervalo, utilizo a função CopyLow:
Depois, se bem entendi, recebo uma matriz unidimensionalLow[],
Procuro o mínimo nele com o ArrayMinimum:
Tentei definir hoje uma hora de início de 1 hora, uma hora de paragem de 2 horas e chamar Alerta para verificar min=-1.
Pergunta: para este problema, são as funções escolhidas correctamente para resolver este problema, ou existe um erro algures? É necessário obter o preço mínimo.
Por favor, leia com atenção:
Valor de retorno.
A função devolve o índice do item encontrado, tendo em conta a seriedade da matriz. Sefalhar, a função regressa -1.
Por conseguinte, deveria ser assim:
Verificar e testar aos fins-de-semana e mais além, tem de escrever.
Verificar e testar aos fins-de-semana e mais além, tem de escrever.