Perguntas de principiantes em MQL5. Os profissionais não passam por eles. - página 7

 
Artyom Trishkin:

DRAW_NONE == 0

DRAW_LINE == 1

Por isso, tem outra coisa algures. Também é suposto funcionar para si.

Ainda não lhe posso dizer o que é, mas nem sempre funciona.
 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 
Artyom Trishkin:

Não, não é necessário. Tudo é feito uma vez no limite>1. Esta é a primeira corrida e o carregamento da história. E se tiver período de alisamento_sm=10, então o limite, neste caso, deve ser inferior em 10. Correspondentemente:

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - valor para inicializar o tampão - 0 ou EMPTY_VALUE - conforme o caso. Ou -100500 ...

como sugere no seu exemplo -- esta não é a forma correcta de o fazer -- ou, se não o entender, dê uma explicação detalhada.

Decidir sobre o que se chama "Esta é a primeira história de corrida e carregamento" -- é feito por pré-cálculo

limite (não é claro qual é o limite no seu caso) - se for o número de barras, a partir do qual o recálculo começa - então o limite aqui pode ser superior a 1, por exemplo, 5 minutos sem ligação - no aparecimento da ligação no limite M1=5, e não há necessidade de recalcular o indicador desde o início

pode ver nos exemplos de terminais padrão como utilizar tudo.

exemplos do indicador Bears:

MQL4 (numeração das barras desde o início até ao fim):

   int limit=rates_total-prev_calculated;
//---
   if(rates_total<=InpBearsPeriod)
      return(0);
//---
   if(prev_calculated>0)
      limit++;
   for(int i=0; i<limit; i++)

MQL5 (numeração das barras desde o fim até ao início):

   if(prev_calculated<InpBearsPeriod)
      limit=InpBearsPeriod;
   else limit=prev_calculated-1;
//--- the main loop of calculations
   for(i=limit;i<rates_total && !IsStopped();i++)
 

Olá a todos. Eu costumava ter uma conta de demonstração no MT-5. Perdi a minha palavra-passe de login para entrar no MT-5 depois de ter reinstalado o meu Windows. Agora registei-o em terminal web

A minha conta demo MT-5. Tudo bem. Coloquei novo login e senha no terminal doméstico regular MT-5. Todos os trabalhos, apenas na abertura da nova encomenda F9,

numa janela de nova encomenda - os botões Comprar e Vender não estão activos. Não posso fazer uma encomenda. Por favor, o que devo fazer?

Lamento, mas tenho de perguntar.

Não tenho encomendas. Obrigado.

 
Shara1:

Olá a todos. Eu costumava ter uma conta de demonstração no MT-5. Perdi a minha palavra-passe de login para entrar no MT-5 depois de ter reinstalado o meu Windows. Agora registei-o em terminal web

A minha conta demo MT-5. Tudo bem. Coloquei novo login e senha no terminal doméstico regular MT-5. Todos os trabalhos, apenas na abertura da nova encomenda F9,

numa janela de nova encomenda - os botões Comprar e Vender não estão activos. Não posso fazer uma encomenda. Por favor, o que devo fazer?

Lamento, mas tenho de perguntar.

Obrigado.

Eu compreendi o problema. Eu tinha 0,00 na nova janela de encomenda F9 e o volume era de 0,00. Coloquei 0,01 e funcionou.

 

Olá, por favor aconselhem, há estas cordas em alguns Conselheiros Especialistas.

  double highest=DBL_MIN,lowest=DBL_MAX;

Pergunta - para que são as variáveis equiparadas a estas constantes DBL_MIN, DBL_MAX?

 
refounder83:

Olá, por favor aconselhem, há estas cordas em alguns Conselheiros Especialistas.

A minha pergunta é - para que são as variáveis equiparadas a estas constantes DBL_MIN e DBL_MAX?

Para os comparar com dados reais que são obviamente menos do que DBL_MAX e obviamente mais do que DBL_MIN.

Por exemplo:

double x=DBL_MIN;
int total=ArraySize(array);
for(int i=0; i<total; i++)
  {
   double y=array[i];  
   if(y>x) x=y;
  }
Print("x=",DoubleToString(x,Digits()));
 
Obrigado, estou a ver).
 

Este procedimento é feito para converter o tempo do servidor em segundos?

datetime time=TimeTradeServer()+60*60*24;
   
  
 
refounder83:

Este procedimento é feito para converter o tempo do servidor em segundos?

Isto é "tempo de servidor" mais um dia (60 segundos * 60 minutos * 24 horas)

Pode usar PeriodSeconds()

Print("PeriodSeconds(PERIOD_D1)=",PeriodSeconds(PERIOD_D1),", PeriodSeconds(PERIOD_H1)*24=",PeriodSeconds(PERIOD_H1)*24,", 60*60*24=",60*60*24);
Razão: