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

 
Сергей Таболин:

O primeiro caminho ajudou )))) Obrigado.

Mais uma pergunta: Arranco 3 casos de indicadores no indicador para obter dados de diferentes TFs. Mas quando a prendo a um gráfico, recebo este tipo de folha de cálculo:

O que é que isso significaria?

Não posso dizer com certeza, mas talvez o 2º tampão tenha sido inicializado tardiamente.

Para saber exactamente qual é a razão, deve ajustar as seguintes linhas

if(CopyBuffer(handle_MA,0,0,ma_values_to_copy,buffer_MA) < 0 ) // копируем данные из индикаторного массива в массив buffer_MA
   {                                                                                // если не скопировалось
      Print("Не удалось скопировать данные из индикаторного буфера в buffer_MA, код ошибки "+ IntegerToString(GetLastError()));   // то выводим сообщение об ошибке
      return(0);                                                                    // и выходим из функции
   }

Depois disso, podemos dizer com mais confiança o que está errado

 
Oleg Peiko:

Não posso dizer com certeza, mas talvez o 2º tampão tenha sido inicializado tardiamente.

Para saber exactamente qual é a razão, deve ajustar as seguintes linhas

Depois disso, podemos dizer com mais confiança o que está errado.

2019.03.23 22:58:11.410 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA
2019.03.23 22:58:11.410 my_HMA5_123 (GBPUSD,M30)        Не удалось скопировать данные из индикаторного буфера в buffer_MA2
2019.03.23 22:58:11.410 my_HMA5_123 (GBPUSD,M30)        4806
2019.03.23 22:58:11.637 my_HMA5_123.ex5::my_HMA5 (GBPUSD,M15)   BarsCalculated() вернул -1, код ошибки 4806
2019.03.23 22:58:11.648 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA
2019.03.23 22:58:11.648 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA2
2019.03.23 22:58:11.648 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA3
ERR_INDICATOR_DATA_NOT_FOUND    4806    Запрошенные данные не найдены

É possível fazer algo com ele?

A propósito, esta cópia abre na M15.

No entanto, o mesmo se passa com outras TFs também.

 
Сергей Таболин:

Há alguma coisa que possa fazer a esse respeito?

A propósito, esta cópia abre na M15.

É o mesmo também noutros prazos...

No temporizador, uma vez de dois em dois minutos, pedir quaisquer dados para o período de tempo requerido. Desta forma, terá sempre dados actualizados para o período de tempo.

Além disso: em OnCalculate() logo no início, solicita-o, por exemplo:

   if(iTime(NULL,PERIOD_M15,1)==0)
      return 0;

Assim, até que os dados do período de quinze minutos estejam disponíveis, o indicador esperará pelo próximo tick.
Pode solicitar a quantidade certa de dados para o cálculo, utilizando a função CopyXXX:

   datetime array[];
   if(CopyTime(NULL,PERIOD_M15,0,number_of_datas,array)!=number_of_datas)
      return 0;

Neste caso, até que o número_de_dados requerido esteja disponível, o indicador esperará pelo próximo tick.

Se decidir utilizar a função

Bars(NULL,PERIOD_M15);

..., deve ter em conta, que a quantidade de dados para o cálculo não deve exceder as taxas_total, caso contrário, excederá os limites da matriz. Por outras palavras, se houver menos barras no período actual do que em M15, então devemos tomar o número de barras igual ao seu número no período actual = taxas_total

 
Artyom Trishkin:

No temporizador, uma vez de dois em dois minutos, solicitar quaisquer dados para o período de tempo requerido. Desta forma, terá sempre dados actualizados para o período de tempo.

Além disso: em OnCalculate() logo no início solicita-o, por exemplo:

Assim, até que os dados do período de 15 minutos estejam disponíveis, o indicador esperará pelo próximo tick.
Pode solicitar a quantidade certa de dados para o cálculo com a função CopyXXX:

Neste caso, até que a quantidade necessária de dados em número_de_dados esteja disponível, o indicador esperará pelo próximo tick.

Se decidir utilizar a função

..., deve ter em conta, que a quantidade de dados para o cálculo não deve exceder as taxas_total, caso contrário, excederá os limites da matriz. Por outras palavras, se houver menos barras no período actual do que em M15, então devemos tomar o número de barras igual ao seu número no período actual = taxas_total

Obrigado.

