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

 
m-r LSV:

Estoulendo isto bem?

if(rates_total - prev_calculated == 1)
 Print("Новый бар");
 
Taras Slobodyanik:

Obrigado, eu tenho isto agora

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[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
   Print("Новый бар");


return(rates_total);

	          
 

Você pode me dizer a direção da última vela fechada ao abrir um bar?

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[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
   //Print("Новый бар");
   
   if(open[1] > close[1])
   {
      Print("Dn");
   }
   else if(open[1] < close[1])
   {
      Print("Up");
   }

return(rates_total);

Este código sempre mostra a mesma mensagem, não importa qual vela foi fechada.
Eu entendo que preciso recalcular o castiçal através de um laço ?
Por favor, avisem, pessoal!

 
Taras Slobodyanik:

Por que você zombaria de um programador inexperiente como esse?

E se uma história perdida for carregada e a diferença for maior que 1? Não queremos saber, vamos pular uma barra... vamos pensar nisso, mais uma, menos uma. E sem explicações, por que devemos dar o código? Veja o que você recebe no final?

 
Alexey Viktorov:

Por que você zombaria de um programador inexperiente como esse?

E se uma história perdida for carregada e a diferença for maior que 1? Não queremos saber, vamos pular uma barra... vamos pensar nisso, mais uma, menos uma. E sem explicações, por que devemos dar o código? Veja o que você recebe no final?

Alexei, diga-me o caminho certo. Por favor.
 
Alexey Viktorov:

Por que você zombaria de um programador inexperiente como esse?

E se uma história perdida for carregada e a diferença for maior que 1? Não queremos saber, vamos pular uma barra... vamos pensar nisso, mais uma, menos uma. E sem explicações, por que devemos dar o código? Veja o que você recebe no final?

É óbvio).

Se estiver carregada, será mais de 1 e não éuma barra nova, por que manter o controle, não há tal coisa no problema.

 
m-r LSV:

Você pode me dizer a direção da última vela fechada ao abrir um bar?

Este código sempre mostra a mesma mensagem, não importa qual vela foi fechada.
Eu entendo que preciso recalcular o castiçal através de um laço ?
Por favor, avisem, pessoal!

porque não há parênteses.

if(rates_total - prev_calculated == 1)
   {
   //Print("Новый бар");
   if(open[1] > close[1])
        {
        Print("Dn");
        }
   else if(open[1] < close[1])
        {
        Print("Up");
        }
   }
 
m-r LSV:

Estoulendo isto bem?

Isso mesmo.

m-r LSV:

A abertura da vela é atrasada de 9 a 12 segundos.
Você poderia me dizer se este é o primeiro tique?

É extremamente importante para mim fazer cálculos e realizar qualquer ação no primeiro sinal de uma vela nova.


Uma nova vela é formada no primeiro tique.

Para verificar, você pode pedir os carrapatos

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[])
 {
  MqlTick tick[];
  if(prev_calculated > 0 && rates_total > prev_calculated)
   {
    if(CopyTicks(_Symbol, tick, COPY_TICKS_ALL, 0, 2) <= 0)
      Print("ERR ", GetLastError());
    else
      ArrayPrint(tick);
   }

  return(rates_total);
 }

e ver que o último sinal pertence à vela atual e o sinal anterior, respectivamente, à vela anterior.

2021.06.02 17:50:59.311 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:50:59.311 00 (EURUSD,M1)  [0] 2021.06.02 17:50:58 1.22005 1.22007 0.0000        0 1622656258958       4       0.00000
2021.06.02 17:50:59.311 00 (EURUSD,M1)  [1] 2021.06.02 17:51:00 1.22004 1.22010 0.0000        0 1622656260655       6       0.00000
2021.06.02 17:51:58.741 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:51:58.741 00 (EURUSD,M1)  [0] 2021.06.02 17:51:59 1.22021 1.22026 0.0000        0 1622656319887       6       0.00000
2021.06.02 17:51:58.741 00 (EURUSD,M1)  [1] 2021.06.02 17:52:00 1.22020 1.22025 0.0000        0 1622656320080       6       0.00000

Por exemplo, na minha demonstração, ela abre sem atrasos.

Mas em um par menos líquido, há um atraso de 1 segundo

2021.06.02 17:55:59.742 00 (CADJPY,M1)                   [time]  [bid]  [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:55:59.742 00 (CADJPY,M1)  [0] 2021.06.02 17:55:59 90.881 90.885  0.000        0 1622656559379       2         0.000
2021.06.02 17:55:59.742 00 (CADJPY,M1)  [1] 2021.06.02 17:56:01 90.882 90.887  0.000        0 1622656561076       6         0.000
 
Taras Slobodyanik:

é óbvio)

Se estiver carregada, será mais de 1, e não éuma Nova Barra, por que manter o controle da mesma, não há tal coisa na tarefa.

Onde está escrito que não pode haver uma subcarga de história junto com o novo bar?
 
Taras Slobodyanik:

porque não há parênteses

Não ajudou :(

2021.06.02 17:54:09.465 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:55:09.439 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:56:09.686 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:57:09.471 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:58:09.586 Test (Volatility 10 Index,M1)      Up
Razão: