Perguntas de um "boneco" - página 38

 

E assim. Está a acontecer! Nem sequer um ano mais tarde. Já me decidi! Verifiquei a documentação da MQL5. Comecei muito pequeno: minimizei algum código de algum indicador numa tentativa de simplificar e compreender a sua estrutura e funcionamento. Depois fiquei atordoado.

Primeiro cavei Fractals - parecia ser inesperadamente pequeno e muito simples. Então raciocinei logicamente: não é razoável arrastar este código de um programa para outro, devo apenas chamar este indicador, copiar e utilizar os valores de buffer já calculados. Se não me engano, fui levado ao passo quase normalizado e levado a um exemplo com iFractals ("Será que fiz bem?") (c)). Reduzi o código tanto quanto possível, limpei tudo o que era desnecessário e convencionalmente desnecessário, deixando apenas a essência. E o que é que encontrei? O código da chamada do indicador não é mais compacto do que o código original do próprio indicador em termos de tamanho e legibilidade.

As perguntas.

1. Qual é o significado de iFractals?

2. O que há de errado comigo?

Obrigado!

P.S.: Ou é apenas um caso especial em que não há benefício no montante do segundo código?

 
x100intraday:

2. O que há de errado comigo?

Este não é um fórum para psiquiatras, mas para programadores de MQL. Normalmente não se quer andar a espreitar nas baratas de outras pessoas.

Seja mais específico nas suas perguntas.
 

É uma questão de

da vida e da morte...

Qual é a forma não criminosa de obter o valor da barra H1 aberta [15625] do período de tempo

Tentei, por muito que tentasse, mas diz erro crítico. Tentei tudo, por isso quem sabe... Sei que são 3 linhas de código... mas que... o direito... o direito... para não atirar um erro...

 
BaTTLeBLooM:

É uma questão de

da vida e da morte...

Que forma não criminosa de se abrir [15625] valor de barra do período de tempo H1

Tentei obtê-lo, mas diz erro crítico. Tentei todo o tipo de coisas, por isso quem sabe... Sei que são 3 linhas de código... mas que... o direito... o direito... para não atirar um erro...


Por favor, dê-me o seu código.

 
Renat:

Por favor, dê-nos o seu código.

aqui está

duplo MTime ( modo int )
{

duplo iOpen_min [], iOpen_hour [], iOpen_4hour [];

ArraySetAsSeries ( iOpen_min, true );
ArraySetAsSeries ( iOpen_hour, true );
ArraySetAsSeries ( iOpen_4hour, true );
int rates_open_min, rates_open_hour, rates_open_4hour;
int err = 0;
do
{
rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );
err ++;
}
enquanto ( ( rates_open_min <= 0 || rates_open_hour <= 0 || rates_open_4hour <= 0) && err < 10 );

double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // Hora
double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5 Hora
dia duplo = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // Dia
double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // Semana
duplo Mês = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // Mês
duplo Mês5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // Meio Ano

duplo Mês25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3 anos

na última linha do último operador, há sempre um erro crítico... O Conselheiro Especialista pode até começar a negociar no Testador de Estratégia, e depois, após um ano e meio de funcionamento, gera um erro e falhas

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
BaTTLeBLooM:

o erro crítico está a exceder os limites da matriz.

de alguma forma poderia tentar isto:

      do
         {    
            //if(err>0) Sleep(10);//желательно с паузой
            rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
            rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );           
            err ++;
         }
      while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000) && err < 10 );   

   if(rates_open_min<7501 || rates_open_hour<20000 || rates_open_4hour<10000) return(-1);//Данные не скопированы
   else
      {
      double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
      double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
      double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
      double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
      double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
      double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];  // Неделя
      double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
      double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];  // Полугодие
      double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];  // 3 года
      }
 
Swan:

erro crítico - exceder os limites da matriz.

de alguma forma, podemos tentar desta forma:

Isto não muda a essência do problema... Se não copiar mais os dados... O Conselheiro Especialista não irá negociar como antes, mas sem erro.

O problema é porque é que esta situação ocorre em primeiro lugar, se a história é enorme... e não o pode usar...

 
Renat:

Por favor, forneça o seu código.

Bem, como não há resposta, vou apenas introduzir )))) manualmente, uma vez que só há um valor
 
BaTTLeBLooM:
Bem, já que não há resposta, vou apenas introduzir )))) manualmente, já que só há um valor.

Não tem quaisquer verificações no seu código. O que pretende então?

 
BaTTLeBLooM:

Isto não muda o problema... se não copiar mais os dados... O Conselheiro Especialista não irá negociar como antes, mas sem erro.

O problema é porque é que esta situação ocorre de todo, se a história é enorme. e não o pode usar...

Os dados serão copiados, mas nem sempre à primeira tentativa ... e após um erro crítico, o Expert Advisor deixa de trabalhar.

enquanto( ... rates_open_hour <= 0 // apenas a quantidade de dados, disponível no momento, será copiada, e a matriz, respectivamente, poderá ser inferior a 15625.


A situação ocorre devido à falta de leitura dos manuais :)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5
Razão: