Como vocês algoritmam a detecção de aglomerados de ração MA? - página 15

 

Pergunta eliminada, o erro foi adicionar mais parâmetros de controle à classe ao descarregar na EA!

Bom dia, por favor, avise - o que eu não peguei?

Eu baixei os dados em .bat, e depois carrego-os, mas apenas a primeira entrada está correta, depois os dados não coincidem.


O significado do código é o seguinte

indicador

- Preencha os novos dados, se eles estiverem no arquivo.

o conselheiro

- Descarregar dados para uma classe.


No indicador é carregado como -

//+------------------------------------------------------------------+
//| Выгружаю данные с файла если он есть                             |
//+------------------------------------------------------------------+
void TextCsv0(int size)
  {
   ArrayFree(cand_buff);
   ArrayResize(cand_buff,0);
   long count=FileLoad("test.bin",cand_buff);
   if(count!=-1)
     {
      for(int i=0; i<count; i++)
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u",
                     TimeToString(cand_buff[i].time,TIME_DATE|TIME_SECONDS),
                     cand_buff[i].bar,cand_buff[i].period,cand_buff[i].praceMA);
     }
   TextCsv1(size,(int)count);
  }
//+------------------------------------------------------------------+
//| Загружаю новые данные                                            |
//+------------------------------------------------------------------+
void TextCsv1(int size,int count)
  {
   int _count=0;
   if(count==-1) count=0;
   for(int i=0; i<size; i++)
      if(TextCsv2(count,i)==true)
        {
         ArrayResize(cand_buff,count+(int)_count+1);
         cand_buff[count+_count].period=Alt[i].period;
         cand_buff[count+_count].bar=Alt[i].bar;
         cand_buff[count+_count].praceMA=Alt[i].praceMA;
         cand_buff[count+_count].time=Alt[i].time;
         cand_buff[count+_count].High=Alt[i].High;
         cand_buff[count+_count].Low=Alt[i].Low;
         cand_buff[count+_count].type=Alt[i].type;
         _count++;
        }
   TextCsv(size,_count,count);
  }
//+------------------------------------------------------------------+
//| Проверка на новые данные                                         |
//+------------------------------------------------------------------+
bool  TextCsv2(long count,int i)
  {
   bool fl=true;
   for(int j=(int)count-1; j>=0; j--)
      if(cand_buff[j].period==Alt[i].period)
         if(cand_buff[j].time==Alt[i].time)
            return(false);
   return(true);
  }
//+------------------------------------------------------------------+
//| Загрузка                                                         |
//+------------------------------------------------------------------+
void TextCsv(int size,int _count, int count)
  {
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError();
   int file_handle=FileOpen("test.bin",FILE_READ|FILE_WRITE|FILE_BIN);//FileOpen("test "+"//"+_symbol(),FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      FileSeek(file_handle,0,SEEK_END);
      //--- подготовим счетчик количества байт
      uint counter=0;
      //--- в цикле запишем значения массива
      for(int i=0; i<_count; i++)
         counter+=FileWriteStruct(file_handle,cand_buff[count+i]);
      //  PrintFormat("В файл %s записано %d байт информации",_symbol(),counter);
      PrintFormat("Всего байтов: %d * %d * %d = %d, %s",size,4,7,size*4*7,size*4*7==counter ? "Верно" : "Ошибка");
      //--- закрываем файл
      FileClose(file_handle);
      // PrintFormat("Данные записаны, файл %s закрыт",_symbol());
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",_symbol(),GetLastError());
  }

No Expert Advisor, faça o download da seguinte forma -

//+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
void LoadFail(datetime InpTimeDrawTo)
  {
   ArrayFree(buf0);
   long count=FileLoad("test.bin",buf0);
   if(count!=-1)
     {
      for(int i=0; i<count; i++)
        {
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u",
                     TimeToString(buf0[i].time,TIME_DATE|TIME_SECONDS),
                     buf0[i].bar,buf0[i].period,buf0[i].praceMA,buf0[i].High,buf0[i].Low,buf0[i].type);
        }
     }
  }
 
Pelo menos você deveria ter algum código para poder executá-lo por conta própria, torcê-lo, dar uma olhada...
 

Olá, continuando a dominar uma forma de reconhecer os arneses de MA

Levou uma matriz de 400 MAs de uma barra com valores de período: - sm.d[per-1].m[bar]

Plotou-a no gráfico XY para ver como identificar os feixes. o intervalo é de 4 a 400 MA de uma barra

Eixo X - período 4-400



Diferenciado, tenho este gráfico

Entendo que as curvas formadas são as varas.


A diferenciação é feita com a ajuda de um programa especial, mas eu não posso usar mql. Pode ser, quem sabe como fazê-lo em mql5?

Embora também não seja fácil determinar o alcance deste arredondamento!!! Alguém tem alguma sugestão?

Como determinar esta faixa?

Ou este aqui?


 
Mikhail Toptunov:

Olá, continuando a dominar uma forma de reconhecer os arneses de MA

Levou uma matriz de 400 MAs de uma barra com valores de período: - sm.d[per-1].m[bar]

Plotou-a no gráfico XY para ver como identificar os feixes. o intervalo é de 4 a 400 MA de uma barra

Eixo X - período 4-400



Diferenciado, tenho este gráfico

Entendo que as curvas formadas são as varas.


A diferenciação é feita com a ajuda de um programa especial, mas eu não posso usar mql. Talvez, quem sabe como fazer isso em mql5?

Embora também não seja fácil determinar o alcance deste arredondamento!!! Alguém tem alguma sugestão?

Como determinar esta faixa?

Ou este aqui?


"Prodiferenciado" - você pode explicar melhor como isso é feito?
 

Eu penso - equação diferencial comum (diferenciação e integração)

Derivativo:1(X),2(Y)

 
Mikhail Toptunov:

Eu penso - equação diferencial comum (diferenciação e integração)

Derivativo:1(X),2(Y)

por exemplo, há uma citação

como diferenciar?

sem embalagens, por código?

 
Renat Akhtyamov:

por exemplo, há uma citação

como diferenciar?

sem pacotes, por código?

Desculpe, você está me perguntando?

- Eu não estou ciente disso. Eu meio que me perguntei: COMO?

 
Mikhail Toptunov:

Desculpe-me, você está me perguntando?

- Não estou ciente disso. Eu meio que me perguntei: COMO?

Sim. Interessante.

aqui, no Google.

Diferenciação de séries cronológicas - passando de uma série X(t) para uma série de diferenças X(t) - X(t-1)

 
Renat Akhtyamov:

Sim. Interessante.

aqui, eu pesquisei no Google

Diferenciando uma série cronológica - passando de uma série X(t) para uma série de diferenças X(t) - X(t-1)

Eu não entendo!

 

Caros profissionais, como vocês escolhem esta gama?