Indikatoren: Der ZoomPrice Tick-Indikator

 

Der ZoomPrice Tick-Indikator:

Zeigt den Preischart jeden Skalierungsniveaus an.

Autor: fxsaber

 
Automated-Trading:

Tick-Indikator ZoomPrice:

Autor: fxsaber

Kann der Indikator ohne Rahmen in das Chart-Fenster verschoben werden oder verlangsamt er das Terminal?

und ist es auch möglich, die Linien [braun, blau, rot] in den Einstellungen umzuschalten?

 
 
sober:

Kann der Indikator ohne Rahmen in das Chart-Fenster verschoben werden oder verlangsamt er das Terminal?

Es handelt sich um ein interaktives grafisches Objekt, dessen Eigenschaften (z. B. die Koordinaten) mit STRG+B geändert werden können (es wird als Chart sichtbar, wenn Sie "Alle" drücken). Sie können also alles mit ihm machen, was Sie auch mit normalen grafischen Objekten machen können. Insbesondere können Sie es in einem beliebigen Fenster (Unterfenster) platzieren.

Die kurze EA-Quelle in der Beschreibung tut genau das.

In dieser Variante können Sie das Diagramm auf andere Symbole umstellen, und das Objekt zeigt weiterhin das Symbol, auf dem es ursprünglich erstellt wurde.

Und können Sie auch die Linien [braun, blau, rot] in den Einstellungen umschaltbar machen?

Diese Linien tragen bestimmte Informationen

  • braun (standardmäßig) - die vertikale Linie zeigt die Zeitposition an der Cursorposition, die horizontale Linie zeigt den Preis.
  • blau (Standard) - zeigt den Angebotspreis an der Cursorposition an. Gleichzeitig werden auf der rechten Seite (entlang der vertikalen Skala) die Zeit dieses Ticks und der Spread angezeigt.
  • rot (Standardeinstellung) - dasselbe für den Briefkurs.
Es ist nicht möglich, diese Linien über die Eingabeparameter zu entfernen. Die braune Linie kann "entfernt" werden, indem die Farbe Cross auf None gesetzt wird. Ähnliches können Sie mit den Bid/Ask-Linien machen, aber es wird die Sichtbarkeit der entsprechenden historischen gestrichelten Linien beeinflussen.
 
fxsaber:

Es handelt sich um ein interaktives grafisches Objekt, bei dem einige Eigenschaften (z. B. Koordinaten) mit STRG+B geändert werden können (wird als Diagramm sichtbar, wenn Sie "Alle" drücken). Sie können damit also die gleichen Dinge tun wie mit den normalen grafischen Objekten.

Dort ist es auch möglich, die vertikale Skala auszuschalten und das Objekt auf den Hintergrund des Diagramms zu legen.

Auf diese Weise können Sie z.B. einen Hintergrund-Tickchart (historisch/echtzeitig) mit variabler Skala erstellen.

Wie Sie dieses Objekt verwenden, ist im Allgemeinen eine Frage der Fantasie.

 

Standardmäßig ist die Option "Handelsniveaus (Niveaus offener Positionen, Stop Loss, Take Profit und schwebende Aufträge) im Chart anzeigen" in einem Tick-Chart deaktiviert.

Aber die Aktivierung dieses Modus ist manchmal nützlich

Auf dem Bildschirm können Sie deutlich sehen, dass eine VERKAUF-Position eröffnet wurde und der Geldkurs (vorletzter Balken) unter das TP-Niveau fiel. Es wird jedoch deutlich, warum TP nicht ausgelöst wurde - der Briefkurs (rote gestrichelte Linie) hat TP nicht erreicht.


Die Anzeige kann durch Bearbeiten des Quellcodes eingeschaltet werden

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // Anzeige von Handelsniveaus (Niveaus offener Positionen, Stop Loss, Take Profit und schwebende Aufträge) auf dem Chart

in dieser Zeile müssen Sie false durch true ersetzen. Oder, wenn Sie möchten, dass der Tick-Chart die gleichen Einstellungen wie der Haupt-Chart erhält, kommentieren Sie diese Zeile aus.
.

 
fxsaber:

