Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 770

 
Igor Zakharov:

Use o indicador ATR

Obrigado, mas ainda não entendo como ele pode ser usado no meu caso.

Alguém lançou um link para CopyRates (Obrigado, infelizmente o comentário foi excluído), então estou tentando entender que iVolume() é a diferença entre Alto e Baixo preço ou algo mais ?

Isto é, no meu caso (como eu o entendo) posso criar uma matriz de dados mensais e semanais e depois fazer uma média dos valores, etc.

 
Alexander Layzerevich:

tentando entender iVolume() é a diferença entre Alto e Baixo preço ou algo mais?

estes são volumes, clique com o botão direito do mouse no gráfico em MT e selecione mostrar volumes - os histogramas aparecerão na parte inferior do gráfico - isto é o seguinte

https://docs.mql4.com/ru/series/ivolume

iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Значение тикового объема бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
 
Igor Makanu:

Estes são os volumes, clique com o botão direito no gráfico em MT e selecione mostrar volumes - os histogramas aparecerão na parte inferior do gráfico - estes são eles

https://docs.mql4.com/ru/series/ivolume

Muito obrigado pelo esclarecimento.

Portanto, resta o seguinte: Criar 2 matrizesAlta e Baixa para calcular dados para o mês e 2 matrizesAlta e Baixa para calcular para a semana.

Depois, tudo é calculado como média, etc.

Vou tentar implementar tudo isso no código...

Tenho outra pergunta: o que é melhor para calcular o último mês e a semana passada?

A julgar pelo exemplo :

Referência por posição inicial e número de elementos necessários

intCopyHigh(
nome_símbolo de corda,// nome do símbolo
ENUM_TIMEFRAMEScronograma,// período
intstart_pos,// por onde começar
intcontagem,// Quantos copiamos
duplohigh_array[]// array para cópia de preços máximos
);

prazo = PERÍODO_D1;

start_pos = 1; // barra anterior

contagem = 30; // 30 dias (mês)

 
Alexander Layzerevich:

Outra pergunta: Qual é a melhor maneira de contar o último mês e a última semana?

É melhor datá-lo, pois há saltos de bares e fins de semana quando não há bares, portanto, isto ajudará:

Обращение по начальной и конечной датам требуемого интервала времени

int  CopyHigh(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   datetime         start_time,       // с какой даты
   datetime         stop_time,        // по какую дату
   double           high_array[]      // массив для копирования максимальных цен
   );

https://docs.mql4.com/ru/series/copyhigh

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Igor Makanu:

É melhor até hoje, pois há saltos (citações) de bares e fins de semana quando não há bares, isto ajudará:

https://docs.mql4.com/ru/series/copyhigh

Obrigado, apenas como deixar a EA (Robô) saber com que data começar e onde parar.

Acho mais fácil contar 30 velas (30 dias) a partir de 1. Ou 7 candelabros (dias).

Eu recebi este código:

//************************************************************************************************/
double iPointOrderStep()
{
double Awerage30 = 0, SummAwerage30 = 0;
double Awerage7 = 0, SummAwerage7 = 0;

double High30[], Low30[], High7[], Low7[];
//----------------Для месяца---------------------------
int iHigh30 = CopyHigh(Symbol(),PERIOD_D1,1,30,High30);
int iLow30 = CopyLow(Symbol(),PERIOD_D1,1,30,Low30);
//----------------Для недели---------------------------
int iHigh7 = CopyHigh(Symbol(),PERIOD_D1,1,7,High7);
int iLow7 = CopyLow(Symbol(),PERIOD_D1,1,7,Low7);

for(int i=0;i<30;i++) 
   {
      SummAwerage30 += (High30[i]-Low30[i]);
   }
for(int i=0;i<7;i++) 
   {
      SummAwerage7 += (High7[i]-Low7[i]);
   }

   Awerage30 = SummAwerage30/30;
   Awerage7 = SummAwerage7/7;
   
   double iPointOrderStep = NormalizeDouble(((Awerage30+Awerage7)/2),0);
   return (iPointOrderStep/6);
}
//************************************************************************************************/

Mas infelizmente ele dá um valor = 0.

Você pode me dizer onde está o erro...

E também...

Como fazer o cálculo uma vez por semana no início da sessão ou quando o terminal foi reiniciado ?

 
Alexander Layzerevich:

Obrigado, mas ainda não entendi como ele pode ser usado no meu caso.

A essência do ATR é a altura média das barras ao longo de um período. Mais vale usar MA(alta)-MA(baixa). É mais fácil do que desdobrar o excesso

 
Igor Zakharov:

A essência do ATR é a altura média das barras ao longo de um período. Você também pode usar MA(alta)-MA(baixa). É mais fácil do que reverter o excesso

ou seja, de acordo com o Exemplo

intiATR(
símbolo de corda,// nome do símbolo
PeríodoENUM_TIMEFRAMES,// período
intma_period// período de cálculo da média
);

duplo Awerage30= iATR(Symbol(),PERIOD_D1, 30); este será o valor numérico médio para 30 dias ?

 
Alexander Layzerevich:

ou seja, de acordo com o Exemplo

intiATR(
símbolo de corda,// nome do símbolo
PeríodoENUM_TIMEFRAMES,// período
intma_period// período de cálculo da média
);

duplo Awerage30= iATR(Símbolo(),PERÍODO_D1, 30); será o valor médio para 30 dias ?

Não dias de calendário. 30 dias para trás (domingos, sábados)

A julgar pela função sem mudança de parâmetro que você está fazendo em 5, e você fez uma pergunta em 4 :)

 
Igor Zakharov:

Apenas não as do calendário. Barras de 30 dias para trás (domingos, sábados)

A julgar pela função sem o parâmetro de deslocamento que você está fazendo em 5 e você fez a pergunta em 4 :)

Este ramo é para ambos os terminais. Especialmente com as mesmas funções.

 
Artyom Trishkin:
Este ramo está em ambos os terminais. Especialmente com as mesmas funções.

O título deve ser corrigido então?

Razão: