Diskussion zum Artikel "3D-Modellierung in MQL5"

 

Neuer Artikel 3D-Modellierung in MQL5 :

Eine Zeitreihe stellt ein dynamisches System dar, in welches Werte einer zufälligen Größe einer nach dem anderen eintreffen: kontinuierlich oder in gewissen Zeitabständen. Der Übergang von einer flachen zur dreidimensionalen Analyse des Marktes ermöglicht es, komplexe Prozesse und Erscheinungen aus einer neuen Perspektive zu betrachten. In diesem Artikel werden Visualisierungsfunktionen für eine 3D-Darstellung zweidimensionaler Daten beschrieben.

In Bezug auf Finanzmärkte wird die 3D-Modellierung für eine dreidimensionale Darstellung von Zeitreihen verwendet. Als Zeitreihe wird ein dynamisches System bezeichnet, in welches Werte einer zufälligen Größe einer nach dem anderen eintreffen: kontinuierlich oder in gewissen Zeitabständen (Ticks, Balken, Fraktale u.a.). In diesem Artikel betrachten wir die Visualisierung einer 3D-Darstellung von Zeitreihen, solchen wie Timeseries und Indikatoren (s. Abb. 1).

Abb. 1. Beispiele für die 3D-Darstellung von Zeitreihen.

Abb. 1. Beispiele für die 3D-Darstellung von Zeitreihen.

Autor: Sergey Pavlov

 

Es ist keine leichte Aufgabe, aber zunächst scheint der Ansatz falsch zu sein - durch Trendlinien-Objekte.

Warum nicht durch Bitmap-Objekt mit benutzerdefinierten Ressource - Leinwand? Höchstwahrscheinlich wird die mat. lib in 3D auf diese Weise implementiert werden.

 
fxsaber:

Es ist keine leichte Aufgabe, aber zunächst scheint der Ansatz falsch zu sein - durch Trendlinien-Objekte.

Warum nicht durch Bitmap-Objekt mit benutzerdefinierten Ressource - Leinwand? Höchstwahrscheinlich wird die Matte Lib in 3D auf diese Weise implementiert werden.

Und wie lässt sich dann Interaktivität (Steuerung des 3D-Objekts) realisieren? Wie reagiert man auf die Änderung des Zeitrahmens, die Skalierung des Charts, den Wechsel des Fensters, einen neuen Tick (Balken) und viele andere?

Bei dieser Implementierung erledigen das Terminal und die MQL5-Sprachfunktionalität alles, und es ist nicht nötig, irgendetwas zu programmieren. D.h. es wird eine einfache Lösung für ein komplexes Problem angeboten.

 
Sergey Pavlov:

Und wie lässt sich dann Interaktivität (3D-Objektsteuerung) realisieren? Wie reagiert man auf eine Änderung des Zeitrahmens, der Chart-Skala, einen Fensterwechsel, einen neuen Tick (Balken) und vieles mehr?

Bei dieser Implementierung erledigen das Terminal und die MQL5-Sprachfunktionalität alles, und es ist nicht nötig, irgendetwas zu programmieren. D.h. es wird eine einfache Lösung für ein komplexes Problem angeboten.

Einfach über den Kanvas. Ich habe einen Tick-Indikator nach diesem Prinzip in Kodobaza veröffentlicht. Die Interaktivität ist dort ziemlich stark.

Ein bisschen Interaktivität und mat. bibla weiß jetzt, wie es geht

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.

Diskussion des Artikels "Statistische Verteilungen in MQL5 - Taking the Best of R and Making it Faster"

fxsaber, 2016.11.14 10:11 AM

Bitte finalisieren Sie CGraphic und CCurve. Sie sind schwache Klassen. Und es ist fast unrealistisch, von ihnen zu erben, weil das Notwendige privat ist. Es hat lange gedauert, aber um sie zu korrigieren, musste ich die Klassen selbst neu schreiben.

Ich wollte ein interaktives Tickchart erstellen - es kam nur grob heraus (ohne Umschreiben von Klassen)

#include <Graphics/Graphic.mqh>

void GetPrices( double &Bids[], double &Asks[], const int Count = 100 )
{
  MqlTick Ticks[];
  
  const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
  
  ArrayResize(Bids, Amount);
  ArrayResize(Asks, Amount);
  
  for (int i = 0; i < Amount; i++)
  {
    Bids[i] = Ticks[i].bid;
    Asks[i] = Ticks[i].ask;
  }
}

CGraphic* Graphic = new CGraphic;
const string Name = "Graphic" +(string)(GetTickCount() + MathRand());

void OnDeinit( const int Reason )
{
  Graphic.Destroy();
  delete Graphic;
  
  ChartRedraw();
}

void GraphTicks( const double &Price1[], const double &Price2[] )
{
   Graphic.Destroy();
   delete Graphic;

   Graphic = new CGraphic;  
   Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS));

   Graphic.AddCurve(Price1, CURVE_LINES);
   Graphic.AddCurve(Price2, CURVE_LINES);
  
   Graphic.PlotAllCurves();
   Graphic.Update();
}

void OnTick()
{
  double Bids[], Asks[];
  GetPrices(Bids, Asks);
  
  GraphTicks(Bids, Asks);
}

Keine DeleteCurve, ChangeCurve, etc.


 
Sergey Pavlov:

Und wie lässt sich dann Interaktivität (3D-Objektsteuerung) realisieren? Wie reagiert man auf eine Änderung des Zeitrahmens, der Chart-Skala, einen Fensterwechsel, einen neuen Tick (Balken) und vieles mehr?

Bei dieser Implementierung erledigen das Terminal und die MQL5-Sprachfunktionalität alles, und es ist nicht nötig, irgendetwas zu programmieren. D.h. es wird eine einfache Lösung für ein komplexes Problem angeboten.

Handelt es sich bei dem Thema des Artikels um eine Art interaktive Steuerung? Das Thema des Artikels ist die 3D-Modellierung. Wo ist die magische Funktion, bei der man Raumkoordinaten eingibt und Bildschirmkoordinaten als Ausgabe erhält?

Nicht nur, dass das Thema im Artikel nicht genannt wird, es scheint sogar, dass der Autor keine Ahnung hat, was das Wesentliche an diesem Thema ist.

 
fxsaber:

Es ist keine leichte Aufgabe, aber zunächst scheint der Ansatz falsch zu sein - durch Trendlinien-Objekte.

Warum nicht durch Bitmap-Objekt mit benutzerdefinierten Ressource - Leinwand? Höchstwahrscheinlich wird die mat. lib in 3D auf diese Weise implementiert werden.

Und nicht beides sollte sein, das sind Anzeigeoptionen. Ursprünglich sollte alles in Arrays sein.
 
Dmitry Fedoseev:
Es sollte nicht beides sein, es sind Zuordnungsoptionen. Ursprünglich sollte alles in Arrays sein.
Das 3D-Array sind also die Rohdaten. Ich glaube, es geht um die Visualisierung.
 
fxsaber:
Das 3D-Array sind also die Rohdaten. Ich glaube, wir reden hier über Visualisierung.
Wenn es so wäre. Ich brauche überhaupt keine Visualisierung.
 
Dmitry Fedoseev:
Wenn nur... überhaupt keine Visualisierung.
Ich verstehe das überhaupt nicht.
 
Ich mag deine Arbeit. Aber ich denke immer noch, dass 3D-Modellierung wirklich auf Leinwand sein sollte. Versuchen Sie, Ihre Technologie in diese Richtung zu entwickeln. Viel Glück!
 
Dmitry Fedoseev:

Handelt es sich bei dem Thema des Artikels um eine Art interaktive Steuerung? Das Thema des Artikels ist die 3D-Modellierung. Wo ist darin die magische Funktion, bei der man Raumkoordinaten eingibt und Bildschirmkoordinaten als Ausgabe erhält?

In dem Artikel wird nicht nur das Thema nicht offengelegt, sondern es scheint sogar, dass der Autor das Wesentliche dieses Themas überhaupt nicht erkennt.

3D - ohne die Möglichkeit, den Blickwinkel zu ändern - ist 2D-Zeichnen. Daher ist Interaktivität die wichtigste Eigenschaft bei der Modellierung dreidimensionaler Objekte. Welchen Sinn hat ein statisches Bild?

Es gibt eine magische Funktion, und es wird ein Beispiel für ihre Verwendung gegeben.