Benim yaklaşımım. Çekirdek - Motor. - sayfa 95

 
Реter Konow :

Zaten ve sendikalarda anlaşıldı.

Son ana kadar tam olarak anlayamadım.

Bu doğru değil:

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);

Doğru şekilde:

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));

Ve kodun nesi var? Sizde Char_Uint'i alıcıda ve göndericide farklı yapılandırır!

 
Vasiliy Sokolov :

Son ana kadar tam olarak anlayamadım.

Bu doğru değil:

Doğru şekilde:

Ve kodun nesi var? Sizde Char_Uint'i alıcıda ve göndericide farklı yapılandırır!

Teşekkürler Vasili. gerekli olduğunu bilmiyordum. Yine de yapıların aynı olduğu seçeneği de denedim.

Her durumda, çıktı ihtiyacınız olan şey değildir. İşte kod:

 //+------------------------------------------------------------------+
//|                                                    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 ()
  {
//---
   
  }
//+------------------------------------------------------------------+

Ve alıcı:

 //+------------------------------------------------------------------+
//|                                              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 ));
  }
//+------------------------------------------------------------------+

Sonuç:

 2018.12 . 20 17 : 13 : 37.395 Resource reader GBPUSD,M5: 9223464270575144355.75808

Ama en azından değişmiyor. Değer sabittir. (Teklif değerinde bir değişiklikle değişmesi gerekse de).

 
Реter Konow :

Ama en azından değişmiyor. Değer sabittir. (Teklif değerinde bir değişiklikle değişmesi gerekse de).

Bu çok garip çünkü örneğiniz bilgisayarımda düzgün çalışıyor. Her iki uzmanı da yapmaya çalışın ve bunları iki tabloya yerleştirin.

 
Vasiliy Sokolov :

Bu çok garip çünkü örneğiniz bilgisayarımda düzgün çalışıyor. Her iki uzmanı da yapmaya çalışın ve bunları iki tabloya yerleştirin.

TAMAM.

 

İşte ikinci çizelgedeki ikinci uzmanın kodu. Sonuç aynı...

 //+------------------------------------------------------------------+
//|                                                  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 ));
  }
//+------------------------------------------------------------------+

Olması gerektiği gibi çalışmıyor.

 
Her ihtimale karşı kaynaklarım şunlar, bir göz atın:
Dosyalar:
 
Vasiliy Sokolov :
Her ihtimale karşı kaynaklarım şunlar, bir göz atın:

Numara. Aynısı. Belki de uzmanların isimlerindeki boşluklardan dolayıdır? Onları boşluksuz indirdin (autorename), ama boşluklarım var. Hemen değiştireceğim.

 
Реter Konow :

Numara. Aynısı. Belki de uzmanların isimlerindeki boşluklardan dolayıdır? Onları boşluksuz indirdin (autorename), ama boşluklarım var. Hemen değiştireceğim.

Denemek. Boşlukların kullanımı kesinlikle önerilmez. Bu kötü alışkanlıktan kurtulun.

 

yazar:

 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

 

Anladım. Dosya okunurken hata oluştu - kısa çizgi eklemeyi unuttum. Eklendi ve sonuca geri döndü:

 2018.12 . 20 17 : 55 : 24.590 Tester_EA_2 EURCHF,H1: 9223464270575144355.75808
Neden: