MT5 için dilekler - sayfa 23

 

Sınıfların programın sonunda değil, sadece başında anlatılması pek uygun değildir.

 

Editörde, Word'de olduğu gibi, düzenleme penceresini iki bağımsız pencereye bölen bir kaydırıcı yapmak güzel olurdu. Programın iki bölümünü aynı anda kopyalamak, yazmak ve izlemek uygun olacaktır.

 
MetaDriver :

Bu olur...

Tek istisna (ve mutlaka değil) hafta sonlarıdır. Bunları atlayabilirsiniz, ancak yine farklı enstrümanlar için eşzamanlı olarak GARANTİLİDİR.

Forex'in aslında hafta sonları çalıştığını biliyor muydunuz?

çoğu broker çalışmıyor

---

hatta bazıları hafta sonları teklif veriyor ve siparişlerle çalışmanıza izin veriyor

hangisi çok uygun

hafta sonları spread'i açabilirler - likidite yok

ama değiştirecek bir şeyi açık arkasına saklamak için bir fırsat var

 

Formun bir dizgisi ile çalışmak için standart kitaplıklara bir işlev eklemek güzel olurdu: Dizgiyi "başlangıç", "bitiş" ile sınırlı modüllere ayırın ve bunları bir dizi diziye yazın. Örneğin: int count=(string, array,"<h1>","</h1>",flag); .Dize gelen dize olduğunda, dizi giden dize dizisidir, "<h1>" dizedeki modülün başlangıcıdır, "</h1>" dizedeki modülün sonudur. flag - modül sınırlayıcılarının dizinin çıkış satırlarına dahil edilip edilmeyeceğini belirtir, count - bulunan modüllerin sayısı.

Bu durumda, int count=(string, array,"<h1>","</h1>",flag); - dizedeki tüm başlıkların yığınlarını yaratacaktır.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Bu, mevcut araçlar kullanılarak da uygulanabilir, MQL4 ile HTML Ayrıştırma makalesini okuyun
Разбор HTML средствами MQL4 - Статьи по MQL4
  • www.mql5.com
Разбор HTML средствами MQL4 - Статьи по MQL4: примеры использования экспертов, тестирования и оптимизации
 
Rosh :
Bu, mevcut araçlar kullanılarak da uygulanabilir, MQL4 ile HTML Ayrıştırma makalesini okuyun
Eh, mevcut araçlarla bunu adım adım yapmanın mümkün olduğu açıktır. Ancak her şeyi aynı anda yapan hazır bir işleve sahip olmak iki sayfa koddan daha iyidir....
 
Rinng :
Eh, mevcut araçlarla bunu adım adım yapmanın mümkün olduğu açıktır. Ancak her şeyi aynı anda yapan hazır bir işleve sahip olmak iki sayfa koddan daha iyidir....
Kütüphaneye veya mqh dosyasına ekleyin ve sorun değil ;))
 

Editörde, program kodunun bazı bloklarını gizleme/açma işlevine sahip olmak faydalı olacaktır. Örneğin, "işlevler", "tanımlar", "sınıflar"... bölümleri veya program kodunun iç içe bölümlerini gizleyebilir / açabilirsiniz, örneğin , if ...

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
Rosh писал(а) :
Veri erişiminin organizasyonu bölümünü okuyun, geçmişin nasıl doğru bir şekilde sorgulanacağını söylüyor

Bildiriyorum. Ve bir bölüm. Ve ustalaştı. Gerekirse sıralanabilir. Hâlâ MQL'de ustalaşmam gerekiyor, bu yüzden dille ilgili sorularımın neredeyse tamamı aptal olma riskini taşıyor.

Başka bir şeyi yanlış anladım, bu bir: ""Grafiklerdeki maksimum çubuklar" parametresi, grafikler, göstergeler ve mql5 programları için mevcut olan HC formatındaki çubukların sayısını sınırlar. Bu sınırlama, tüm zaman dilimlerinin verileri için geçerlidir ve öncelikle kaydetme amaçlıdır. kaynaklar.

Bu parametrenin büyük değerlerini ayarlarken, daha düşük zaman dilimleri için yeterince derin bir fiyat verisi geçmişi varsa, zaman serilerini ve gösterge arabelleklerini depolamak için bellek tüketiminin yüzlerce megabayta kadar çıkabileceği ve RAM sınırına ulaşabileceği unutulmamalıdır. istemci terminal programı (32-bit MS Windows uygulamaları için 2GB). )."

Bu bölümde, muhtemelen neler olduğunu gerçekten anlamadım, ancak aynı zamanda burada ve şimdi MQL programları hakkında soru sormayacağımı, ancak doğrudan manuel olarak çalışırken terminal tarafından otomatik geçmiş isteği ile ilgili soru sormayacağımı bir kez daha vurguluyorum. grafikle, kaynakları kurtarmak için yukarıdaki nedenler garip görünüyor. Kodunuz kapalı, bu yüzden orada her şeyin nasıl çalıştığını yargılayamam. Her bir şamdan, hastalıklı özellik ve nitelik kümelerine sahip hastalıklı bir nesne mi, yoksa piyasanın yapısal görüntüsünün basitleştirilmiş bir grafik çizimi/yeniden çizimi mi var bilmiyorum. Eksik tarihi dışarı pompalama konusunu atlarsak, kendimizi zaten elimizde olanla sınırlandırırsak, çizim yaklaşımının rasyonelliği ile ilgili soru ortaya çıkar. Ayarlarda çizelgede belirli ve çok sayıda bar ayarlasanız da, grafiğin barlarını iğneye sıkıştırsanız da monitörü çok yüksek bir çözünürlüğe ayarlasanız bile buna inanmıyorum. barların tarihsel DBMS'sinden ekrana doğru bir şekilde yüklenirse, görünen resmin tamamı RAM'i öldürür. LIFO ilkesini mi kullanıyorsunuz? Grafikteki maksimum çubuk sayısı sonsuz büyük olabilir, ancak ekranın arkasında ne var (sağda ne var, solda ne var) hiç bellekte olmamalı ve kaydırırken, sayfaya yüklenmelidir. Ekrandan ayrılan RAM'in boşaltılması anlık olmalıdır, çünkü burada Net ile çalışmıyoruz, sadece yerel olarak mevcut geçmişle çalışıyoruz. Ne tür korkunç 2 GB kısıtlamalarından bahsedebiliriz?

...muhtemelen konu dışıyım, bu yüzden köylüyü şimdiden bağışlayın.

 

Her fiyat çubuğu, 52 bayt boyutunda MqlRates yapısıyla (başka hiçbir özellik olmadan) tanımlanır:

 struct MqlRates
  {
   datetime time;         // время начала периода
   double    open;         // цена открытия
   double    high;         // наивысшая цена за период
   double    low;           // наименьшая цена за период
   double    close;         // цена закрытия
   long      tick_volume;   // тиковый объем
   int       spread;       // спред
   long      volume;       // объем
  };

Çalışan veritabanlarının hacmini tahmin etmek için /bases/servername/symbol/ dizinine bakmanız gerekir. Örneğin, EURUSD için aşağıdakileri görebilirsiniz:

Bu dizin, ticaret sunucusu tarafından verilen orijinal sıkıştırılmış dakika kaplarını içerir. Görüldüğü gibi 1 yıl için dakikalar ortalama 15 mb zaman almaktadır. Bu, trafiği en aza indirmek için çok özel bir sıkıştırma biçimidir.

Gerektiğinde oluşturulan sıkıştırılmış çalışma veritabanları önbellek dizinine yerleştirilir:


Burada 1993'ten bu yana dakikaların (aslında, dakikalar yerine 1999'a kadar günler vardır) sıkıştırılmış ve çalışmaya hazır bir biçimde 231 megabayt kapladığını görebilirsiniz. Aynı zamanda, yakındaki saatler sadece 4 mb kaplar.

52 baytı 4.400.000 çubukla çarparsanız, yaklaşık 230 MB'lık bir değer elde edersiniz. Böyle bir geçmişe bir çalışma arabelleği (çift) ile basit bir Hareketli Ortalama göstergesi uygulamak için 4.400.000 * 8 = 35 MB bellek gerekir.


Bir tüccar, terminal ayarlarında "Pencere başına maksimum çubuk" ayarladığında, açıkça "işlem için belleğe belirtilen sayıda çubuktan fazlasını yüklemeyin" der. Tüm dakika geçmişi yüklenirse (M1 grafiği üzerinde çalışma devam ediyor), birkaç ağır çoklu arabellek göstergesi üst üste bindirilir, uzmanlar kullanılır, o zaman bellek maliyetleri önemli olabilir. Ve "Bir pencereyle çalışıyorum, 500 çubuk görüyorum, gerisi boşaltılabilir" diye sayamazsınız. Kaldırmak imkansız - göstergeler, uzmanlar vb. Bu veriler üzerinde yaşıyor ve çalışıyor.

Verilerin ve göstergelerin her zaman tekil olarak depolandığı çok verimli bir önbelleğe alma modeli uyguladık. Yani, EURUSD:M1'de 5 pencere açmak, verilerle 5 arabellek oluşturulmasını gerektirmez ve parametrelerde kesinlikle aynı olan birkaç göstergenin yalnızca bir kopyası vardır. Göstergeler veya çizelgeler uzun süre kullanılmadığında, verileri otomatik olarak serbest bırakılır ve gerektiğinde geri alınır.

Ek olarak, büyük bir geçmişle kısıtlama olmaksızın çalışabilen istemci terminalinin 64 bit sürümüne sahibiz. 64-bit ortamında MQL5 testleri biter bitmez bu sürüm yayınlanacaktır.