Wie funktioniert der Algorithmus zur Erkennung von MA-Futtermittelclustern? - Seite 15

 

Frage geklärt, der Fehler lag im Hinzufügen weiterer Kontrollparameter zur Klasse beim Entladen im EA!

Guten Tag, bitte beraten Sie mich - was habe ich nicht verstanden?

Ich habe Daten in .bat heruntergeladen, und dann lade ich sie, aber nur der erste Eintrag ist korrekt, dann stimmen die Daten nicht überein.


Die Bedeutung des Codes ist wie folgt

Anzeige

- Tragen Sie die neuen Daten ein, wenn sie in der Datei vorhanden sind.

der Berater

- Daten in eine Klasse dumpen.


Im Indikator wird es hochgeladen als -

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

Laden Sie ihn im Expert Advisor wie folgt herunter -

//+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
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);
        }
     }
  }
 
Zumindest sollten Sie etwas Code haben, damit Sie ihn selbst ausführen, verdrehen, herumstochern können...
 

Hallo, ich versuche weiterhin, einen Weg zu finden, MA-Kabelbäume zu erkennen.

Nimmt ein Array von 400 MAs eines Balkens mit Periodenwerten: - sm.d[per-1].m[bar]

Aufgetragen im XY-Diagramm, um zu sehen, wie die Bündel zu identifizieren sind. Der Bereich reicht vom 4. bis zum 400. MA eines Balkens

X-Achse - Zeitraum 4-400



Differenziert, diese Tabelle erhalten

Ich verstehe, dass die geformten Kurven die Stangen sind.


Die Differenzierung wird mit Hilfe eines speziellen Programms durchgeführt, aber ich kann mql nicht verwenden. Wer weiß vielleicht, wie man das in mql5 macht?

Allerdings ist es auch nicht einfach, die Reichweite dieser Rundung zu bestimmen!!! Hat jemand irgendwelche Vorschläge?

Wie lässt sich diese Spanne bestimmen?

Oder diese?


 
Mikhail Toptunov:

Hallo, ich versuche weiterhin, einen Weg zu finden, MA-Kabelbäume zu erkennen.

Nimmt ein Array von 400 MAs eines Balkens mit Periodenwerten: - sm.d[per-1].m[bar]

Aufgetragen im XY-Diagramm, um zu sehen, wie die Bündel zu identifizieren sind. Der Bereich reicht vom 4. bis zum 400. MA eines Balkens

X-Achse - Zeitraum 4-400



Differenziert, diese Tabelle erhalten

Ich habe verstanden, dass die gebildeten Kurven ein Flagellum sind.


Die Differenzierung wird mit Hilfe eines speziellen Programms durchgeführt, aber ich kann mql nicht verwenden. Wer weiß vielleicht, wie man das in mql5 macht?

Allerdings ist es auch nicht einfach, die Reichweite dieser Rundung zu bestimmen!!! Hat jemand irgendwelche Vorschläge?

Wie lässt sich diese Spanne bestimmen?

Oder diese?


"Prodifferenziert" - können Sie erläutern, wie das gemacht wird?
 

Ich denke - gewöhnliche Differentialgleichung (Differenzierung und Integration)

Ableitung:1(X),2(Y)

 
Mikhail Toptunov:

Ich denke - gewöhnliche Differentialgleichung (Differenzierung und Integration)

Ableitung:1(X),2(Y)

z.B. gibt es ein Zitat

Wie kann man differenzieren?

ohne Pakete, nach Code?

 
Renat Akhtyamov:

zum Beispiel gibt es ein Zitat

Wie kann man differenzieren?

ohne Pakete, per Code?

Entschuldigung, fragen Sie mich?

- Ich bin mir dessen nicht bewusst. Ich habe mich irgendwie gefragt: WIE?

 
Mikhail Toptunov:

Entschuldigung, fragen Sie mich das?

- Ich bin mir dessen nicht bewusst. Ich habe mich irgendwie gefragt: WIE?

Ja, interessant.

hier, gegoogelt.

Differenzierung von Zeitreihen - Übergang von einer Reihe X(t) zu einer Reihe von Differenzen X(t) - X(t-1)

 
Renat Akhtyamov:

Ja, interessant.

hier, ich habe gegoogelt

Differenzieren einer Zeitreihe - Übergang von einer Reihe X(t) zu einer Reihe von Differenzen X(t) - X(t-1)

Ich verstehe das nicht!

 

Liebe Fachleute, wie wählen Sie dieses Angebot aus?