Foi assim que aconteceu:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   
   if(iTime(NULL,PERIOD_CURRENT,1)==0)  return(0); 
   if(iTime(NULL,periodTF1,1)==0)       return(0); 
   if(iTime(NULL,periodTF2,1)==0)       return(0); 
   
   int ma_values_to_copy; 
   int ma_calculated = 0;
   if(PeriodSeconds(PERIOD_CURRENT) < PeriodSeconds(periodTF1) && PeriodSeconds(PERIOD_CURRENT) < PeriodSeconds(periodTF2))   ma_calculated = BarsCalculated(handle_MA);
   else
   if(PeriodSeconds(periodTF1) < PeriodSeconds(PERIOD_CURRENT) && PeriodSeconds(periodTF1) < PeriodSeconds(periodTF2))        ma_calculated = BarsCalculated(handle_MA2);
   else
   if(PeriodSeconds(periodTF2) < PeriodSeconds(PERIOD_CURRENT) && PeriodSeconds(periodTF2) < PeriodSeconds(periodTF1))        ma_calculated = BarsCalculated(handle_MA3);
   
   if(ma_calculated <= 0){ 
      PrintFormat("BarsCalculated() вернул %d, код ошибки %d",ma_calculated,GetLastError()); 
      return(0); 
     }  
   if(prev_calculated == 0 || ma_calculated != ma_bars_calculated || rates_total > prev_calculated + 1){ 
      if(ma_calculated > rates_total) ma_values_to_copy = rates_total; 
      else ma_values_to_copy = ma_calculated; 
     } else { 
      ma_values_to_copy = (rates_total - prev_calculated) + 1; 
     } 

resultado:

2019.03.24 00:56:38.056 my_HMA5_125 (GBPUSD,M30)        BarsCalculated() вернул -1, код ошибки 4806
2019.03.24 00:56:38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA
2019.03.24 00:56:38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA_c
2019.03.24 00:56:38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA2
2019.03.24 00:56:38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA_c2
2019.03.24 00:56:38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA3
2019.03.24 00:56:38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA_c3

Tenho dificuldades com os indicadores ))))

 

Olá a todos!
Por favor, aconselhar sobre a função CopyHigh.
Li na definição desta função, "Obtém dados históricos para uma matriz com o preço máximo da barra para um símbolo e período especificados".

Estamos a falar de uma tabela de preços Bid or Ask ? Ou há alguma forma de definir o tipo de preço necessário?

 
renatmt5:

Olá!
Por favor, aconselhar sobre a função CopyHigh.
Li na definição desta função, "Obtém dados históricos para um conjunto de preços máximos de barras para um símbolo e período especificados".

Estamos a falar de uma tabela de preços Bid or Ask ? Ou é possível definir de alguma forma o tipo de preço necessário?

Referência:Características do Plotting

Características da elaboração de gráficos

Os dados históricos, com base nos quais os gráficos são construídos, são armazenados no disco rígido. Quando se abre um gráfico, os dados são descarregados do disco e os últimos dados em falta do servidor comercial são descarregados. Se os dados históricos de um instrumento financeiro não estiverem disponíveis no disco rígido, as últimas 512 barras do histórico são descarregadas.

Para descarregar os dados anteriores, mover o gráfico para a área requerida. Uma vez aberto o gráfico, a plataforma começará a receber informações sobre as cotações actuais. Assim, a continuação do movimento de preços é formada em tempo real. Esta informação é automaticamente guardada num ficheiro de histórico e é utilizada quando se abre este gráfico novamente no futuro.

  • O parâmetro "Max barras no gráfico" é definido nasconfigurações da plataforma. Este parâmetro permite controlar a quantidade de dados históricos mostrados no gráfico.
  • Os gráficos são traçados em relação aos preços de licitação. Se aProfundidade do Mercado estiver disponível para o símbolo, os gráficos serão traçados aos Últimos preços (o preço da última transacção executada).
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
 
Vladimir Karputov:

Referência:Características do grafismo

Características da elaboração de gráficos

Os dados históricos, com base nos quais são construídos os gráficos, são armazenados no disco rígido. Quando se abre um gráfico, os dados são descarregados do disco e os últimos dados em falta do servidor comercial são descarregados. Se os dados históricos de um instrumento financeiro não estiverem disponíveis no disco rígido, as últimas 512 barras do histórico são descarregadas.

Para descarregar os dados anteriores, mover o gráfico para a área requerida. Uma vez aberto o gráfico, a plataforma começará a receber informações sobre as cotações actuais. Assim, outras tendências de preços são formadas em tempo real. Esta informação é automaticamente guardada num ficheiro de histórico e é utilizada quando se abre este gráfico novamente no futuro.

  • O parâmetro "Max barras no gráfico" é definido nasconfigurações da plataforma. Este parâmetro permite controlar a quantidade de dados históricos mostrados no gráfico.
  • Os gráficos são traçados em relação aos preços de licitação. Se aProfundidade do Mercado estiver disponível para o símbolo, os gráficos serão traçados aos Últimos preços (último preço comercial).

Bom dia Vladimir, como sempre me ajuda :) Obrigado!

 
Bom dia a todos. Aconselha-se como calcular o volume da posição com base nos fundos atribuídos à transacção.
 

Como encontrar a vela mais pequena de N em mql5?

Em mql4

   min=99999;
   N=5;
   for(int i=1;i<=N;i++)
     {
      if(High[i]-Low[i]<min) min=High[i]-Low[i];
     }
 
yiduwi:

Como encontrar a vela mínima de N em mql5?

Em mql4

No Expert Advisor ou num indicador? Para o período de tempo actual ou para outro?

Razão: