Diskussion zum Artikel "Wir schreiben eine Scalping-Markttiefe aufgrund der graphischen Bibliothek CGraphic" - Seite 2

 
Konstantin Seredkin:

Können Sie mir sagen, wie ich den Preis des maximalen Volumens im Glas in Ihrer Implementierung finden kann? Ich habe das Volumen selbst gefunden, alles ist klar, aber wie kann ich den Preis finden, bei dem diese maximale Dichte steht.

Ich interessiere mich für die Software-Implementierung? Der Price Scalper basiert auf der CMarketBook-Klasse. Es ermöglicht Ihnen, gemeinsame Eigenschaften einschließlich des Preises des maximalen Volumens zu erhalten.
 
Vasiliy Sokolov:
Sind Sie an einer Software-Implementierung interessiert? Der Preis-Skalierer basiert auf der CMarketBook-Klasse. Sie ermöglicht es Ihnen, gemeinsame Eigenschaften zu erhalten, einschließlich des Preises des maximalen Volumens.

Aha, in dieser Klasse findet sich das Maximalvolumen selbst, ich bin daran interessiert, wie man es ergänzen kann, dass es auch den Preis aus dem gefundenen Maximalvolumen ermitteln würde.

Das Thema ist einfach interessant, z.B. kann man einen Indikator machen, in dem es eine Variable Volumen = 1000 gibt, sobald das dem Preis am nächsten liegende Volumen >=1000 im Glas auf dem Chart erscheint, erscheint zu diesem Preis ein Balken. Sie können eine Menge interessanter Dinge zu machen, frage ich mich, ob es möglich ist, die funktionale Klasse zu erweitern, ich sehe, es gibt einige Daten, die Ihr Stapel nicht verwenden, OI und maximale Werte für die Eröffnung von Aufträgen in beide Richtungen, etc. ist auch eine notwendige Sache, aber der Preis ist nicht.... wenn Sie es hinzufügen, werde ich dankbar sein oder direkt, ich habe noch nie mit Stack-Daten gearbeitet, aber hier bin ich auf Ihr Thema gestoßen und wurde interessiert, außerdem haben Sie alles so bequem ausgespielt.

 

Guten Abend, Vasily

