Prüfung von Echtzeit-Prognosesystemen - Seite 54

 

zu forte928

В данный момент есть первый фактор на основании которого можно сделать вывод о боковом флете на паре евро доллар -

Das Paar hat das Konsolidierungsniveau der OP-Linie bei 1,4850 erreicht. Genau die gleichen Schwankungen wurden an den Punkten 1,3437 und 1,3937 mit dem nachfolgenden Rollback beobachtet, der den Niveaus von 0,382, 0,618 und 1,00 entspricht.

die zweite Abbildung ist das gleiche Diagramm, aber mit berechneten Wachstum Ebenen im Verhältnis zu den niedrigen - 1,4162 und aktuelle 1,4951 und wenn Sie auf der Grundlage dieser Preis-Chart Ebenen 1,4951 und 1,4851 können Sie sehen, dass der Preis ist nur in der Balance Punkt auf der durchschnittlichen Höhe der Schwankungen dieser Indikatoren in den letzten zwei Tagen...Darüber hinaus ist der Indikator der Sättigung hat lange gezeigt, Sättigung Ebene, auf der die Umkehr sollte auftreten

Aber es gibt eine Reihe von Dingen, die dies nicht zulassen:

1) Das Tagesdiagramm zeigt eine negative Wachstumsbewegung (unterer Indikator)

2) Das Tagesdiagramm hat das Konsolidierungsniveau von 0,382 bei 1,4877 auf dem ersten Indikator erreicht

3) Tages-Chart erreicht Konsolidierung Ebene der COP bei 1,4892 auf den zweiten Indikator

4) Es gibt eine aktive Opposition gegen die Aufwärtsbewegung auf dem H4-Chart

5) Vorhandensein von zwei Konsolidierungsniveaus in Bezug auf das Tief von Ende September OP und 0,236 (1,4931 und 1,4933), die ein starkes Indiz für das Vorhandensein einer anhaltenden Korrektur ist

Fortsetzung folgt...

Vielen Dank für die Klarstellung, ich muss sagen, dass ich die TA vor einigen Jahren (für mich selbst) aufgegeben habe, aber es ist immer interessant, kompetente Analysen zu lesen und sie mit meinen Vorhersagen zu vergleichen. Könnten Sie zum besseren Verständnis und zur Vermeidung terminologischer Verwirrung den Begriff "Konsolidierungsebene" erläutern?


zu lassen

Haben Sie schon einmal versucht, nach kritischen Punkten in der Zeitreihe zu suchen?

Nein, habe ich nicht, und bisher habe ich auch keine Ahnung, wie ich sie finden kann. Ich habe einen solchen Begriff wie "Zeitreihengedächtnis" verwendet. Dies ist ein etwas spezifischer Begriff, der in neuronalen Netzen und in der Fraktalanalyse vorkommt, aber man sollte immer den Kontext seiner Anwendung betrachten. Ich meine den Einfluss historischer Zählungen auf künftige Realisierungen des Prozesses. Einfach ausgedrückt, beantwortet dieser Parameter die Frage, wie lange die historischen Reihen zu nehmen sind.


PS: Übrigens, ich erinnere mich, dass Sie versprochen haben, Ihre lineare Bibliothek zu verbessern und eine neue Version zu veröffentlichen...


an Yurixx

1. In MKL4 kann man nicht mit Arrays arbeiten, deren Größe nicht festgelegt ist. Wenn Sie bei der Deklaration des Arrays dessen Größe nicht angegeben haben, müssen Sie dies in init() tun. Außerdem können Sie während der Arbeit die Größe nach Bedarf ändern.


Ich verstehe das nicht, ich mache das nicht und alles funktioniert, ich meine ohne Initialisierung in init()


2. Leas Ratschläge sind sehr praktisch, es lohnt sich, sie zu beherzigen. Es ist durchaus möglich, dass Sie nur Speicherplatz zuweisen und eine Variable mit dem Index des letzten Eintrags haben wollen. Dann ist es wirklich egal, ob Sie die Anzahl der benötigten Elemente kennen oder nicht.

