Fora de alcance em Necessidade de ajuda - página 3

 

OK

durante este período

 
Dark Kchlyzov:

não entendeu?

por uma semana ou um mês, o mínimo próximo de que dia?
 
Eu entendo, ao longo de todo o período
 
Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1

O mínimo mais próximo na história é inferior a Low_1_Level , que será .

Execute o código para ver como ele funciona.

 
Dark Kchlyzov:

Não tenho erros durante todo o período

Estou anexando o tronco

Arquivos anexados:
20201209.log  3729 kb
 
MakarFX:

Não tenho erros durante todo o período

Estou anexando o tronco.

Parece não haver erro, mas está no registro

Você tem em seu log 19:31:53.126 2016.12.15 00:00:00 Array EURUSD,H1: i = 456 Bar_data_D1 [i][2] = 1.04789

como tenho um preço Min_D:104789 mais que baixo_D1 1.03660 , por convenção não pode ser assim.

se eu substituir o loop for, haverá um erro. e ele será correto.

a expressão real2 está apenas mascarando um erro

i<ArrayRange(Bar_data_D1,0)
 for(int i = 1; ;i++)
    {
     Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
     if( Bar_data_D1 [i][2] < Low_D1_Level)
       {
        Min_D_Level = Bar_data_D1 [i][2];break;
       }
    } 


 
Dark Kchlyzov:


Há uma pergunta. Por que você inicia o loop com o primeiro elemento e não zero?

 
Dark Kchlyzov:

Se você não se importa de me dar um exemplo, como escrevê-lo corretamente?

Tenho alguma experiência em comércio, mas só estou começando a aprender MQL4.

Se você usa MqlRates, então declare um array:

MqlRates Bar_data_D1[];

Ou seja, você obtém uma matriz unidimensional em vez de bidimensional. MqlRates é uma estrutura padrão (descrita na Referência MQL4 em "Basics of the Language" - "Tipos de Dados" - "Estruturas, Classes, Interfaces"). Ela tem todos os campos que você precisa neste caso. Você pode tratá-los desta forma:

Bar_data_D1[i].high; Максимум свечи
Bar_data_D1[i].low; Минимум свечи

i é o índice da matriz.

Da mesma forma, você pode criar sua própria estrutura para registrar os parâmetros dos castiçais. Será menor que Mqlrates por dois campos (spread e real_volume), que você não precisa. A estrutura terá este aspecto:

struct BarData
{ 
   datetime time;         // время начала периода 
   double   open;         // цена открытия 
   double   high;         // наивысшая цена за период 
   double   low;          // наименьшая цена за период 
   double   close;        // цена закрытия 
   long     tick_volume;  // тиковый объем 
};

A declaração de um conjunto de tais estruturas se parece com isto:

BarData Bar_data_D1[];

O acesso aos membros da estrutura é semelhante ao acesso aos membros da estrutura MqlRates.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko:

Exatamente!

 
Ihor Herasko:

Se via MqlRates, você declara a matriz desta forma:

Ou seja, você obtém uma matriz unidimensional em vez de bidimensional. MqlRates é uma estrutura padrão (descrita na Referência MQL4 sob "Language Fundamentals" - "Data Types" - "Structures, Classes, Interfaces"). Ela tem todos os campos que você precisa neste caso. Você pode tratá-los desta forma:

i é o índice da matriz.

Da mesma forma, você pode criar sua própria estrutura para registrar os parâmetros dos castiçais. Será menor que Mqlrates por dois campos (spread e real_volume), que você não precisa. A estrutura terá este aspecto:

A declaração de um conjunto de tais estruturas se parece com isto:

O acesso aos membros da estrutura é semelhante ao acesso aos membros da estrutura MqlRates.

Ok, vou tentar amanhã!

Obrigado por sua ajuda. Informá-lo-ei quando eu descobrir.