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

 
Yevhenii Levchenko:
As citações estão armazenadas na pasta do testador/histórico?

Não.

\História*.dat - arquivo de citações.

\História do servidor*.hst - citações.

\Testador de História*.fxt - gerado a partir de arquivos *.hst cada vez que você começa o teste ou otimização.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Pergunta aos desenvolvedores do MT4: Arquivos do testador

Sergey Basov, 2016.01.14 07:25

Não sou um desenvolvedor do MT4, mas posso responder por experiência própria.

Excluí-los não afetará nada. Eles serão gerados novamente durante os próximos testes ou otimização.

As citações são armazenadas em arquivos *.hst, dos quais o testador gera arquivos *.fxt, e cada vez que são geradas novamente.


 
Sergey Basov:

Não.

\História*.dat - arquivo de citações.

\História do servidor*.hst - citações.

\História de teste*.fxt - gerada a partir de arquivos *.hst toda vez que você inicia um teste ou uma otimização.


Este material coloca muita tensão no acionamento na partida. Por que o testador não a apaga se ela a gera novamente todas as vezes? Existe alguma maneira de configurá-lo?

 
Nauris Zukas:

Olá! eu queria obter o horário de abertura do bar do mês corrente, mas recebi um erro 4074 (ERR_NO_MEMORY_FOR_HISTORY). Também é interessante que se eu começar a testar a partir de 1 de junho, é correto, mas a partir de 2 de junho começa a dar o erro. Como resolver o problema deste mês?

Olá!

Eu enfrentei o mesmo erro 4074(ERR_NO_MEMORY_FOR_HISTORY) ao testar com citações de outro corretor. E não são as primeiras citações de terceiros que eu uso. Eu não tenho tal erro com os outros. Qual é a razão do erro, e como corrigi-lo, talvez alguém já o tenha descoberto?

 

Por que o código mais simples do mt5 funciona de maneira completamente diferente do mt4? Por exemplo, o seguinte código, que calcula o valor médio do amortecedor mt4 muwings:

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...não funciona no mt5. Para que funcione de forma mais ou menos semelhante (por método de intuição), você precisa dele assim:

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

E então, os primeiros 7 amortecedores mostram alguns valores proibitivos. Tudo mais parece funcionar bem. Minha mandíbula apertada por uma coisa tão trivial)

Por favor, informe como resolver isso corretamente...

 

Adicionado Comentário entre os cálculos e tudo redesenhado :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
Qual é o problema?
 
Não consigo descobrir como escrever tal condição com o iFractal? Se:
Primeiro Fractal_up< Segundo Fractal_up e depois.....
E o mesmo para a queda fractal
 
Vladimir Baskakov:
Não consigo descobrir como escrever tal condição com o iFractal? Se:
Primeiro Fractal_up< Segundo Fractal_up e depois.....
E o mesmo com a queda fractal

Fim de semana. Brincando...

 
Vladimir Baskakov:
Não consigo descobrir como escrever tal condição com o iFractal? Se:
Primeiro Fractal_up< Segundo Fractal_up e depois.....
E o mesmo com a queda fractal

fora de pronto, é assim que você procura os fractais:

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

Você precisa ligar 2 vezes para encontrar o primeiro fractal e o subseqüente Up, mais ou menos assim:

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

Adicionado Comentário entre os cálculos e tudo redesenhado :D

Qual é o truque?

ArraySetAsSeries(true) para amortecedores indicadores.

 
Igor Makanu:

de pronto, é assim que você procura os fractais:

Você precisa ligar 2 vezes para encontrar o primeiro fractal e o próximo Up, como este:

Obrigado, funciona, apenas uma condição é cumprida:

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

E eu preciso

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

E não posso abrir posições com ele por alguma razão.

Razão: