Bibliotheken: TradeTransactions - Seite 3

 
nicholi shen:

Ich danke Ihnen für Ihre Wertschätzung. Ich habe in diesem Forum gelernt, wie man programmiert. Ich veröffentliche meine Arbeit, weil sie diszipliniert. Ich benutze meine Beschreibungen als Anhaltspunkte, weil ich sehr schnell vergesse, was und wie ich geschrieben habe.

Ich entschuldige mich für meinen Programmierstil, aber er war für mich selbst gedacht. Und wurde als Nebeneffekt veröffentlicht.

Leider ist es unmöglich, die Popularität veröffentlichter Arbeiten zu beurteilen. Wenn jemand sie nutzt, dann ein sehr enger Kreis von Nutzern.

Die Zahl der Nutzer zu erhöhen - ein solches Ziel gibt es nicht.

 

Ich kann die Daten nicht abrufen, hier führe ich ein Skript aus, und so wie ich es verstehe, werden die Daten jetzt irgendwo im Terminal gespeichert:

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/de/code/22166
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
   const RESOURCEDATA<int>ResourceINT("::int"); // Ressource für den Austausch von Ints. const - als Beweis dafür, dass nichts in das Klassenobjekt geschrieben wird 
   int ArrayINT[]={1,2,3};
   ResourceINT=ArrayINT;  // Die Ressource speichert ein Array. 
   int ArrayINT2[];
   ResourceINT.Get(ArrayINT2); // Lesen von Daten aus der Ressource.
   ArrayPrint(ArrayINT2);      // Zurückgezogen: 1 2 3 5 1 2 3 
  }
//+------------------------------------------------------------------+

Hier führe ich ein weiteres Skript aus, um die Daten zu erhalten, die beim Ausführen des ersten Skripts gespeichert wurden, aber die Daten werden nicht angezeigt:

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/de/code/22166
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
// Dies ist der vollständige Name der Ressource, auf die von einem anderen Programm aus zugegriffen werden soll
   //const string NameOut=StringSubstr(MQLInfoString(MQL_PROGRAM_PATH),StringLen(TerminalInfoString(TERMINAL_PATH))+5)+"::Ticks"; 
   const string NameOut=StringSubstr(MQLInfoString(MQL_PROGRAM_PATH),StringLen(TerminalInfoString(TERMINAL_PATH))+5,9)+"Test_Keep_Info.ex5::Ticks";   
   Print(NameOut); // Druckt den vollständigen Namen der Ressource.
   const RESOURCEDATA<int>Resource(NameOut); // Ressource für den Zugriff auf Daten (schreibgeschützt) aus einem anderen Programm
   int ArrayINT2[];
   Resource.Get(ArrayINT2); // Lesen von Daten aus der Ressource.
   ArrayPrint(ArrayINT2);      // Zurückgezogen: 

  }
//+------------------------------------------------------------------+

Können Sie mir sagen, wo der Fehler liegt?

Dateien:
 
Nauris Zukas:

Ich kann die Daten nicht abrufen, da ich ein Skript ausführe und die Daten, so wie ich es verstehe, jetzt irgendwo im Terminal gespeichert sind

Die Daten werden vernichtet, sobald ihr Besitzer (der sie geschrieben hat) aufhört zu arbeiten. Wenn dies nicht geschieht, wird der Speicher des Terminals schnell überfüllt sein.

Starten Sie den Datenstamm als Berater/Indikator. Solange er lebt, sind seine Daten für andere verfügbar.

 
fxsaber:

Die Daten werden zerstört, sobald ihr Besitzer (der sie geschrieben hat) aufhört zu arbeiten. Wenn dies nicht geschieht, wird der Speicher des Terminals schnell überfüllt.

Starten Sie den Datenstamm als Berater/Indikator. Solange er lebt, sind seine Daten für andere verfügbar.

Bei Indikatoren hat es auch nicht funktioniert. Ich denke, da stimmt etwas mit dem Pfad nicht.

 
Nauris Zukas:

Bei den Indikatoren hat es auch nicht funktioniert. Ich denke, dass etwas mit dem Pfad nicht stimmt.

Sie erstellen in jedem OnCalculate eine Ressource und beenden sie, wenn die Funktion beendet ist.

Sie sollten das Objekt statisch machen. Das sind die Grundlagen von OOP.

 
fxsaber:

Sie erstellen eine Ressource in jedem OnCalculate und beenden sie, wenn die Funktion abgeschlossen ist.

Sie sollten das Objekt statisch machen. Das sind die Grundlagen von OOP.

Ich habe static hinzugefügt, aber es funktioniert immer noch nicht. Können Sie mir sagen, was hier falsch ist?

 
Nauris Zukas:

Ich habe Statik hinzugefügt, aber es funktioniert immer noch nicht. Können Sie korrigieren, was dort falsch ist?

Aktualisieren Sie ResourceData.mqh und versuchen Sie diese Indikatoren

// Senden von Daten
#property indicator_chart_window
#property indicator_plots 0

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/de/code/22166
#include <GlobalVariables.mqh> // https://www.mql5.com/ru/forum/189649#comment_4854618

const RESOURCEDATA<MqlTick> Resource("::" + __FILE__); // Ressource für die Datenübertragung (Ticks)

void OnInit()
{
  _GlobalVariableSet("ResourceName", Resource.GetFullName()); // Schreiben des vollständigen Namens der Ressource (schreibgeschützt) in die globale Variable
}

void OnDeinit( const int )
{
  _GlobalVariableDel("ResourceName");
}

int OnCalculate( const int, const int, const int, const double &[] )
{
  MqlTick Ticks[];
  
  CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, 0, 5); // Erstellte Daten
  
  Resource = Ticks; // Aufzeichnung der Daten
    
  return(0);
}


// Datenabruf
#property indicator_chart_window
#property indicator_plots 0

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/de/code/22166
#include <GlobalVariables.mqh> // https://www.mql5.com/ru/forum/189649#comment_4854618

int OnCalculate( const int, const int, const int, const double &[] )
{
  static const RESOURCEDATA<MqlTick> Resource(_GlobalVariableGet<string>("ResourceName")); // Erstellt eine Ressource auf der Grundlage des in der globalen Variable übergebenen vollständigen Namens
  
  MqlTick Ticks[];

  Resource.Get(Ticks); // Lesen von Daten aus der Ressource.
  
  ArrayPrint(Ticks);   // Drucken Sie die erhaltenen Daten aus
  
  return(0);
}
 
fxsaber:

Aktualisieren Sie ResourceData.mqh und versuchen Sie diese Indikatoren


Danke, ich habe etwas, jetzt werde ich es auseinandernehmen, um zu sehen, wie es funktioniert.
Können Sie bitte die Warnungen in GlobalVariables.mqh korrigieren? Mein Wissen endete bei Res=-1, aber dann zeigte es dort einen Fehler an. Und ich weiß auch nicht, wie ich die OnStart()-Warnung entfernen kann.


Dateien:
 
Nauris Zukas:

Können Sie bitte die Warnungen in GlobalVariables.mqh korrigieren?

Dateien:
 
fxsaber:

Ich danke Ihnen!