Diskussion zum Artikel "Statistische Verteilungen in MQL5 - Nur das Beste aus R" - Seite 11
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ist dies nur in der 5? Ist es für 4 geplant?
Also sollte alles in MT4 funktionieren. Es ist ein Standard OBJ_BITMAP_LABEL + benutzerdefinierte Ressource.
Übrigens, MT4 Compiler ist intelligenter als MT5
m_pixels[y*m_width+x]=(r<<16|g<<8|b<<0|255<<24) &0xffffffff;
Und es ist ein Fehler aufgetreten (es funktioniert nicht in MT5, aber es funktioniert in MT4).
#include <Graphics/Graphic.mqh>
double Func1(double x) { return MathPow(x,2); }
double Func2(double x) { return MathPow(x,3); }
double Func3(double x) { return MathPow(x,4); }
void SaveObjects( const long chart_id = 0, const int SubWindow = -1 )
{
const int Total = ObjectsTotal(chart_id, SubWindow, OBJ_BITMAP_LABEL);
for (int i = 0; i < Total; i++)
{
const string Name = ObjectName(chart_id, i, SubWindow, OBJ_BITMAP_LABEL);
string ResourceName;
if (ObjectGetString(chart_id, Name, OBJPROP_BMPFILE, 0, ResourceName))
ResourceSave(ResourceName, Name + ".bmp"); // MT5 - falsch, MT4 - wahr
}
}
void OnStart()
{
GraphPlot(Func1,Func2,Func3,-2,2,0.05,CURVE_LINES);
SaveObjects();
}
//| Objekt auf dem Bildschirm aktualisieren (neu zeichnen)|
//+------------------------------------------------------------------+
void CCanvas::Update(const bool redraw)
{
//--- prüfen
if(m_rcname==NULL)
return;
//--- Ressource aktualisieren und neu zeichnen
if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
ChartRedraw(this.m_chart_id);
}
Dies ist der Fall, wenn
//| Polylinie von Wu zeichnen|
//+------------------------------------------------------------------+
void CCanvas::PolylineWu(int &x[],int &y[],const uint clr,const uint style=UINT_MAX);
gibt es Divisionen durch Null.
Ich bitte Sie, CGraphic und CCurve zu verbessern. Sie sind schwache Klassen. Und es ist fast unmöglich, von ihnen zu erben, denn was man braucht, ist privat. Es hat lange gedauert, bis ich mich damit beschäftigt habe, aber ich musste die Klassen selbst umschreiben, damit sie richtig funktionieren.
Ich wollte ein interaktives Tick-Chart erstellen - es kam nur grob heraus (ohne Umschreiben von Klassen)
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.
Ich bitte Sie, CGraphic und CCurve zu verbessern. Sie sind schwache Klassen. Und es ist fast unmöglich, von ihnen zu erben, denn was man braucht, ist privat. Es hat lange gedauert, bis ich mich damit beschäftigt habe, aber ich musste die Klassen selbst umschreiben, damit sie richtig funktionieren.
Ich wollte ein interaktives Tick-Chart erstellen - es kam nur grob heraus (ohne Umschreiben von Klassen)
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.
Gibt es das nur für den Fünfer? Gibt es Pläne für einen vierten?
Nur für die Fünf.
Der Vierte ist fertig.
Ist das so ein kurzer Code? Aus irgendeinem Grund dachte ich, es sei ein Blatt. Ist es möglich, eine Visualisierung eines Stapels mit einer bestimmten Anzahl von Bändern zu erstellen, kombiniert mit einem Band von Trades? Ich habe ein Beispiel für eine Visualisierung in einer anderen Software gezeigt.
Es ist schon seit vielen Jahren möglich, interaktiv etwas zu zeichnen. Nur nutzt es niemand (sicher nicht öffentlich).
Der Code ist nicht kurz, sondern lang und sehr krumm (wie auch das Ergebnis - flackert). Die Bibliothek muss ernsthaft verbessert werden.
Ja, die Bibliothek ist immer noch nur ein Testlauf.
Wir werden sie aufräumen, Vererbung zulassen, Methoden hinzufügen und Abstürze aufgrund falscher Indizierung beseitigen.