der Artikel hat mich so sehr interessiert, dass ich beschlossen habe, mich zu registrieren und meinen Kommentar zu hinterlassen (#1).

Ich versuche, in den Algo-Handel einzusteigen, aber ich fühle mich noch wie ein Anfänger.

Ich habe den beigefügten Code im Testmodus ausgeführt, um mich mit seiner Funktionsweise vertraut zu machen. Aber aus irgendeinem Grund wird die Wette nicht vollständig angezeigt, nämlich der Rahmen und die Legende auf der rechten Seite ist geöffnet, aber der Chart und die Schaltflächen fehlen. Der Tester funktioniert, es gibt keinen Hinweis auf einen Fehler im Protokoll. Was habe ich falsch gemacht? Helfen Sie mir, eine Verbindung herzustellen.

Vielen Dank im Voraus,

Alexander

 
AMK_robot:

Guten Abend, Vasily

der Artikel hat mich so sehr interessiert, dass ich beschlossen habe, mich zu registrieren und meinen Kommentar zu hinterlassen (#1).

Ich versuche, in den Algo-Handel einzusteigen, aber ich fühle mich noch wie ein Anfänger.

Ich habe den beigefügten Code im Testmodus ausgeführt, um mich mit seiner Funktionsweise vertraut zu machen. Aber aus irgendeinem Grund wird der Einsatz nicht vollständig angezeigt, d. h. der Rahmen und die Legende auf der rechten Seite werden geöffnet, aber der Chart und die Schaltflächen fehlen. Der Tester funktioniert, es gibt keinen Hinweis auf einen Fehler im Protokoll. Was habe ich falsch gemacht? Helfen Sie mir, eine Verbindung herzustellen.

Vielen Dank im Voraus,

Alexander

Guten Tag, Alexander. Vielen Dank für Ihr Interesse an dem Artikel und unserer Community. Die Antwort auf Ihre Frage ist darin versteckt. Der Strategietester stellt die Historie der Wette nicht dar, daher können Sie die Wette nur auf einem Chart im Echtzeitmodus ausführen. Außerdem werden im Testmodus die grafischen Komponenten mit eingeschränkter Funktionalität angezeigt, so dass Sie den Preisstapel im Tester ohnehin nicht anzeigen können. Verwenden Sie das Preisfenster nur in einem Chart. Außerdem wird das Kursfenster nicht für alle Märkte übertragen, so dass Sie sich mit der Moskauer Börse verbinden oder ein MetaQuotes-Demokonto verwenden sollten.

 

Vielen Dank Vasily für Ihre Arbeit, vor einem Monat implementiert Ihre Klasse in meinem Roboter, natürlich nicht ohne globale Verbesserungen zu tun, da einige Methoden fehlten, aber alles funktionierte und funktioniert.

Ich habe eine Frage

Dein Beispiel

//+------------------------------------------------------------------+
//|MarktBuch.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. | |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <MarketBook.mqh>

CMarketBook MarketBook.mqh
double fake_buffer[];
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBook.SetMarketBookSymbol(Symbol());
//--- Zuordnung von Indikatorpuffern
   SetIndexBuffer(0,fake_buffer,INDICATOR_CALCULATIONS);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Marktbuch-Änderungsereignis|
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
   if(symbol != MarketBook.GetMarketBookSymbol())
      return;
   MarketBook.Refresh();
   ChartRedraw();
}

Was ist der richtige Weg, um den Becher zu de-initialisieren?

Welche Variante ist richtiger, es scheint auf beide Arten zu funktionieren

void OnDeinit(const int reason)
 { 

//|----------- 
   if(!MarketBookRelease((string)m_book_market.SetMarketBookSymbol(Symbol())))
   {
   if(Debug){Print("Error MarketBookRelease ",m_symbol.Name());}}
//|-----------


//|----------- 
   if(!m_book_market.SetMarketBookSymbol(Symbol()))  
   {
   if(Debug){Print("Error MarketBookRelease ",m_symbol.Name());}}
//||-----------

 }
 
Konstantin Seredkin:

Vielen Dank Vasily für Ihre harte Arbeit, vor einem Monat habe ich Ihre Klasse in meinen Robotern implementiert, natürlich hat es nicht ohne globale Verbesserungen zu tun, wie einige Methoden fehlten, aber alles funktioniert und funktioniert.

Ich habe eine Frage

Dein Beispiel

Und was ist der richtige Weg, um die Initialisierung des Bechers zu beenden?

Welche Option ist richtiger, es scheint auf beide Arten zu funktionieren

Ich verstehe das nicht. Was ist das?

CMarketBook MarketBook.mqh
 
Konstantin:

Ich verstehe das nicht, was ist das?

Irgendeine Codezeile...
 
Konstantin Seredkin:
Einige Codezeilen...

Sie haben mir diesen Code gezeigt, also frage ich, was es ist, weil die Syntax nicht klar ist.

//+------------------------------------------------------------------+
//|MarktBuch.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. | |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <MarketBook.mqh>

CMarketBook MarketBook.mqh
double fake_buffer[];
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBook.SetMarketBookSymbol(Symbol());
//--- Zuordnung von Indikatorpuffern
   SetIndexBuffer(0,fake_buffer,INDICATOR_CALCULATIONS);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Marktbuch-Änderungsereignis|
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
   if(symbol != MarketBook.GetMarketBookSymbol())
      return;
   MarketBook.Refresh();
   ChartRedraw();
}
 
Konstantin:

Sie haben mir diesen Code gezeigt, also frage ich Sie, was er bedeutet, denn die Syntax ist nicht klar.

Haben die Worte, die ich in meiner Frage geschrieben habe, keine Bedeutung?

Ihr Beispiel

Dieser Code ist vom Autor des Themas in der Beschreibung der Klasse https://www.mql5.com/de/articles/3336 veröffentlicht .

Also sollte diese Frage zumindest nicht an mich gerichtet werden...

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • 2017.06.23
  • Vasiliy Sokolov
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 

Muss Copypasta sein. Das kommt vor. Der Autor hat diesen Code höchstwahrscheinlich teilweise im Browser geschrieben.

Anstelle von

CMarketBook MarketBook.mqh

schreiben Sie

CMarketBook MarketBook;