Standardmäßig ist die Option "Handelsniveaus (Niveaus offener Positionen, Stop Loss, Take Profit und schwebende Aufträge) im Chart anzeigen" in einem Tick-Chart deaktiviert.

Aber die Aktivierung dieses Modus ist manchmal nützlich

Auf dem Bildschirm können Sie deutlich sehen, dass eine VERKAUF-Position eröffnet wurde und der Geldkurs (vorletzter Balken) unter das TP-Niveau fiel. Es wird jedoch deutlich, warum TP nicht ausgelöst wurde - der Briefkurs (rote gestrichelte Linie) hat TP nicht erreicht.


Die Anzeige kann durch Bearbeiten des Quellcodes eingeschaltet werden

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // Anzeige von Handelsniveaus (Niveaus offener Positionen, Stop Loss, Take Profit und schwebende Aufträge) auf dem Chart

in dieser Zeile müssen Sie false durch true ersetzen. Oder, wenn Sie möchten, dass der Tick-Chart die gleichen Einstellungen wie der Haupt-Chart erhält, kommentieren Sie diese Zeile aus.
.

Der erste Tick-Indikator "fxsaber" ist funktioneller und praktischer. Sie können Standardindikatoren im Chart-Fenster überlagern. Sie können die "Skalierung nach Pips pro Balken" auf den Chart anwenden. Alles ist klar. Im gleichen Indikator 'zoomprice' springt und gleitet alles, während Sie ihn an sich selbst anpassen, werden hundert Jahre vergehen. Fadenkreuze und blaue und rote Linien sind überhaupt überflüssig, sie lenken Sie nur ab.

Der einzige Vorteil von "zoomprice" ist, dass er schneller aussieht als "fxsaber".

 
sober:

Der erste Tick-Indikator "fxsaber" ist funktioneller und praktischer. Standardindikatoren konnten im Chart-Fenster überlagert werden. Es war möglich, die "Skalierung nach Pips pro Balken" auf den Chart anzuwenden. Alles ist übersichtlich.

Ich bin ein schwacher Terminal-Benutzer, daher weiß ich nicht, was die Fortgeschrittenen brauchen. Es wäre nützlich zu wissen, wie Sie es verwenden. Zum Beispiel habe ich den Modus "Skalierung nach Punkten pro Balken" noch nie aktiviert, und ich weiß nicht, wie er nützlich sein kann. Bitte teilen Sie uns Ihre Erfahrungen mit.

In demselben Indikator "zoomprice" springt und gleitet alles, während Sie ihn für sich selbst einstellen, vergehen hundert Jahre.

Nichts sollte springen und gleiten. Verstehen Sie die Interaktionsschnittstelle. Es ist sehr intuitiv, wie es mir schien. Ich stelle die Skala mit einer Maus ein. Wenn jemand Probleme damit hat - bitte sagen Sie es. Bis jetzt habe ich nur eine Unzufriedenheit.

Um zu verstehen, wie man die gleichen Einstellungen für ein Objekt vornimmt, hier ein Beispiel für EA.

input int exX = 50;       // X-Koordinate
input int exY = 50;       // Y-Koordinate
input int exWidth = 450;  // Breite
input int exHeight = 300; // Höhe

input bool exShowGrid = true;            // Raster
input color exColorBackGround = clrSnow; // Hintergrundfarbe
input bool exTradeLevels = true;         // Bestellungen
input bool exPriceScale = true;          // Preisstaffel

#include <fxsaber\ChartObjects\ChartObject_ZoomPrice.mqh>

// CHARTOBJECT_ZOOMPRICE ChartObject;
CHARTOBJECT* ChartObject;

void OnInit( void )
{
  ChartObject = new CHARTOBJECT_ZOOMPRICE; // ZoomPreis-Objekt erstellen
  
  // Es ist möglich, beliebige Objekteigenschaften aus Aufzählungen zu setzen und zu lesen (F1 - Hilfe)
  // ENUM_OBJECT_PROPERTY_INTEGER, ENUM_OBJECT_PROPERTY_DOUBLE, ENUM_OBJECT_PROPERTY_DOUBLE
  // ENUM_CHART_PROPERTY_INTEGER, ENUM_CHART_PROPERTY_DOUBLE, ENUM_CHART_PROPERTY_STRING
  
  // Eigenschaften über ChartObject.SetProperty schreiben
  ChartObject.SetProperty(OBJPROP_XDISTANCE, exX);  // Abstand in Pixeln entlang der X-Achse vom Fangwinkel
  ChartObject.SetProperty(OBJPROP_YDISTANCE, exY);  // Abstand in Pixeln entlang der Y-Achse vom Fangwinkel

  ChartObject.SetProperty(OBJPROP_XSIZE, exWidth);  // Breite des Objekts entlang der X-Achse in Pixeln.
  ChartObject.SetProperty(OBJPROP_YSIZE, exHeight); // Höhe des Objekts entlang der Y-Achse in Pixeln.
  
  ChartObject.SetProperty(CHART_SHOW_GRID, exShowGrid);               // Anzeige des Gitters im Diagramm
  ChartObject.SetProperty(CHART_COLOR_BACKGROUND, exColorBackGround); // Die Hintergrundfarbe des Diagramms
  ChartObject.SetProperty(CHART_SHOW_TRADE_LEVELS, exTradeLevels);    // Anzeige von Handelsniveaus (Niveaus offener Positionen, Stop Loss, Take Profit und schwebende Aufträge) auf dem Chart
  ChartObject.SetProperty(OBJPROP_PRICE_SCALE, exPriceScale);         // Zeichen der Preisskalenanzeige für das Objekt "Chart"

#define TOSTRING(A) #A + " = " + (string)(A)
  
  // Lesen von Eigenschaften über ChartObject.GetProperty
  Print(TOSTRING(ChartObject.GetProperty(OBJPROP_XDISTANCE)));
  Print(TOSTRING(ChartObject.GetProperty(CHART_COMMENT)));
}

void OnDeinit( const int Reason )
{
  delete ChartObject; // Löschen des grafischen Objekts
}

void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
  EVENTBASE::MyEvent(id, lparam, dparam, sparam); // Notwendigkeit der Interaktivität von Objekten
}

void OnTimer( void )
{
  EVENTBASE::MyEventTimer(); // Notwendigkeit der Interaktivität von Objekten
}

void OnTick( void )
{
  EVENTBASE::MyEventTick(); // Notwendigkeit der Interaktivität von Objekten
}

Fadenkreuz und blaue und rote Linien sind völlig überflüssig, sie lenken nur ab.

Um Linien und Text zu deaktivieren, müssen Sie eine Funktion in den Quellen finden

  void SetTextCross( const int X, const int Y )
  {
    if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
      return;

    const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
                                    ((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
                                     this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));

    this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
    this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));

    this.TextCross = CHARTOBJECT::TimeToString(TimeCross);

    this.SetTextPrices(TimeCross, Y);

    return;
  }

finden und ihren Körper auskommentieren.

  void SetTextCross( const int X, const int Y )
  {
/* if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;

const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
dies.GetProperty(CHART_WIDTH_IN_PIXELS)) - 0.5)));

this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));

this.TextCross = CHARTOBJECT::TimeToString(TimeCross);

this.SetTextPrices(TimeCross, Y);
*/.

    return;
  }

Um das Fadenkreuz zu deaktivieren, müssen Sie die Linien finden

        this.HLineCross = price;
        this.VLineCross = time;

und sie auskommentieren

// this.HLineCross = Preis;
// this.VLineCross = time;

Der einzige Vorteil von "zoomprice" scheint zu sein, dass es schneller ist als "fxsaber".

ZoomPrice kann eine großartige Ergänzung zu Ticks sein - es erlaubt Ihnen, die von Ticks angezeigten Daten genauer zu untersuchen. Nachdem ich ZoomPrice geschrieben habe, habe ich aufgehört, Ticks selbst zu benutzen.

