2030'da Metatrader X'i nasıl görüyorsunuz? - sayfa 6

 
fxsaber :

Globale yazılan herhangi bir veri, ilgili içerme burada görülebilir.

Tamam, bu çözümü görmedim

hemen çözemezsin, kontrol etmelisin

 
fxsaber :

Globale yazılan herhangi bir veri, ilgili içerme burada görülebilir.

Kenelerin yanı sıra başka verilerden oluşan devasa bir dünya olduğunun farkında mısınız? Bir sınıf örneğinin verilerini yazmak/okumak garip olurdu.

 
Igor Makanu :

Tamam, bu çözümü görmedim

hemen çözemezsin, kontrol etmelisin

Evet, bir kaynağa/kaynaktan ham veri yazma ve okuma. Güzel örnek, teşekkürler!

Peki ya benim tarafımdan pek saygı duyulmayan fxsaber, sınıflarla aynı şey? Tanımlarla bile yapabilirsiniz, insanlar çıldırmayacağına söz verir))

 
Alexey Volchanskiy :

Gerçekten kola, oh, büyükanneler


Değil . Zencefilli kurabiye gelecekleri.

 
Alexey Volchanskiy :

Kenelerin yanı sıra başka verilerden oluşan devasa bir dünya olduğunun farkında mısınız?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

string türündeki terminal global değişkenleri gerekli mi?

fxsaber , 2017.04.10 18:25

 void OnStart ()
{
   string Name = "Name" ;

// Записываем/считываем строки
  _GlobalVariableSet(Name, "Hello World!" );
   Print (_GlobalVariableGet< string >(Name));

// Записываем/считываем простые структуры
   MqlTick Tick;
   SymbolInfoTick ( _Symbol , Tick);

  _GlobalVariableSet(Name, Tick);
   Print (_GlobalVariableGet< MqlTick >(Name).time);

// Записываем/считываем массивы
   MqlTick Ticks[ 2 ];

  Ticks[ 0 ] = Tick;
  Ticks[ 1 ] = Tick;

  _GlobalVariableSet(Name, Ticks);

   MqlTick NewTicks[];

//  if (_GlobalVariableGet(Name, NewTicks)) // https://www.mql5.com/ru/forum/1111/page1868#comment_4853867
//    Print(NewTicks[1].time);

  _GlobalVariableDel(Name);
}


Bir sınıf örneğinin verilerini yazmak/okumak garip olurdu.

Verileri geliştiriciler gibi yapılarda saklıyorum. Kullanışlı ve mantıklı. Bu nedenle, yapılara yönelik işaretçiler olmamasına rağmen, bu konuda sınıflara bakmadım.

 
fxsaber :


Verileri geliştiriciler gibi yapılarda saklıyorum. Kullanışlı ve mantıklı. Bu nedenle, yapılara yönelik işaretçiler olmamasına rağmen, bu konuda sınıflara bakmadım.

Kontrol etmek için bir komut dosyası topladım, ancak MqlTick dizisini nasıl okuyacağımı anlamadım

 #property strict
#include <fxsaber\TypeToBytes.mqh>         //https://www.mql5.com/ru/code/16282
#define POSTFIX "___"

string GetName( const string Name, const int Num, const string PostFix = POSTFIX )
{
   return (Name + PostFix + ( string )Num);
}

bool _GlobalVariableDel( const string Name )
{
   return ( GlobalVariableDel (Name) && ( GlobalVariablesDeleteAll (Name + POSTFIX) >= 0 ));
}

#define GLOBAL_VARIABLE_SET(A)                                                        \
template < typename T>                                                                 \
   datetime _GlobalVariableSet( const string Name, const T A )                         \
  {                                                                                   \
    _GlobalVariableDel(Name);                                                         \
                                                                                      \
     double Array[];                                                                   \
                                                                                      \
     const datetime Res = GlobalVariableSet (Name, _ArrayCopy(Array, _R(Value).Bytes)); \
     const int Size = ArraySize (Array);                                                \
                                                                                      \
     for ( int i = 0 ; i < Size; i++)                                                    \
       GlobalVariableSet (GetName(Name, i), Array[i]);                                  \
                                                                                      \
     return (Res);                                                                      \
  }

GLOBAL_VARIABLE_SET(Value)
GLOBAL_VARIABLE_SET(&Value)
GLOBAL_VARIABLE_SET(&Value[])

#define GLOBAL_VARIABLE_GET(A)                                              \
  {                                                                         \
     double Array[];                                                         \
                                                                            \
     const int Amount = ( int )Tmp;                                            \
     const int Size = ArrayResize (Array, Amount / sizeof ( double ) +           \
                                 ((Amount % sizeof ( double ) == 0 ) ? 0 : 1 )); \
                                                                            \
     for ( int i = 0 ; i < Size; i++)                                          \
      Array[i] = GlobalVariableGet (GetName(Name, i));                       \
                                                                            \
     uchar Bytes[];                                                          \
                                                                            \
    _ArrayCopy(Bytes, Array, 0 , 0 , Amount);                                 \
                                                                            \
    _W(A) = Bytes;                                                          \
  }

template < typename T>
const T _GlobalVariableGet( const string Name )
{
  T Res; // https://www.mql5.com/ru/forum/1111/page1869#comment_4854112

   double Tmp;

   if ( GlobalVariableGet (Name, Tmp))
    GLOBAL_VARIABLE_GET(Res)

   return (Res);
}

template < typename T>
bool _GlobalVariableGet( const string Name, T &Value )
{
   double Tmp;
   const bool Res = GlobalVariableGet (Name, Tmp);

   if (Res)
    GLOBAL_VARIABLE_GET(Value)

   return (Res);
}


void OnStart ()
  {
   string Name= "Name" ;

// Записываем/считываем строки
   _GlobalVariableSet(Name, "Hello World!" );
   Print (_GlobalVariableGet< string >(Name));

// Записываем/считываем простые структуры
   MqlTick Tick;
   SymbolInfoTick ( _Symbol ,Tick);

   _GlobalVariableSet(Name,Tick);
   Print ( "time --> " ,_GlobalVariableGet< MqlTick >(Name).time);
   Print ( "bid --> " ,_GlobalVariableGet< MqlTick >(Name).bid);

// Записываем/считываем массивы
   MqlTick Ticks[ 2 ];

   Ticks[ 0 ] = Tick;
   Ticks[ 1 ] = Tick;

   _GlobalVariableSet(Name,Ticks);
   
//    Print("time --> ",_GlobalVariableGet<MqlTick>(Name).time);
//    Print("bid --> ",_GlobalVariableGet<MqlTick>(Name).bid);
   
   _GlobalVariableDel(Name);
  }
//+------------------------------------------------------------------+


Not: derleyici, başlatılmamış değişken 'Res'in olası kullanımını uyarır, mümkünse kaldırın


 
Alexey Volchanskiy :

Şahsen, çoklu görev yapmayı özlüyorum. Hatırlıyorum (10 satır nostalji, gençliği atla), 2000 yılında RSDN programcı forumunda otluyordum, sonra Pentium 4 piyasaya sürüldü ve Intel, yol haritalarında yakında 15 GHz frekansını aşacağını haykırıyordu. P4! Evet, şaka yapmıyorum, her fırsatta öyleydi. Eh, gerçekten öyle mi düşündüler, yoksa bir doldurma mıydı bilmiyorum ama inanmadım, hala bir demir adamım.

Daha sonra çok çekirdekli sistemlerin yakında başlayacağı konusunda büyük bir konu açtım, göreceksiniz, hazırlanmanız gerekiyor. İnsanlar bir peri masalı gibi güldüler, nasıl paralel bir kod programlayabilirsiniz? O fantastik.

Ve kim haklıydı? Intel 15 GHz hızında başarısız oldu, çift çekirdekli Pentium D masaüstü sürümünde ve ardından çığır açan Duo'da ortaya çıktı.

