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

 
prom18:

Talvez haja exemplos. Visualmente, seria mais fácil de entender. Obrigado.

Se eu entender corretamente que você precisa de barras em um determinado intervalo de tempo, você pode selecioná-las usando o iTime
 
prom18:

Olá. Estou lendo um livro didático. Há alguns exemplos de como escrever indicadores. Tenho uma pergunta relativa ao indicador de janela separada.mq4. Você pode definir ali o número de barras calculadas. E se você precisar especificar o cálculo desde o preço de abertura do dia (ou desde zero) até o preço de fechamento do dia? Como devo fazer isso? Tentei procurar uma solução, mas não a encontrei.

Aqui está o preço de abertura do dia no período de tempo atual

//+------------------------------------------------------------------+
//|                                                      DayOpen.mq4 |
//|                                            Copyright 2018, IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   int i,limit;
   static double dayopen=0.0;
   static int lastday=0;
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      dayopen=0.0;
      lastday=0;
     }
   else limit=rates_total-prev_calculated;
   for(i=limit; i>=0; i--)
     {
      if(TimeDay(time[i])!=lastday)
        {
         dayopen=open[i];
         lastday= TimeDay(time[i]);
        }
      Label1Buffer[i]=dayopen;
     }
   return(rates_total);
  }
 

Olá! É possível encontrar a barra certa na história para o DIREITO de uma determinada barra por condição? Obrigado.

 
Sfinks35:

Olá! É possível encontrar a barra certa na história para o DIREITO de uma determinada barra por condição? Obrigado.

Sim, nós podemos.

 
Artyom Trishkin:

Você pode.

Como você faz isso? Por favor, me diga.
 
Sfinks35:
Como você faz isso? Você pode me falar sobre isso, por favor?

E como você encontra um determinado bar?

 
Artyom Trishkin:

Como você encontra um determinado bar?


Demorei muito tempo, mas escrevi uma função como esta:

duplo GetPatt5barsDN()
{
duplo baixo3 = 0;
índice int = 0;
for(int i=1; i<20; i++)
{
se
((Fechar[i] > Abrir[i]) &&
(Fechar[i+1] > Abrir[i+1]) &&
(Fechar[i+2] > Abrir[i+2]) && //Baixo[i+2] é necessário nesta vela
(Fechar[i+3] < Abrir[i+3]) &&
(Fechar[i+4] < Abrir[i+4])

low3 = Low[i+2];
índice = i+2;
}

retorno(baixo3);
}

 
Igor Makanu:

aqui está o preço de abertura do dia na atual TF

Obrigado, Igor. Mas eu não o formulei corretamente. O indicador é calculado e desenhado para um número especificado de barras (50 neste caso) e na janela separada. Não precisa do preço aberto, mas da primeira barra do dia para indicar o MA. Mas de qualquer forma, obrigado.

 
Igor Makanu:

aqui está o preço de abertura do dia na atual TF

Você pode me dizer o que está escrito em

int i,limit=prev_calculated==0 ? tarifas_total-1 : tarifas_total-prev_calculadas;

"==" , "?" , ": "

?

 
Sfinks35:


Demorei muito tempo, mas escrevi uma função como esta:

Retornar também o índice no parâmetro de função passado pelo link

Razão: