Come si fa ad algoritmizzare il rilevamento dei cluster di alimentazione MA? - pagina 15

 

Domanda chiarita, l'errore era nell'aggiungere più parametri di controllo alla classe quando si scarica nell'EA!

Buona giornata, per favore consigliatemi - cosa non ho capito?

Ho scaricato i dati in .bat, poi li carico, ma solo la prima voce è corretta, poi i dati non coincidono.


Il significato del codice è il seguente

indicatore

- Compila i nuovi dati se sono presenti nel file.

il consulente

- Scarica i dati in una classe.


In indicatore è caricato come -

//+------------------------------------------------------------------+
//| Выгружаю данные с файла если он есть                             |
//+------------------------------------------------------------------+
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());
  }

Nell'Expert Advisor, scaricatelo come segue -

//+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
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);
        }
     }
  }
 
Almeno dovresti avere un po' di codice in modo da poterlo eseguire per conto tuo, girarlo, curiosare...
 

Ciao, continuando a padroneggiare un modo per riconoscere le imbracature MA

Ha preso un array di 400 MA di una barra con valori di periodo: - sm.d[per-1].m[bar]

L'ho tracciato sul grafico XY per vedere come identificare i fasci. la gamma è dalla 4a alla 400a MA di una barra

Asse X - periodo 4-400



Differenziato, ottenuto questo grafico

Ho capito che le curve formate sono le aste.


La differenziazione è fatta con l'aiuto di un programma speciale, ma non posso usare mql. Forse, chi sa come farlo in mql5?

Anche se non è nemmeno facile determinare la portata di questo arrotondamento!!! Qualcuno ha qualche suggerimento?

Come determinare questo intervallo?

O questo?


 
Mikhail Toptunov:

Ciao, continuando a padroneggiare un modo per riconoscere le imbracature MA

Ha preso un array di 400 MA di una barra con valori di periodo: - sm.d[per-1].m[bar]

L'ho tracciato sul grafico XY per vedere come identificare i fasci. la gamma è dalla 4a alla 400a MA di una barra

Asse X - periodo 4-400



Differenziato, ottenuto questo grafico

Ho capito che le curve formate sono le aste.


La differenziazione è fatta con l'aiuto di un programma speciale, ma non posso usare mql. Forse, chi sa come farlo in mql5?

Anche se non è nemmeno facile determinare la portata di questo arrotondamento!!! Qualcuno ha qualche suggerimento?

Come determinare questo intervallo?

O questo?


"Prodifferenziato" - può spiegarci come si fa?
 

Penso - equazione differenziale ordinaria (differenziazione e integrazione)

Derivata:1(X),2(Y)

 
Mikhail Toptunov:

Penso - equazione differenziale ordinaria (differenziazione e integrazione)

Derivata:1(X),2(Y)

per esempio c'è una citazione

come differenziare?

senza pacchetti, per codice?

 
Renat Akhtyamov:

per esempio c'è una citazione

come differenziare?

senza pacchetti, per codice?

Scusi, lo sta chiedendo a me?

- Non ne sono a conoscenza. Mi sono chiesto: COME?

 
Mikhail Toptunov:

Mi scusi, lo sta chiedendo a me?

- Non ne sono a conoscenza. Mi sono chiesto: COME?

Sì, interessante.

qui, su Google.

Differenziazione di serie temporali - passare da una serie X(t) a una serie di differenze X(t) - X(t-1)

 
Renat Akhtyamov:

Sì, interessante.

qui, ho cercato su Google

Differenziare una serie temporale - passare da una serie X(t) a una serie di differenze X(t) - X(t-1)

Non capisco!

 

Cari professionisti, come scegliete questa gamma?