zaskok3 : MQL4++'da giriş parametrelerini programlı olarak değiştirmem gerektiğinde extern olmadan yapamam. Örneğin, normal bir göstergeyi etkileşimli bir göstergeye dönüştürürken, girdiyi extern ile değiştirmeniz gerekir. Derleyici, girdi değişkenlerini const olarak ele alır ve onları değiştirmeye çalıştığınızda yemin eder. Extern ile böyle bir sorun yok.
Giriş parametrelerinin "çiftlerini" kullanın
İlk beş MQL5\Indicators\Examples\ADX.mq5 içinde bu konuyla ilgili bir örneğimiz var.
//--- input parametersinputint InpPeriodADX= 14 ; // Period//---- buffersdouble ExtADXBuffer[];
double ExtPDIBuffer[];
double ExtNDIBuffer[];
double ExtPDBuffer[];
double ExtNDBuffer[];
double ExtTmpBuffer[];
//--- global variablesint ExtADXPeriod;//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+voidOnInit ()
{
//--- check for input parametersif (InpPeriodADX>= 100 || InpPeriodADX<= 0 )
{
ExtADXPeriod= 14 ;printf ( "Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations." ,InpPeriodADX,ExtADXPeriod);
}
elseExtADXPeriod=InpPeriodADX;
Yoldaşlar, derleme yaparken düzenli olarak "Dahili derleyici hatası" alan var mı? Belirgin bir sebep olmaksızın, yeniden derleme durumunda - askıda kalın, editörün kapatılması durumunda, yeniden açma (aynı sekmelerle, aynı kodla) - derleme çoğu zaman normal şekilde ilerler. Bu durumda, kodda hiçbir şey değişmez! Ancak bazen bu hata arka arkaya birkaç kez meydana gelir ve editörün ilk yeniden yüklenmesi yardımcı olmaz. Şimdiye kadar, yeniden başlatmalar sonucunda her şey derlenebildi. Ama korkarım ki er ya da geç çalışmayı bırakacak. Hizmet masasına bunların oluşma koşullarına ilişkin verileri ortaklaşa sağlamak için benzer hatalarla karşılaşan başka birini bulmak istiyorum.
İlk beş MQL5\Indicators\Examples\ADX.mq5 içinde bu konuyla ilgili bir örneğimiz var.
Şimdi, göstergeyi etkileşimli bir sürüme dönüştürmek için kaynağa yalnızca bir satır eklemeniz gerekir. Yedekleme yaparsanız, ek olarak. yedek oluşturmak için satırlar, yine de metin boyunca bir değişiklik yapmanız gerekecektir. Neden bu hemoroid, sadece bir satırı değiştirebildiğiniz zaman.
Şimdi, göstergeyi etkileşimli bir sürüme dönüştürmek için kaynağa yalnızca bir satır eklemeniz gerekir. Yedekleme yaparsanız, ek olarak. yedek oluşturmak için satırlar, yine de metin boyunca bir değişiklik yapmanız gerekecektir. Neden bu hemoroid, sadece bir satırı değiştirebildiğiniz zaman.
Göstergelerin MT5 geçmiş veritabanında küresel olarak depolanması. Onlar için giriş parametreleri anahtardır. Giriş parametreleri değiştirildiğinde, eski parametrelere sahip gösterge yok edilir ve değiştirilen parametrelere sahip aynı gösterge yeniden oluşturulur.
Yani, sınırlama tamamen mimaridir.
Dördünde, girdilerdeki sabitliği kaldırabiliriz, ancak yeni MQL4 ve MQL5 arasında bir uyumsuzluk var. Bu nedenle, bunu yapmayacağız. Harici kullanmaya devam et
Ne yazık ki mimari o kadar kemikleşmiş ki basit esnekliğe bile yer yok. MQL5'teki etkileşimin bir koltuk değneği ile yapılması gerektiği ortaya çıktı. Soru şu ki, o zaman avantaj nerede, eğer dil olasılıkları kısıtlıyorsa ...
Ancak küresel (harici değil) yok ve bu iyi değil.
Neden iyi değil? Program yüklendiğinde global değişkenlerin bir kez başlatıldığı açıkça söylenir.
Farklı bir davranış istiyorsanız, OnInit'te istediğiniz gibi başlatın.
Bunu belgelere yansıtmak güzel olurdu.
MQL4++'da giriş parametrelerini programlı olarak değiştirmem gerektiğinde extern olmadan yapamam. Örneğin, normal bir göstergeyi etkileşimli bir göstergeye dönüştürürken, girdiyi extern ile değiştirmeniz gerekir. Derleyici, girdi değişkenlerini const olarak ele alır ve onları değiştirmeye çalıştığınızda yemin eder. Extern ile böyle bir sorun yok.
Giriş parametrelerinin "çiftlerini" kullanın
İlk beş MQL5\Indicators\Examples\ADX.mq5 içinde bu konuyla ilgili bir örneğimiz var.
Giriş parametrelerinin "çiftlerini" kullanın
İlk beş MQL5\Indicators\Examples\ADX.mq5 içinde bu konuyla ilgili bir örneğimiz var.
Şimdi, göstergeyi etkileşimli bir sürüme dönüştürmek için kaynağa yalnızca bir satır eklemeniz gerekir. Yedekleme yaparsanız, ek olarak. yedek oluşturmak için satırlar, yine de metin boyunca bir değişiklik yapmanız gerekecektir. Neden bu hemoroid, sadece bir satırı değiştirebildiğiniz zaman.
Derleme aşamasında girdi değişkenlerinin genel algısını kaldırmayı ne engeller?
Şimdi, göstergeyi etkileşimli bir sürüme dönüştürmek için kaynağa yalnızca bir satır eklemeniz gerekir. Yedekleme yaparsanız, ek olarak. yedek oluşturmak için satırlar, yine de metin boyunca bir değişiklik yapmanız gerekecektir. Neden bu hemoroid, sadece bir satırı değiştirebildiğiniz zaman.
Derleme aşamasında girdi değişkenlerinin genel algısını kaldırmayı ne engeller?
Derleme aşamasında girdi değişkenlerinin genel algısını kaldırmayı ne engeller?
Göstergelerin MT5 geçmiş veritabanında küresel olarak depolanması. Onlar için giriş parametreleri anahtardır. Giriş parametreleri değiştirildiğinde, eski parametrelere sahip gösterge yok edilir ve değiştirilen parametrelere sahip aynı gösterge yeniden oluşturulur.
Yani, sınırlama tamamen mimaridir.
Dördünde, girdilerdeki sabitliği kaldırabiliriz, ancak yeni MQL4 ve MQL5 arasında bir uyumsuzluk var. Bu nedenle, bunu yapmayacağız. Harici kullanmaya devam et
Slawa :
Yani, sınırlama tamamen mimaridir.
Pencereyi terminalden ayır
gibi?