Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 681

 
post_ek :
Peki, Otkritie'de MT5 hisselerinin ticaretini yapmak mümkün mü değil mi?
Yapabilir! Yalnızca hisse senetleri veya vadeli işlemler olacaktır (yalnızca bir MT5 platformu ücretsiz olarak verilir). İkincisi için - aylık ödeme yapmanız gerekecek. Hatırladığım kadarıyla, evet. Ayrıntıları kişisel hesabınızın Açılışında görün.
 
Alexey Kozitsyn :

Vladimir, kişinin kafasını karıştırma!

Belgelerden:

https://www.mql5.com/ru/docs/basis/variables/global
Değişkenleri başlatmama alışkanlığı zararlıdır, çünkü bu davranış genellikle siyah bir kuğuya yol açar. Bu nedenle, bunu bir kural olarak almanız gerekir - bir değişken yarattınız, hemen başlatın.
 
Vladimir Karputov :
Değişkenleri başlatmama alışkanlığı zararlıdır, çünkü bu davranış genellikle siyah bir kuğuya yol açar. Bu nedenle, bunu bir kural olarak almanız gerekir - bir değişken yarattınız, hemen başlatın.
Dur dur dur. "Kural olarak almak" ile "OnInit()'te bu değişkenlere açıkça başlatmak ( değer atamak ) gereklidir" kavramlarını karıştırmayalım - bu tamamen yalandır!
 
Alexey Kozitsyn :
Dur dur dur. "Kural olarak almak" ile "OnInit()'te bu değişkenlere açıkça başlatmak ( değer atamak ) gereklidir" kavramlarını karıştırmayalım - bu tamamen yalandır!
Değişkenleri başlatamazsınız - paranız.
 
Vladimir Karputov :
Değişkenleri başlatamazsınız - paranız.
Bir kez daha tekrar edeceğim. Fırsatları sorumluluklarla karıştırmayın!
 

Vladimir kısmen haklı.

örnek vermek,

bazen, ne zaman bir değişken tanımladığımı hatırlamıyorum

bool DUR;

ve aslında OnTick'te çalıştı.

varsayılan olarak, bool yanlış olmalıdır

şöyle yaptım:

void OnTick ()

{

if (!STOP) { Print ( "STOP" ); return ;}

}

Ancak bu kod çalışmadı, çünkü bool STOP=false;

Bu durumu bir kez, bazı yapılarda yaşadım, sonra yeniden oluşturmadım (yapıda bir tür aksaklık veya başka bir şey vardı, net değil). ama bu hatayı aldım.

 
Vladislav Andruschenko :

Vladimir kısmen haklı.

Hiçbir şekilde değişkenleri başlatılmamış olarak bırakmayı savunmuyorum. Ancak, yeni başlayan birine bir şey tavsiye ettiğinizde, tavsiyenizin tek doğru karar olduğunu söylemenize gerek yok, özellikle de öyle olmadığı için.
 
Vladimir Karputov :
Değişkenleri başlatmama alışkanlığı zararlıdır, çünkü bu davranış genellikle siyah bir kuğuya yol açar. Bu nedenle, bunu bir kural olarak almanız gerekir - bir değişken yarattınız, hemen başlatın.

OnInit()'te başlatıldıklarında zaman çerçevesini değiştirirken değişkenlerin değerlerini kaybedebilirsiniz - bu nedenle programın mantığındaki olası sıkışmalar.

//+------------------------------------------------------------------+
//|                                    exTextInitGlobalVariables.mq5 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Artem A. Trishkin, Skype artmedia70"
#property link        "https://login.mql5.com/ru/users/artmedia70"
#property version    "1.00"
//--- input parameters
input int       TestInput= 0 ;             // Внешняя переменная
int testInputGlobal=TestInput;         // Значение внешней переменной, присвоенное на глобальном уровне
int testInputInit;                     // Значение внешней переменной, присвоенное в OnInit()

//--- global variables
int    TestValueGlobalNoInitNo;         // Не инициализирована значением нигде
int    TestValueGlobalYesInitNo= 0 ;       // Инициализирована значением 0 при объявлении, не инициализирована в OnInit()
//---
int    TestValueGlobalNoInitYes;         // Не инициализирована значением при объявлении, инициализирована в OnInit() нулём
int    TestValueGlobalYesInitYes= 0 ;     // Инициализирована нулём и при объявлении, и в OnInit()
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   testInputInit=TestInput;
   TestValueGlobalNoInitYes= 0 ;
   TestValueGlobalYesInitYes= 0 ;
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   testInputInit++;
   testInputGlobal++;
   TestValueGlobalNoInitNo++;
   TestValueGlobalNoInitYes++;
   TestValueGlobalYesInitNo++;
   TestValueGlobalYesInitYes++;
   Comment
         (
         "\n" + "=============================================" +
         "\n" + "Значение внешней переменной TestInput(" ,TestInput, "), присвоенное в OnInit(): " ,( string )testInputGlobal+
         "\n" + "Значение внешней переменной TestInput(" ,TestInput, "), присвоенное на глобальном уровне: " ,( string )testInputGlobal+
         //---
         "\n" + "=============================================" +
         "\n" + "Не инициализирована значением нигде: " ,( string )TestValueGlobalNoInitNo+
         "\n" + "Инициализирована значением 0 при объявлении, не инициализирована в OnInit(): " +( string )TestValueGlobalYesInitNo+
         //---
         "\n" + "=============================================" +
         "\n" + "Не инициализирована значением при объявлении, инициализирована в OnInit() нулём: " +( string )TestValueGlobalNoInitYes+
         "\n" + "Инициализирована нулём и при объявлении, и в OnInit(): " +( string )TestValueGlobalYesInitYes
         );
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin :

OnInit()'te başlatıldıklarında zaman çerçevesini değiştirirken değişkenlerin değerlerini kaybedebilirsiniz - bu nedenle programın mantığındaki olası sıkışmalar.

dikkate almazsanız:

İçinde

İstemci terminali programı (EA veya özel gösterge) yükledikten ve global değişken başlatma sürecini başlattıktan hemen sonra, varsa OnInit() işlevi tarafından işlenen Init olayı gönderilir. Bu olay ayrıca finansal enstrüman ve/veya grafik periyodu değiştirildikten sonra, programı MetaEditor'da yeniden derledikten sonra, Expert Advisor veya özel gösterge kurulum penceresinden giriş parametrelerini değiştirdikten sonra oluşturulur. EA, bir hesap değişikliğinden sonra da başlatılır . Komut dosyaları için Init olayı tetiklenmez.

o zaman her şeyi döndürebilirsin.

 
Vladimir Karputov :

dikkate almazsanız:

İçinde

İstemci terminali programı (EA veya özel gösterge) yükledikten ve global değişken başlatma sürecini başlattıktan hemen sonra, varsa OnInit() işlevi tarafından işlenen Init olayı gönderilir. Bu olay ayrıca finansal enstrüman ve/veya grafik periyodu değiştirildikten sonra, programı MetaEditor'da yeniden derledikten sonra, Expert Advisor veya özel gösterge kurulum penceresinden giriş parametrelerini değiştirdikten sonra oluşturulur. EA, bir hesap değişikliğinden sonra da başlatılır . Komut dosyaları için Init olayı tetiklenmez.

o zaman her şeyi döndürebilirsin.

Ben Foma'dan bahsediyorum, o Yeryoma'dan bahsediyor...

Peki böyle bir durumda nasıl iletişim kurarsınız?

OnInit'te () global değişkenleri dikkatsizce başlatmanın kötü alışkanlığından bahsediyorum, ama bana bildiğim yardımı veriyorsunuz.

Aynı zamanda, kesin bir biçimde, bağımlılığınızı tüm yeni başlayanlara empoze ediyorsunuz. USE neslini mi yetiştiriyorsunuz? Düşünmeyip duyularını körü körüne takip edenlerin klonları mı?