Тиковый индикатор Ticks
Тиковый индикатор Ticks
  • Stimmen: 19
  • 2016.10.14
  • //www.mql5.com/ru/users/fxsaber">
  • www.mql5.com
Показывает тиковую ценовую историю (Bid/Ask) внутри всех видимых баров.
 

Hier ein Beispiel

Ich muss einen weiteren Rasterindikator über den ZoomPrice-Indikator legen , um visuell festzustellen, wie viele Pips der Kurs sich bewegt hat. Zwischen benachbarten blauen Linien 40 Pips, zwischen benachbarten orangen Linien 200 Pips. Ich benötige kein Fadenkreuz, sondern nur Gitterebenen, die mit der Skala verbunden sind. Ein Blick genügt, um die Situation zu beurteilen. Und die orangefarbenen Linien im Raster sind runde Zahlen des Charts, wenn die Linie auf dem Chartwert von 1,10900 steht, dann ändert die Linie ihren Wert nicht, egal wie wir die Skala verändern.

Ich habe versucht, einen Rasterindikator über ZoomPrice zu legen und die Linien mit der Skala zu verknüpfen, aber nichts hat funktioniert. Ich habe wenig Verständnis für Code.

Ich habe alles Unnötige auskommentiert, jetzt muss ich nur noch das Raster erstellen und es wird perfekt sein.

Die Skalierung nach Punkten pro Balken ist in der Registerkarte eingestellt: Eigenschaften>>Allgemein

 
sober:

Ich habe versucht, einen Rasterindikator über ZoomPrice zu legen und die Linien mit der Skala zu verknüpfen, aber nichts hat funktioniert. Ich bin nicht sehr gut in Code.

Ich habe alles Unnötige auskommentiert, jetzt muss ich nur noch ein Raster erstellen, und es wird perfekt sein.

Sie können ein horizontales Raster erstellen, indem Sie einen entsprechenden Indikator an dieses grafische Objekt hängen. Aber das ist, sagen wir mal, nicht trivial für jemanden, der keinen Code versteht.

Die Skalierung nach Punkten pro Balken wird in der Registerkarte: Eigenschaften>>Allgemein eingestellt.

ZoomPrice ist der einzige Indikator in der 16-jährigen Geschichte von MQ, der es Ihnen erlaubt, JEDE Skalierungsstufe einzustellen. Das heißt, nicht sechs klar definierte Skalen, sondern was immer Sie wollen. Dies erforderte einige Nicht-Standard-Lösungen (dies ist der Grund, warum das Objekt keine horizontale Skala hat). Und wegen dieser Nicht-Standardlösungen hat ZoomPrice einige Einschränkungen, die es nicht erlauben, bestimmte Arten von Indikatoren über das Objekt zu legen (dies gilt nicht für das horizontale Gitter). Und die Einstellung einer anderen Art von Zoom ist etwas, worüber ich nachdenken muss. Ich habe immer noch nicht verstanden, was "Skalierung nach Punkten pro Balken" ist, auch wenn ich die Hilfe gelesen habe.

In der Tat haben Sie, ohne es selbst zu verstehen, das Thema des korrekten Verhaltens von Indikatoren berührt. Aufgrund des möglichen Vorhandenseins von OBJ_CHART-Objekten können Sie einen Indikator nicht auf den Chart selbst, sondern auf das OBJ_CHART-Objekt werfen. Und in diesem Fall ist es logisch, den Indikator genau auf OBJ_CHART und nicht auf dem Hauptchart auszuführen.

Bitte geben Sie einen Link zu einem Indikator mit einem horizontalen Gitter an. Mal sehen, was Sie sich einfallen lassen können.

 
fxsaber:


Schicken Sie mir einen Link zu einem Indikator mit einem horizontalen Gitter. Mal sehen, was wir uns einfallen lassen können.

Indikator https://www.mql5.com/de/code/14916
PriceGrid
PriceGrid
  • Stimmen: 17
  • 2016.02.29
  • Nikolay Kositsin
  • www.mql5.com
Индикатор строит ценовую сетку из округленных на несколько порядков уровней.