Ve biz MQL5 olarak hala 199*'larda yaşıyoruz. Çoklu kullanım yok, istisna yok ... bir karpuz için kederle gitti ...

MT5'in açıklamasından çok iş parçacıklı olduğu anlaşılmaktadır. Kullanıcının altındaki çalışmasında modern bir işlemcinin yürütülebilir kodların çöp dökümü olması nedeniyle, karpuz yemeye devam eder, tüm iş parçacıklarında pragmatik bir anlam yoktur. İşletmeler ne verimli kodlarla ne de bilgi işlem gücünün rasyonel kullanımıyla ilgilenmiyor: bu yeterli değil - daha fazla satın alın.

PS Belki 1.5 GHz? Yanılabilirim, o yıllarda teknolojinin fiziksel sınırını 5nm'de ve ondan tahmini GHz'de belirlediler. Birkaç yıl içinde bunun gibi 200nm'den 5nm'ye geçmek istiyorum - tabii ki istedim.

 

2030'da metatrader yasaklanacak,

her şeyi yasaklayacak kişi iktidara gelir.

O zaman dünyada tek ödeme sistemi olacak.

Ve tüm dünyada bir Cetvel.

Herkese fiş koymaya ve herkesi GLONASS, 5G'nin kontrolü altına almaya başlayacak.

Nakit olmayacak. Hesaplamalar, vücuda yerleştirilen çipler aracılığıyla yapılacaktır.

İnternet üzerinden ticaret sadece toplumun ayrıcalıklı üyelerine - bu Hükümdar'ı gerçek bir tanrı olarak görenlere - verilecek ...


Amin.

 
Igor Makanu :

Kontrol etmek için bir komut dosyası topladım, ancak MqlTick dizisini nasıl okuyacağımı anlamadım

Bu aşırı yükü ekle

 template < typename T>
bool _GlobalVariableGet( const string Name, T &Value[] )
{
   double Tmp;
   const bool Res = GlobalVariableGet (Name, Tmp);

   if (Res)
  {
     double Array[];                                                         
                                                                            
     const int Amount = ( int )Tmp;                                            
     const int Size = ArrayResize (Array, Amount / sizeof ( double ) +           
                                 ((Amount % sizeof ( double ) == 0 ) ? 0 : 1 )); 
                                                                            
     for ( int i = 0 ; i < Size; i++)                                          
      Array[i] = GlobalVariableGet (GetName(Name, i));                       
                                                                                                                                                        
    _ArrayCopy(Value, Array, 0 , 0 , Amount);
  }  

   return (Res);
}
Igor Makanu :

Not: derleyici, başlatılmamış değişken 'Res'in olası kullanımını uyarır, mümkünse kaldırın

Bu satırı ekle

  T Res;
   ZeroMemory (Res);
 
Unicornis :

MT5'in açıklamasından çok iş parçacıklı olduğu anlaşılmaktadır. Kullanıcının altındaki çalışmasında modern bir işlemcinin yürütülebilir kodların çöp dökümü olması nedeniyle, karpuz yemeye devam eder, tüm iş parçacıklarında pragmatik bir anlam yoktur. İşletmeler ne verimli kodlarla ne de bilgi işlem gücünün rasyonel kullanımıyla ilgilenmiyor: bu yeterli değil - daha fazla satın alın.

PS Belki 1.5 GHz? Yanılabilirim, o yıllarda teknolojinin fiziksel sınırını 5nm'de ve ondan tahmini GHz'de belirlediler. Birkaç yıl içinde bunun gibi 200nm'den 5nm'ye geçmek istiyorum - tabii ki istedim.

Okuryazar değilim ve talimatları okumuyorum. Ancak MT5'in yalnızca optimize edicide çok iş parçacıklı olduğunu biliyorum) Test cihazında bile yalnızca bir iş parçacığında çalışıyor.

OpenCL paralelleştirme için kullanılabilir, ancak bu teknolojinin kendisi basitçe MT5 tarafından desteklenir.

Yol haritasındaki 15 GHz'e gelince, eminim bir programcı hafızam vardır, gördüklerimi asla unutmam.