Prüfung von Echtzeit-Prognosesystemen - Seite 74

 
neoclassic писал(а) >>
Sie können die Datei forecast.csv sehen

Nicht mehr :o( Aber am Wochenende gibt es wieder welche! :o)

 
Ich muss die Struktur der Daten verstehen. Ich erinnere mich, dass ich ein ähnliches Problem gelöst habe, bei dem ich die Flugbahnen in einem Diagramm darstellen musste. Aber zu diesem Zweck habe ich einen Indikator verwendet. Es war also notwendig, die Länge der Trajektorien zu ermitteln, um SetIndexShift zu bestimmen. Die Datei mit den Flugbahnen hatte folgendes Format: Zeilen mit Werten der 1. Flugbahn, leer, 2. Um die Länge zu bestimmen, wurde jede Auslesung auf eine leere Zeile geprüft, und wenn diese gefunden wurde, wurde der nächste Puffer aufgefüllt und mit einer Verschiebung bestimmt. Ich hoffe, es hat geholfen.
 
grasn >> :

Ich habe ein Skript geschrieben, um eine Reihe von wahrscheinlichen Realisierungen zu generieren (es ist sehr einfach):

Das Skript funktioniert folgendermaßen:

Wie man die Länge der Wahrscheinlichkeitsstichprobe aus einer Textdatei automatisch bestimmt, ist mir ein Rätsel, bisher wird sie manuell eingestellt. Wenn Sie eine Idee haben, beraten Sie mich bitte.

Ich habe eine Funktion in ShowSeries, um die Größe der Serie zu bestimmen - es ist in einem global durch eine zusätzliche preemptive Lesen der Datei, wie diese getan:

int GetFileCount()
{
  int count = 0;
  int columns = 0;
  int handle = FileOpen( FileName, FILE_CSV| FILE_READ, Delimiter);
  if( handle > 0)
  {
    while(!FileIsEnding( handle))
    {
      string x = FileReadString( handle);
      if(StringLen(StringTrimLeft(StringTrimRight( x))) == 0) break;
      if( count == 0)
      {
        columns++;
      }
      if(FileIsLineEnding( handle))
      {
        count++;
      }
    }
    FileClose( handle);
  }
  Comment("Column ", ColumnNo, "(", columns, "),", " Lines:", count);
  return( count);
}

Wenn Sie in einer Datei im Binärformat speichern, können Sie schnell mit der offensichtlichen Formel (Länge - Dateikopf - falls vorhanden)/Größe - ein Datensatz berechnen.

Ich verstehe allerdings nicht, welchen Vorteil die Verwendung einer Reihe von Objekten anstelle von Indikatoren hat. Ich normalerweise im Gegenteil, wenn ich passieren zu müssen, einige Code, wo Objekte angewendet werden, konvertiere ich es zu Puffern. Die einzigen Objekte, die notwendig sind, sind Beschriftungen, imho ;-), und nur, weil methacquotes sich nicht die Mühe gemacht hat, Textanzeigen zu machen.

Und ein weiterer wichtiger Punkt. Wir werden den TS nicht nach Objekten bauen können. Ein Indikator muss ein Signal sein - geben Sie Signale durch iCustom zur Verfügung.

Ich würde diese Richtung bei Objekten als unsachgemäße Kaufgestaltung abtun ;-). Aber das wissen Sie natürlich am besten.

 
neoclassic >> :
Ich muss die Struktur der Daten verstehen. Ich erinnere mich, dass ich ein ähnliches Problem gelöst habe, bei dem ich die Flugbahnen in einem Diagramm darstellen musste. Aber ich habe den Indikator für diesen Zweck verwendet. Es war also notwendig, die Länge der Trajektorien zu ermitteln, um SetIndexShift zu bestimmen. Die Datei mit den Flugbahnen hatte folgendes Format: Zeilen mit Werten der 1. Flugbahn, leer, 2. Um die Länge zu bestimmen, wurde jede Auslesung auf eine leere Zeile geprüft, und wenn diese gefunden wurde, wurde der nächste Puffer aufgefüllt und mit einer Verschiebung bestimmt. Ich hoffe, es hat geholfen.

Es gibt eine Matrix. Ich muss nur die Größe dieser Matrix bestimmen.

 
marketeer >> :

Ich habe eine Funktion in ShowSeries, um die Seriengröße zu bestimmen - dies geschieht schräg durch ein zusätzliches präemptives Lesen der Datei, etwa so:

Wenn Sie in einer Binärdatei speichern, können Sie schnell mit der offensichtlichen Formel (Länge - Dateikopf - falls vorhanden)/Größe - ein Datensatz berechnen.

Ich verstehe allerdings nicht, welchen Vorteil die Verwendung einer Reihe von Objekten anstelle von Indikatoren hat. Ich normalerweise im Gegenteil, wenn ich passieren, um einige Code, wo Objekte angewendet werden müssen, konvertiere ich es zu Puffern. Die einzigen Objekte, die notwendig sind, sind Beschriftungen, imho ;-), und nur, weil methacquotes sich nicht die Mühe gemacht hat, Textanzeigen zu machen.


Ich habe die Funktion gesehen und sogar begrifflich verstanden, was sie tut. Es bleibt zu klären, wie das funktioniert. OK. Ich werde mir am Wochenende eine Auszeit nehmen und darüber nachdenken, und wenn ich es nicht verstehe, werde ich um eine Erklärung bitten.


Und noch ein wichtiger Punkt. Wir werden den TS nicht nach Objekten bauen können. Der Indikator sollte Signal - geben Signale durch iCustom zur Verfügung stehen.

Ich würde diesen Weg mit Objekten als falsches Kaufdesign abschließen.) Aber Sie wissen es natürlich besser.


Das weiß ich, aber im Moment brauche ich es nur für die Visualisierung von Prognosen. Natürlich wird es eine Ebene geben, mit der man verhandeln kann, und ich werde die Daten in die Matrizen eingeben :o)

 
grasn >> :

es gibt eine Matrix. Ich muss nur die Größe dieser Matrix bestimmen.

Wenn jede Zeile der Matrix eine Flugbahn ist, dann würde ich Folgendes tun
   while(FileIsEnding( Handle)==false)
   {
      if(FileIsLineEnding(Handle)) //если строка закончилась, начинаем новую траекторию с 0
      {
         i=0;
      }

      COUNT=FileReadString( Handle);
      realisation=NormalizeDouble(StrToDouble( COUNT), 5);

      ObjectCreate(DoubleToStr( idCount, 10), OBJ_ARROW, 0,Time[0]- timeShift*15*60)+( i)*Period()*60+1, realisation);
      ObjectSet(DoubleToStr( idCount, 10), OBJPROP_ARROWCODE, 250);
      
      i= i+1;
      idCount= idCount+1;

   }
 
neoclassic >> :
Wenn jede Zeile der Matrix eine Flugbahn ist, dann würde ich Folgendes tun

Bisher hat grasn Dateien erzeugt, bei denen die Zeilen die Zeitzählungen und die Trajektorien die Spalten sind. Dieses Layout beizubehalten, wäre zumindest imho bequemer;-) -Ich benutze es überall. Übrigens, das gilt auch für Deductor.

 

Ich habe mir den Code des Indikators angesehen, den grasn auf der vorigen Seite gepostet hat, er liest die Trajektorien zeilenweise. Das Problem, soweit ich es verstehe, ist, dass ich die Länge der Trajektorien kennen muss, um mit dem Zeichnen ab dem 0ten Takt in der Zeit zu beginnen.

Die von mir vorgeschlagene Methode erkennt automatisch das Zeilenende und bewegt den Wagen :-).

Bei der Frage, was praktischer ist, stimme ich zu.

 
Liebe Kolleginnen und Kollegen, vielen Dank für die Beratung. Ich werde es ausprobieren.
 

EURUSD, M15.

Vorhersage für 300 Zählungen (etwas mehr als 3 Tage).

Die wichtigsten Flugbahnen:


Zwei höchstwahrscheinliche Gruppen von Flugbahnen, ungefähr "gleich":


Übertragen auf MT:



PS1: Nur für den Fall, dass das System getestet wird: Es ist noch zu früh, um es für den Handel zu nutzen.

PS2: Ich vermute stark, dass sich das Diagramm beim ersten Zitat in die Geschichte "verschieben" wird.

Dateien:
files.rar  44 kb