Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 681
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Peki, Otkritie'de MT5 hisselerinin ticaretini yapmak mümkün mü değil mi?
Vladimir, kişinin kafasını karıştırma!
Belgelerden:
https://www.mql5.com/ru/docs/basis/variables/globalDeğ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!
Değişkenleri başlatamazsınız - paranız.
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:
{
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.
Vladimir kısmen haklı.
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
);
}
//+------------------------------------------------------------------+
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.
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ı?