Mein Ansatz. Der Kern ist der Motor. - Seite 95

 
Реter Konow:

Auch die Gewerkschaften sind bereits erledigt.

Ich habe es noch nicht bis zum Ende durchschaut.

Das ist nicht richtig:

Char_Uint u;
   uint width,height;
   string Message; 
   //-----------------------------
   if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",u.Uint,width,height))Print("Failed to read resource!  ",GetLastError());
   //-----------------------------
   Message = CharArrayToString(u.Char);
   //-----------------------------
   Print(Message);

Richtig:

Char_Uint u;
   uint width,height;
   string Message; 
   //-----------------------------
   if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",u.Uint,width,height))Print("Failed to read resource!  ",GetLastError());
   //-----------------------------
   double bid = u.Double;
   //-----------------------------
   Print(DoubleToString(bid));

Und was ist die Nachlässigkeit im Code? Sie haben unterschiedliche Char_Uint-Strukturen für Empfänger und Absender!

 
Vasiliy Sokolov:

Es ist nicht ganz bis zum Ende durchdacht.

Das ist nicht richtig:

Richtig:

Und was ist die Nachlässigkeit im Code? Sie haben unterschiedliche Char_Uint-Strukturen für den Empfänger und den Absender!

Vielen Dank, Vasily. Ich wusste nicht, dass das notwendig ist. Allerdings habe ich auch die Variante ausprobiert, bei der die Strukturen identisch sind.

Wie auch immer, das Ergebnis ist nicht das, was ich will. Hier ist der Code:

//+------------------------------------------------------------------+
//|                                                    Tester EA.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
union Char_Uint
  {
   uchar   Char[8];
   uint    Uint[2];  
   double  Double; 
  };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //----------------------------------------------
   if(!ObjectCreate(0,"Resource",OBJ_BITMAP_LABEL,0,0,0))Print("Object is not created!  ",GetLastError());
   else Print("Object created!");
   //-------------------------------
   if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"::Resource"))Print("BMPFILE is not created!");
   else Print("BMPFILE created!");
   //----------------------------------------------
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   
      
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   //---------------------------
   Char_Uint u;
   //---------------------------
   u.Double = Bid;
   //---------------------------
   if(!ResourceCreate("::Resource",u.Uint,2,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA))Print("Resource is not created!");
   //---------------------------   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   
  }
//+------------------------------------------------------------------+

Und der Empfänger:

//+------------------------------------------------------------------+
//|                                              Resource reader.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
union Char_Uint
  {
   uchar   Char[8];
   uint    Uint[2];  
   double  Double; 
  };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   EventSetMillisecondTimer(5250); 
   
   if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"\\Experts\\Tester EA.ex4::Resource"))Print("Resource is not connected!");
   else Print("Resource connected!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
  Char_Uint u;
   uint width,height;
   string Message; 
   //-----------------------------
   if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",u.Uint,width,height))Print("Failed to read resource!  ",GetLastError());
   //-----------------------------
   double bid = u.Double;
   //-----------------------------
   Print(DoubleToString(bid,5));
  }
//+------------------------------------------------------------------+

Ergebnis:

2018.12.20 17:13:37.395 Resource reader GBPUSD,M5: 9223464270575144355.75808

Aber zumindest ändert sich das nicht. Der Wert ist konstant. (obwohl er sich ändern sollte, wenn sich der Gebotswert ändert).

 
Реter Konow:

Aber zumindest ändert sich das nicht. Der Wert ist konstant. (obwohl er sich ändern sollte, wenn sich der Gebotswert ändert).

Das ist sehr seltsam, weil Ihr Beispiel auf meinem Computer korrekt funktioniert. Versuchen Sie, beide zu Experten zu machen und einfach auf die beiden Karten zu setzen.

 
Vasiliy Sokolov:

Das ist sehr merkwürdig, denn Ihr Beispiel funktioniert auf meinem Computer korrekt. Versuchen Sie beides, um Experten zu machen und platzieren Sie nur die beiden Karten.

Gut.

 

Hier ist der Code des zweiten EA auf dem zweiten Diagramm. Das Ergebnis ist das gleiche...

//+------------------------------------------------------------------+
//|                                                  Tester EA 2.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
union Char_Uint
  {
   uchar   Char[8];
   uint    Uint[2];  
   double  Double; 
  };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
   if(!ObjectSetString(0,"Resource",OBJPROP_BMPFILE,"\\Experts\\Tester EA.ex4::Resource"))Print("Resource is not connected!");
   else Print("Resource connected!");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
  Char_Uint u;
   uint width,height;
   //-----------------------------
   if(!ResourceReadImage("\\Experts\\Tester EA.ex4::Resource",u.Uint,width,height))Print("Failed to read resource!  ",GetLastError());
   //-----------------------------
   double bid = u.Double;
   //-----------------------------
   Print(DoubleToString(bid,5));
  }
//+------------------------------------------------------------------+

Es funktioniert nicht so, wie es sollte.

 
Hier sind meine Quellen, nur für den Fall, überprüfen Sie sie:
Dateien:
 
Vasiliy Sokolov:
Hier sind meine Quellen für alle Fälle, überprüfen Sie sie:

Nein. Das ist das Gleiche. Vielleicht liegt es an den Leerzeichen in den EA-Namen? Sie haben sie ohne Leerzeichen heruntergeladen, aber ich habe Leerzeichen. Ich werde es neu machen.

 
Реter Konow:

Nein. Das ist das Gleiche. Vielleicht liegt es an den Leerzeichen in den EA-Namen? Sie haben sie ohne Leerzeichen heruntergeladen, aber ich habe Leerzeichen. Ich werde es neu machen.

Versuchen Sie es. Die Verwendung von Leerzeichen ist höchst unerwünscht. Befreien Sie sich von dieser schlechten Angewohnheit.

 

Er schreibt:

2018.12.20 17:46:26.798 Tester_EA_2 EURCHF,H1: 0.00000
2018.12.20 17:46:34.801 Tester_EA_2 EURCHF,H1: Failed to read resource!  4100
4100 -

ERR_SOME_FILE_ERROR

 

Ich hab's. Fehler beim Lesen der Datei - ich habe nur vergessen, einen Bindestrich hinzuzufügen. Ich fügte es hinzu und kam zum Ergebnis zurück:

2018.12.20 17:55:24.590 Tester_EA_2 EURCHF,H1: 9223464270575144355.75808