Ich glaube nicht, dass das sehr praktisch ist, weil natürlichmehr Berechnungen gemacht werden müssen. Weitere Schleifen könnten zu den oben genannten hinzugefügt werden. Aber trotzdem würde ich mir das alles ansehen, wenn wir nur ein paar Empfehlungen von den Entwicklern bekommen könnten... :о)

Damit der Rat angemessen ist, sollten Sie genauer erklären, wofür das Array verwendet wird und warum es notwendig ist, seine Größe zu ändern.

Zum Beispiel (und dies ist das einfachste Beispiel), um lokale Extrema (nicht auf dem Graphen) durch die Bedingung y[n]>y[n+1] und y[n]<y[n-1] und entsprechend für ein Minimum zu finden. Soweit ich weiß, kann man das Problem auf verschiedene Weise lösen, z. B. auf diese Weise:

  • Erstellen Sie ein Array mit der gleichen Länge wie die Ausgangsreihe, kodieren Sie darin 0 und 1 für das Vorhandensein eines Extremums.
  • Führen Sie die erste Iteration durch, indem Sie die Anzahl der Extrema berechnen
  • Neuberechnung der Anzahl der Extrema
  • Initialisieren Sie das Array mit diesem Wert
  • Werte in das neue Array schreiben
Man kann es so machen, man kann es so machen, ich versuche, den besten Weg zu finden :o)

Ich spiele nicht mit Fingerhüten. Aber ich bevorzuge Variante 2, oder vielleicht will ich nur, dass der EUR wächst? :-)

Wie Sie bemerkt haben, habe ich nicht die Fingerhüte als solche vorgeschlagen. Es ist alles offenkundig, ich war nur neugierig auf Ihre Meinung (ich habe in einem benachbarten Thread Ihre Vorhersage gelesen)

Aber auch die Optionen 1 und 3 sind in Ordnung, obwohl sie sich nicht sehr voneinander unterscheiden.

"Divergierender Vektor" Verschiebung des durchschnittlichen Preiswertes


nach Urain

Meiner Erfahrung nach empfehle ich, Arrays direkt dort zu definieren und zu verwenden, wo sie gebraucht werden. Diese Arrays sind meist lokal und verwenden den Speicher dynamisch, was besser ist als statische Arrays, weil sie langsamer arbeiten als aus dem RAM, besonders wenn das Array klein ist, macht es keinen Sinn, statisch viel Platz für sie zu reservieren. Der MQL-4-Compiler ist so eingestellt, dass Sie keinen Unterschied zwischen der Deklaration eines Arrays mit der expliziten Größe und der verzögerten Größe spüren werden.

Es scheint, dass es keine statistischen/dynamischen "Zeiger" darauf gibt, wo ein Array in MQL gespeichert ist. Es gibt nur einen Initialisierungsoperator, die einzige Frage ist, dass die mehrfache Verwendung ein großes Array verlangsamen kann. Oder doch nicht? Oder übersehe ich vielleicht wieder etwas?


zum Marketeer

Informationen aus dem Forum filtern

Oh, das ist eine wertvolle Eigenschaft. Ich kann Ihnen versichern - ich habe die besten adaptiven Filter. :о)

Wenn Sie Ihre Aufgabe detailliert beschreiben (Sie können mir in einer privaten Nachricht schreiben), werden wir (ich) den besten Weg finden, sie umzusetzen.

Ich werde darüber nachdenken, aber jetzt will ich es selbst herausfinden. Immerhin sollten Sie zumindest etwas von MQL verstehen, so dass Sie das Problem zumindest irgendwie erklären könnten :o).

 
Und es war einmal ein so stiller Zweig. (
 
Lord_Shadows >> :
Und es war einmal ein so stiller Zweig. (

>> Ich denke, das wird auch so bleiben. Die Kollegen sind gerade noch im Kampfmodus :o)

 
grasn писал(а) >>

an Yurixx

Ich verstehe das nicht ganz, ich mache das nicht und alles funktioniert, ich meine ohne Initialisierung in init()

Die Initialisierung eines Arrays ist eine Sache, die Angabe einer Größe eine andere. Wenn Sie ein Array als Arr[] deklarieren, wird ein Element im Speicher zugewiesen. Sie können damit arbeiten, so viel Sie wollen, und das System wird Sie nicht auf den Fehler hinweisen, wenn Sie Elemente mit einer Nummer >0 adressieren, aber die Berechnungen werden falsch sein. Um alles in Ordnung zu bringen, müssen Sie mit der Operation ArrayResize() eine bestimmte Größe festlegen. Bei der Zuweisung von Speicher werden in diesem Fall alle Elemente mit Nullen gefüllt. Wenn Sie also nichts Besonderes brauchen, können Sie ihn auch nicht initialisieren (obwohl ein guter Stil dies erfordert).

.

Ich glaube nicht, dass das sehr praktisch ist, denn es ist ganz offensichtlich, dassmehr Berechnungen erforderlich sind. Zusätzliche Schleifen können zu den oben genannten hinzugefügt werden. Aber wie auch immer, wir müssen das alles prüfen, wenn wir nur einige Empfehlungen von den Entwicklern bekommen könnten... :о)

Leas Ratschläge führen nicht zu mehr Berechnungen. Nehmen Sie es vorsichtig heraus. Und wenn Sie die Entwickler in diese elementare Frage einbeziehen, werden Sie ein Held sein. :-)

.

Zum Beispiel (und das ist das einfachste Beispiel), um lokale Extrema (nicht auf dem Graphen) durch die Bedingungen y[n]>y[n+1] und y[n]<y[n-1] und dementsprechend für das Minimum zu finden. Soweit ich weiß, kann man das Problem auf verschiedene Weise lösen, z. B. auf diese Weise:

  • Erstellen Sie ein Array mit der gleichen Länge wie die ursprüngliche Reihe, kodieren Sie darin 0 und 1 für das Vorhandensein eines Extremums.
  • Führen Sie die erste Iteration durch, indem Sie die Anzahl der Extrema berechnen
  • Neuberechnung der Anzahl der Extrema
  • Initialisieren Sie das Array mit diesem Wert
  • Werte in das neue Array schreiben

Dies wird als linke Hand über dem rechten Ohr bezeichnet. Ich mache das in meinen Programmen ständig, aber ich arbeite in einem Rutsch, um keine Rechenressourcen und Zeit zu verschwenden. Es gilt das Gesetz: Wer im Gedächtnis gewinnt, verliert in der Zeit und beim Rechnen. Ich persönlich bin der Meinung, dass der Speicher für den Handel weniger wichtig ist. Daher können Sie einfach zwei Arrays gleicher Länge erstellen und den Extremwert in ein Array und seine Koordinate in das andere Array schreiben, wenn sie sich gerade bilden.

Sergei, Sie sollten mit dem kompliziertesten Szenario beginnen. Sonst verstehe ich nicht, was die Aufregung soll. :-)))

Ich rate dazu, Urains Rat, "Arrays direkt zu deklarieren und zu verwenden, wenn es notwendig ist, sie zu verwenden", mit großer Vorsicht zu behandeln. Die Verwendung von Arrays hängt von der Art der Aufgabe ab, nicht davon, wie man mit der Auslagerungsdatei kämpft.

 
Yurixx >>:
grasn писал(а) >>

Ну например (и это самый простой пример) поиск локальных экстремумов (не на графике) по условию y[n]>y[n+1] и y[n]<y[n-1] и соответственно для минимума. Я понимаю, что можно решить несколькими способами, например таким:

  • Создать массив такой же длины, как и исходный ряд, кодировать в нем 0 и 1 наличие экстремума.
  • Выполнить первую итерацию собрав расчет экстремумов
  • Пересчитать количество экстремумов
  • Инициализировать массив этой величиной
  • Записать значения в новый массив

Это называется левой рукой за правое ухо. Я постоянно делаю это в своих программах, но работаю в один проход, чтобы не тратить зря вычислительные ресурсы и время. Закон такой: выигрываешь в памяти - проигрываешь во времени и вычислениях. Лично мне кажется, что память менее критична для трейдинга. Поэтому можешь смело создавать даже два массива такой же длины и писать в один значение экстремума, а во второй его координату, непосредственно по ходу их формирования.

Äh, das ist ein bisschen Off-Topic ;-). In der Regel versuche ich, das Beste aus den Funktionen (API, Bibliotheken usw.) zu machen, die für bestimmte Aufgaben bereits vorhanden sind. Wäre es nicht produktiver, die ArrayMinimum/Maximum-Funktionen zu verwenden, um Extrema zu finden? Auch die Wahl der Methode zur Speicherung von Extrema sollte sich nach den nachfolgenden Operationen richten, die mit ihnen durchgeführt werden sollen. Insbesondere nehme ich an, dass die Extrema später in irgendeiner Berechnung verletzt werden müssen, und in diesem Fall ist der von grasn vorgeschlagene Weg der beste, da er in einer einzigen Schleife ausgeführt wird und es erlaubt, die Extrema anschließend einfach zu iterieren.
 
grasn писал(а) >>

zu lassen

Nein, ich habe noch nicht nach solchen Punkten gesucht und habe auch keine Ahnung, wie ich sie finden könnte. Ich habe einen solchen Begriff als "Zeitreihengedächtnis" verwendet. Dies ist ein etwas spezifischer Begriff, den man in neuronalen Netzen und in der Fraktalanalyse findet, aber man muss immer den Kontext seiner Anwendung betrachten. Ich meine den Einfluss historischer Zählungen auf künftige Realisierungen des Prozesses. Einfach ausgedrückt, beantwortet dieser Parameter die Frage, wie lange die historischen Reihen zu nehmen sind.

PS: Übrigens, ich erinnere mich, dass Sie versprochen haben, Ihre lineare Bibliothek zu verbessern und eine neue Version zu veröffentlichen...

Ich verstehe, danke für die Antwort.

Vor zwei Monaten habe ich die Arbeit an der Bibliothek im Grunde genommen zum Abschluss gebracht (ich habe überflüssige Funktionen herausgeworfen und bestehende neu gestaltet). Allerdings habe ich die Berechnung der Matrixkonditionalität noch nicht durchgeführt. In etwa zwei Wochen habe ich mehr Zeit, und dann werde ich versuchen, das zu regeln.

Damals begann ich, einen Artikel zu schreiben, hatte aber nicht genug Zeit. Zur Zeit sind 50% der Funktionsbeschreibungen fertig (das sind 6 Funktionsgruppen von 16; vorläufig werde ich nur die Dokumentation zu den Funktionen schreiben, die Beispiele für ihre Verwendung werden folgen).

 

Ich bin nicht sehr gut mit Vorhersagen, also habe ich beschlossen, heute mit M1 zu experimentieren und am Montag damit zu beginnen:

Ich kann das Hauptdiagramm nicht sehen :)

Aber Überoptimierung im Minutentakt und eine Prognose für 3 Stunden im Voraus.


 
Piboli >> :

Ich bin nicht sehr gut mit Vorhersagen, also habe ich beschlossen, heute mit M1 zu experimentieren und am Montag damit zu beginnen:

Ich kann das Hauptdiagramm nicht sehen :)

Aber Überoptimierung jede Minute und Vorhersage für 3 Stunden im Voraus.



Wie wird die Optimierung durchgeführt? Und woher beziehen Sie Ihre Prognosen, nicht zufällig aus dem Deduktor?

 
mpeugep >> :

Wie wird die Optimierung durchgeführt? Und woher beziehen Sie Ihre Vorhersagen, nicht zufällig aus dem Deduktor?


Armer Piboli, er ist schon viermal gefragt worden ^_^, ja, er macht seine Vorhersagen bei Deductor
 

die Vorhersage ist mehr oder weniger dieselbe (die mit der größten Entropie) :o) Eine kleine Verfeinerung, die folgenden Bahnen bleiben bestehen, wobei diejenige, die "kanalisiert" wird, die wahrscheinlichste ist.



zu lassen

Понятно

Ich habe mein Bestes gegeben :o)

Im Grunde habe ich die Bibliothek vor zwei Monaten in ihr endgültiges Stadium gebracht(überflüssige Funktionen entfernt, vorhandene neu gestaltet). Allerdings habe ich noch keine Berechnungen zur Matrixkonditionalität durchgeführt.

Aber es heißt dort

Der Code wird später veröffentlicht.

Aber die Version hat sich nicht geändert :o(