MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1884
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
tartışmıyorum. Bu yazıdaki resimde "Griler" gösterilmektedir.
Kaynak olmadan bunlar
Eh, "bunlardan" bahsediyorum ve dedim. Bir taşma olduğunda ve göstergeler görüntülenmediğinde, bahsettiğiniz mesajda ekranda gösterilen menüde ne olduğuna bakmadım. Burada kesin bir şey söyleyemem.
Ancak, gezginde gösterge yoksa, ancak bunlar klasördeyse, bu, eskilerden bazıları klasörden kaldırılana kadar gezginde yenilerinin gösterilmeyeceği anlamına gelir.
Oldu, geçti. Yalnız değilim.
Dinamik bir diziyi yalnızca bir gösterge arabelleği olarak atayarak manuel olarak yeniden boyutlandırma ihtiyacından kaçınmak istedim. Ancak, boyutu sözde terminalin kendisi tarafından izlenmesi gereken ve sözde manuel olarak yeniden boyutlandırılması gerekmeyen gösterge arabelleğinin sözde dinamik dizisinin ArrayResize() işlevini reddetmek mümkün değildir:
https://www.mql5.com/ru/docs/series/bufferdirection :
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer() . Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize() , исполняющая система терминала сама позаботится об этом.
https://www.mql5.com/ru/docs/array/arrayisdynamic adresine gidiyoruz, kodu çalıştırıyoruz ve aniden şunu öğreniyoruz:
2022.01.24 21:25:27.543 t (NZDUSD,D1) 3. Gösterge tamponunun kontrol edilmesi:
2022.01.24 21:25:27.543 t (NZDUSD,D1) Boş bellekten önceki boyut = 7278
2022.01.24 21:25:27.543 t (NZDUSD,D1) Bu dinamik bir dizidir = Hayır
2022.01.24 21:25:27.543 t (NZDUSD,D1) Boş bellekten sonraki boyut = 0
o:
Kitaba bakıyorum - bir incir görüyorum. Yoksa bunca zaman aldatıldık mı?
Ya da belki bir zamanlar dinamik (ilk başlatmada) ve sonra her şey mi?
Boyutu sözde terminalin kendisi tarafından izlenmesi gereken ve sözde manuel olarak yeniden boyutlandırılması gerekmeyen gösterge arabelleğinin sözde dinamik dizisinin ArrayResize() işlevini reddetmek imkansızdır:
https://www.mql5.com/ru/docs/series/bufferdirection :
https://www.mql5.com/ru/docs/array/arrayisdynamic adresine gidiyoruz, kodu çalıştırıyoruz ve aniden şunu öğreniyoruz:
o:
Kitaba bakıyorum - bir incir görüyorum. Yoksa bunca zaman aldatıldık mı?
Ya da belki bir zamanlar dinamik (ilk başlatmada) ve sonra her şey mi?
22:23:17.002 Dinamik EURCAD,H1: +===========================+
0 22:23:17.002 Dinamik EURCAD,H1: 1. Dinamik diziyi kontrol etme:
0 22:23:17.002 Dinamik EURCAD,H1: Boş bellekten önceki boyut = 100
0 22:23:17.002 Dinamik EURCAD,H1: Bu dinamik bir dizidir = Evet
0 22:23:17.002 Dinamik EURCAD,H1: Boş hafızadan sonraki boyut = 0
0 22:23:17.002 Dinamik EURCAD,H1: 2. Statik dizi kontrolü:
0 22:23:17.002 Dinamik EURCAD,H1: Boş bellekten önceki boyut = 100
0 22:23:17.002 Dinamik EURCAD,H1: Bu dinamik bir dizidir = Hayır
0 22:23:17.002 Dinamik EURCAD,H1: Boş hafızadan sonraki boyut = 0
0 22:23:17.002 Dinamik EURCAD,H1: 3. Gösterge tamponunun kontrol edilmesi:
0 22:23:17.002 Dinamik EURCAD,H1: Boş bellekten önceki boyut = 2725
0 22:23:17.002 Dinamik EURCAD,H1: Bu dinamik bir dizidir = Evet
0 22:23:17.002 Dinamik EURCAD,H1: Boş hafızadan sonraki boyut = 0
0 22:23:24.754 Dinamik EURCAD,H1: uninit neden 1
0 22:23:24.758 Özel gösterge Dinamik EURCAD,H1: kaldırıldı
4'te.
Dinamik bir diziyi yalnızca bir gösterge arabelleği olarak atayarak manuel olarak yeniden boyutlandırma ihtiyacından kaçınmak istedim. Ancak, boyutu sözde terminalin kendisi tarafından izlenmesi gereken ve sözde manuel olarak yeniden boyutlandırılması gerekmeyen gösterge arabelleğinin sözde dinamik dizisinin ArrayResize() işlevini reddetmek mümkün değildir:
https://www.mql5.com/ru/docs/series/bufferdirection :
https://www.mql5.com/ru/docs/array/arrayisdynamic adresine gidiyoruz, kodu çalıştırıyoruz ve aniden şunu öğreniyoruz:
o:
Kitaba bakıyorum - bir incir görüyorum. Yoksa bunca zaman aldatıldık mı?
Ya da belki bir zamanlar dinamik (ilk başlatmada) ve sonra her şey mi?
Evet, bu o :-)
...SetIndexBuffer'dan sonra ArrayResize kullanmak artık mümkün değildir ve programın bakış açısından dizi, önceden belirlenmiş (dış kontrollü) bir boyuta sahip statiktir.
22:23:17.002 Dinamik EURCAD,H1: +===========================+
0 22:23:17.002 Dinamik EURCAD,H1: 1. Dinamik diziyi kontrol etme:
0 22:23:17.002 Dinamik EURCAD,H1: Boş bellekten önceki boyut = 100
0 22:23:17.002 Dinamik EURCAD,H1: Bu dinamik bir dizidir = Evet
0 22:23:17.002 Dinamik EURCAD,H1: Boş hafızadan sonraki boyut = 0
0 22:23:17.002 Dinamik EURCAD,H1: 2. Statik dizi kontrolü:
0 22:23:17.002 Dinamik EURCAD,H1: Boş bellekten önceki boyut = 100
0 22:23:17.002 Dinamik EURCAD,H1: Bu dinamik bir dizidir = Hayır
0 22:23:17.002 Dinamik EURCAD,H1: Boş hafızadan sonraki boyut = 0
0 22:23:17.002 Dinamik EURCAD,H1: 3. Gösterge tamponunun kontrol edilmesi:
0 22:23:17.002 Dinamik EURCAD,H1: Boş bellekten önceki boyut = 2725
0 22:23:17.002 Dinamik EURCAD,H1: Bu dinamik bir dizidir = Evet
0 22:23:17.002 Dinamik EURCAD,H1: Boş hafızadan sonraki boyut = 0
0 22:23:24.754 Dinamik EURCAD,H1: uninit neden 1
0 22:23:24.758 Özel gösterge Dinamik EURCAD,H1: kaldırıldı
4'te.
Fantezi! Sihir ne? EURCAD'de kontrol ettim, H1 - tekrar "Hayır".
Ve 4 nedir? Örnekte sadece üç nokta var.
Fantezi! Sihir ne? EURCAD'de kontrol ettim, H1 - tekrar "Hayır".
Ve 4 nedir? Örnekte sadece üç nokta var.
Terminal MT4
Fantezi! Sihir ne? EURCAD'de kontrol ettim, H1 - tekrar "Hayır".
Ve 4 nedir? Örnekte sadece üç nokta var.
0 23:33:06.088 testi (EURUSD,D1) +============================+
0 23:33:06.088 testi (EURUSD,D1) 1. Dinamik bir diziyi kontrol etme:
0 23:33:06.088 testi (EURUSD,D1) Belleği boşaltmadan önceki boyut = 100
0 23:33:06.088 testi (EURUSD,D1) Bu dinamik bir dizi = Evet
0 23:33:06.088 testi (EURUSD,D1) Boş hafızadan sonraki boyut = 0
0 23:33:06.088 testi (EURUSD,D1) 2. Statik dizi kontrolü:
0 23:33:06.088 testi (EURUSD,D1) Belleği boşaltmadan önceki boyut = 100
0 23:33:06.088 testi (EURUSD,D1) Bu dinamik bir dizi = Hayır
0 23:33:06.088 testi (EURUSD,D1) Belleği boşalttıktan sonraki boyut = 100
0 23:33:06.088 testi (EURUSD,D1) 3. Gösterge arabelleğinin kontrol edilmesi:
0 23:33:06.088 testi (EURUSD,D1) Belleği boşaltmadan önceki boyut = 1054
0 23:33:06.088 testi (EURUSD,D1) Bu dinamik bir dizi = Hayır
0 23:33:06.088 testi (EURUSD,D1) Boş hafızadan sonraki boyut = 0
MT5 terminali, düşünce yok.
Dinamik bir diziyi yalnızca bir gösterge arabelleği olarak atayarak manuel olarak yeniden boyutlandırma ihtiyacından kaçınmak istedim. Ancak, boyutu sözde terminalin kendisi tarafından izlenmesi gereken ve sözde manuel olarak yeniden boyutlandırılması gerekmeyen gösterge arabelleğinin sözde dinamik dizisinin ArrayResize() işlevini reddetmek mümkün değildir:
https://www.mql5.com/ru/docs/series/bufferdirection :
https://www.mql5.com/ru/docs/array/arrayisdynamic adresine gidiyoruz, kodu çalıştırıyoruz ve aniden şunu öğreniyoruz:
o:
Kitaba bakıyorum - bir incir görüyorum. Yoksa bunca zaman aldatıldık mı?
Ya da belki bir zamanlar dinamik (ilk başlatmada) ve sonra her şey mi?
Tampon dizisi dinamiktir. MQL'de, dinamik diziler, onlarla çalışırken anladığım kadarıyla (süper yüksek seviyeli dillerde olduğu gibi) nesnelerin belirtilerine sahiptir. Ancak, dinamik bir dizi bildirdikten sonra onu bir arabellek olarak ilan ederseniz (SetIndexBuffer kullanarak), bu bellek alanı ayrılmış olacaktır. Bu nedenle, çoğu standart işlev boyutunu değiştiremez. Bazen nesne dizilerini gösterge arabellekleri olarak kullanırım. Ve bunu yaparsanız, bu tür dizilerin belleği nesnenin yıkıcısında serbest bırakılır. Böylece, uygulamanın (veya nesnenin) kendisi tarafından gösterge ara belleğinin serbest bırakılmasına izin verilir. Ancak bu, gösterge işlemi sırasında dizinin serbest bırakılabileceği anlamına gelmez. Her şey akılla yapılmalıdır.
Tünaydın
Söyle bana, bir danışman yazmaya çalışıyorum ve test sırasında bana anlaşılmaz bir şey oluyor ...
bir fonksiyon var
durum aşağıdaki gibidir, danışmanın bir örneği grafikte başlatılır, ikinci örnek benzer bir grafikte MT4 hata ayıklama modunda başlatılır
Fonksiyonun girdi verileri aynı, ancak çıktı farklı!!!? Sadece bir şey anlamıyorum...
hangi yönde bilgi kazacağımı söyle?!
Not: çıktı arasındaki farkı tam olarak 2,5 kez hesapladıbir fonksiyon var
durum aşağıdaki gibidir, danışmanın bir örneği grafikte başlatılır, ikinci örnek benzer bir grafikte MT4 hata ayıklama modunda başlatılır
Fonksiyonun girdi verileri aynı, ancak çıktı farklı!!!? Sadece bir şey anlamıyorum...
bilgi kazmak için hangi yönde söyle bana?!
Not: çıktı arasındaki farkı tam olarak 2,5 kez hesapladıHer şey açıyı hesaplama formülüyle ilgili. Kod, amacı net olmayan, onu hesaplamak için yalnızca bir koordinat ve bir tür katsayı kullanıldığını gösterir. Neye benziyor? Açıyı hesaplamak için hangi verileri kullandığınızı bize daha ayrıntılı olarak bildirin.