Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 182

 
Konstantin Nikitin :

Örneğin, VDS'deki tüm nesneleri siliyorum. Sadece programı yüklememek gereksiz. Evet ve işe yaramazlar. Global kullanıyorum. Yani her şey duruma bağlı.

Bak, sadece onları sevmediğimden değil:

  1. Onlarla yapılan işlemlerin atomitesi sorunu. Rıhtımlarda bu konuda sessizlik var, ancak özünde bu bir nesne ve onlarla yapılan işlemler atomik değil ve x86'da double okuma / yazma, yanılmıyorsam iki talimattır.
  2. Program dışındaki değişkenlerin kullanılabilirliği.
1. nokta, belgelerin kalitesi hakkında daha fazla homurdanıyorsa, 2. nokta zaten ciddidir.
 
Vladimir Simakov :

Bak, sadece onları sevmediğimden değil:

  1. Onlarla yapılan işlemlerin atomitesi sorunu. Rıhtımlarda bu konuda sessizlik var, ancak özünde bu bir nesne ve onlarla yapılan işlemler atomik değil ve x86'da double okuma / yazma, yanılmıyorsam iki talimattır.
  2. Program dışındaki değişkenlerin kullanılabilirliği.
1. nokta, belgelerin kalitesi hakkında daha fazla homurdanıyorsa, 2. nokta zaten ciddidir.

Peki neden okusun. GlobalVariableCheck aracılığıyla bir değişken olup olmadığını kontrol edebilirsiniz. Aynı şeyi nesnelerle de yaparsınız.
Yani sadece bir değişken oluşturmanız/kontrol etmeniz/silmeniz gerekir.

 

Vladimir Simakov :

2. Program dışındaki değişkenlerin kullanılabilirliği.

bununla ilgili bir sorun yok, terminalin global değişkenleriyle çalışmanın tüm fonksiyonlarının bir dönüş değeri var - işlemin sonucu

ayrıca senkronizasyon için bir araç var https://www.mql5.com/ru/docs/globals/globalvariablesetoncondition , bir çeşme değil, önerilen ve onu kullanın

ancak büyük rahatsızlık veri tipidir - sadece double , double 'ı sevmiyorum, en azından ulong olur - yine de bir kullanım bulabilirsiniz ve organizasyon adı/değeri ---> string/double sizi ister yerleri değiş tokuş - veriyi dizgeye yaz ve çift tuşla - birden fazla işlem yazılabilir/okunabilir

ve tüm bu "ekonomiyi" değerlendirdikten sonra, ikili dosyaları alıp yazıyorsunuz - tam özgürlük ve belirsizlik yok - fizibiliteyi değerlendirirken benim için böyleydi

belki de onlarla çalışmalısın.

burada @fxsaber herhangi bir türle çalışma örneklerini gösterdi https://www.mql5.com/ru/forum/320395/page6#comment_12910394

 
Konstantin Nikitin :

Peki neden okusun. GlobalVariableCheck aracılığıyla bir değişken olup olmadığını kontrol edebilirsiniz. Aynı şeyi nesnelerle de yaparsınız.
Yani sadece bir değişken oluşturmanız/kontrol etmeniz/silmeniz gerekir.

Evet, başka bir robotta isimlerle en banal çarpışma çizgidir

 GlobalVariableDel (yourValueName);

sana bir depozito gönderir

İsmin benzersiz olacağını, orada başka bir robot olmayacağını, çocuğun / karısının / arkadaşının / kendisinin sarhoş olduğunu, savaş terminaline asla yaklaşmayacaklarını söyleyeceksiniz))) Katılıyorum ama olasılık sıfır değil , bu da kodun güvenilmez hale geldiği anlamına gelir.

 
Vladimir Simakov :

Evet, başka bir robotta isimlerle en banal çarpışma çizgidir

sana bir depozito gönderir

İsmin benzersiz olacağını, orada başka bir robot olmayacağını, çocuğun / karısının / arkadaşının / kendisinin sarhoş olduğunu, savaş terminaline asla yaklaşmayacaklarını söyleyeceksiniz))) Katılıyorum ama olasılık sıfır değil , bu da kodun güvenilmez hale geldiği anlamına gelir.

Sanrılar ve fanteziler

para danışmanı HER ZAMAN ayrı bir terminalden, kendi VDS'sinde (hatta bir sunucuda) çalışır ve hiç kimse onunla karıştırılmaz.

 
Maxim Kuznetsov :

Sanrılar ve fanteziler

para danışmanı HER ZAMAN ayrı bir terminalden, kendi VDS'sinde (hatta bir sunucuda) çalışır ve hiç kimse onunla karıştırılmaz.

HER ZAMAN mı demek istiyorsun? Bugün - her zaman, yarın kendiniz farklı sayabilirsiniz. Ve gördüğüm kadarıyla herkes seninle aynı fikirde değil.

Global uçbirim değişkenlerini kullanmanın gerçek tehlikesine dikkat çektim. Bu ne iyi ne de kötü - bu, geliştiricilerin bize verdiği bir bilgidir, sadece bilmeniz ve dikkate almanız gerekir.

aynı çizgi

 GlobalVariablesDeleteAll ();

herhangi bir komut dosyasında yürütülür ve ayy...

 

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

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

Vladimir Simakov , 2020.05.24 17:02

aynı çizgi

 GlobalVariablesDeleteAll ();

herhangi bir komut dosyasında yürütülür ve ayy...

Aynısı grafik nesneler için de geçerlidir.

 ObjectsDeleteAll (...


Sadece danışmanın kaynakları başka programlar tarafından değiştirilemez.

 

Meslektaşlarım, mümkünse bir makro oluşturmaya yardımcı olmanızı rica ediyorum.

İki boyutlu bir diziyi dinamik olarak bildirmeniz gerekir. Ayrıca ikinci boyutun da değiştirilmesi gerekiyor. Bu döngü gibi:

 for ( int would_be_size2= 0 ;would_be_size2< 5 ;would_be_size2++)
    {
     double d_array[][ would_be_size2 ];
     int size2= ArrayRange (d_array, 1 );
    }

Ancak bu durumda derleyici yemin eder:

 '[' - invalid index value        t7.mq5   20        22

Şuna benzer bir makro görmek istiyorum:

 #define CREATE_MARRAY(type,arr_name,size2) (type arr_name[][ ##size2])

Bir satır yerine:

 double d_array[][would_be_size2];

Teşekkür ederim.

 
Denis Kirichenko :

Meslektaşlarım, mümkünse bir makro oluşturmaya yardımcı olmanızı rica ediyorum.

İki boyutlu bir diziyi dinamik olarak bildirmeniz gerekir. Ayrıca ikinci boyutun da değiştirilmesi gerekiyor. Bu döngü gibi:

Ancak bu durumda derleyici yemin eder:

Şuna benzer bir makro görmek istiyorum:

Bir satır yerine:

Teşekkür ederim.

ve yeterli (maksimum) boyutta bir dizi oluşturmak için bir döngünün dışında siyasi görüşler karışmaz mı? :-)

verilen yaklaşım (diziyi bir döngüde yeniden oluşturmak için her seferinde) hız veya bellek tüketimi açısından hiçbir şey kazanmaz.

 
Denis Kirichenko :

Şuna benzer bir makro görmek istiyorum:

Çalışmayacak.

Neden: