Hatalar, hatalar, sorular - sayfa 1851

 
kaus_bonus :

Cevap için teşekkürler.

Genel olarak, yazılarımda gösterdiğim gibi sonuçlar.

Ayrıca önümde küçük bir hile var - SSD. Aslında normal olarak test ettim.

Hile değil, bunlar her iki sistem için de aynı koşullar.


Ve yine de MT4 ve MT5 arasındaki sonuçlar neredeyse 200 kat farklılık gösteriyor ( sunucu verileri ?? ve ping? ile tam senkronizasyonun zorunlu kontrolü nedeniyle).

MT4'te yaklaşık 0,6 ms, çözeceğim. Orada, görünüşe göre, veriler önceden hazırlanmış ve bu nedenle bu rakam gerçek maliyetleri göstermiyor.

MT4'ün tamamen farklı bir ideolojisi vardır ve aslında arka planda terminal, MQL4 kodunun dışında sistem düzeyinde her komut dosyası/Uzman için çok büyük miktarda veri kopyalar. Bu nedenle, MQL4'ten yapılan ölçümler çoğu zaman veri elde etmek için kaynakların gerçek maliyetini göstermez. Tabii ki, masraflar var, ancak bunlar farklı bir seviyede - sistem onları kendi üzerine alıyor.

MT4 mekanizmasının (her robot için piyasa verilerinin kopyalarını oluşturmak için), göreviniz sınırsız veri akışına (derin geçmiş, on binlerce araç) ölçeklenebilir olduğunda kullanılamayacağı açıktır. Bu nedenle, doğrudan Açık/Yüksek/Düşük/Kapalı erişimlerden kurtulup CopyXXX işlevlerine geçerek MQL5'i kökten değiştirmek ve iyileştirmek zorunda kaldık. MT5 verilerinin hacmi göz önüne alındığında, 6 milyon bar için EURUSD M1'in bir kopyasını oluşturmak bir Uzman Danışman için çok pahalıdır.

MT5/MQL5, önceden yedekleme olmaksızın her yerde isteğe bağlı bir veri yükleme stratejisi kullanır; bu, MQL5 kodundan gerçek maliyetleri ölçmek için daha fazla yetenek anlamına gelir.

Veritabanını belleğe yükseltmek, senkronizasyonu kontrol etmek ve MT5'te karmaşık bir nesnenin önbelleklerini 113 milisaniyede hazırlamak kabul edilebilir.

 
kaus_bonus :

Örneğin, çünkü MT'de pazar eleme aracı yok, bu yüzden pazara genel bakışa semboller ekleyen küçük bir komut dosyası çıkardım, çünkü. aynı zamanda, fiyatlar yalnızca CopyClose aracılığıyla kullanılabilir, ne SymbolInfoDouble aracılığıyla ne de MqlTick aracılığıyla, sembol genel bakışa eklenene kadar kullanılamazlar, ardından terminali başlattıktan sonra benzer bir komut dosyası çalıştırarak, eğer "sonsuz" uzun çalışırsa çok büyük bir sayı üzerinde çalıştırın. Bu sadece bir örnek olarak.

Enstrümanların geçmişlerini almak için Piyasa İzleme'ye eklenmesi gerekmez. Sembol verilerine herhangi bir erişim, arka plan verilerinin senkronizasyonuna neden olur.

Şimdi, en son verileri talep etmemize rağmen, tüm grafik veritabanını tam derinliğe yükseltirken aşırı düzeyde önbellek kullanmamızla ilgili bir sorun var. Sonuç olarak, bu, yüzlerce grafiği kontrol eden tarayıcılar için büyük bir bellek yüküyle sonuçlanır.

Görev, bu stratejiyi değiştirmek ve talebin en uzak tarihinden itibaren 500 çubuktan daha derin olmayan verileri yükseltmek için zaten ayarlandı. Bu, acısız bir şekilde pazar taramaları yazmanıza izin verecektir.

 
fxsaber :

Nasıl doğru?


Kendine sordun, kendin cevapladın :) Evet, öyle.
 
Алексей Тарабанов :

Kendine sordun, kendin cevapladın :) Evet, öyle.
Şablon operatörünün kısaltılmış çağrısını görmedim.
 
fxsaber :
Şablon operatörünün kısaltılmış çağrısını görmedim.

Yüz yıldır yapılarla çalışmadım. Bir yapı dizisinin bir öğesini bir bütün olarak başlatmanız gerekiyorsa, bu bir dize işlemi olacaktır. Ve derleyici tarafından bildirildiği gibi, bu dönüştürülmüş dizenin tamsayı öğesini doğru şekilde başlattınız. Yapı dizilerini başlatmak, karşılaştırmak veya başka bir şekilde işlemek istiyorsanız, bunların MQL'de nasıl temsil edildikleri/depolandıklarıyla ilgilenin. Hiçbir şey karmaşık değildir ve işi büyük ölçüde hızlandırır.
 
Алексей Тарабанов :
Bunun için hangi sözdizimi gösteriminin kestirme olduğunu bilmem gerekiyor
Struct. operator []< int >( 0 );
 
fxsaber :
Bunun için hangi sözdizimi gösteriminin kestirme olduğunu bilmem gerekiyor
Yapı[0]
 
Комбинатор :
Yapı[0]

kime nasıl
 
Комбинатор :
Yapı[0]
Sayfalara tırmanmamak için kodu kopyalayacağım

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2017.04.12 14:27

 struct STRUCT
{
   template < typename T>
   void operator []( int ) {}
};

void OnStart ()
{
  STRUCT Struct;
  
  Struct. operator []< int >( 0 ); // Нормально
  Struct[ 0 ]< int >;             // Ошибка
}

Bu iki arama farklı

Struct. operator []< int >( 0 );
Struct. operator []< MqlTick >( 0 );

Her biri için karşılık gelen bir kısaltma olmalıdır. Hangi?

 
fxsaber :
Bunun için hangi sözdizimi gösteriminin kestirme olduğunu bilmem gerekiyor

Hiçbir kayıt istediğinizi sağlayamaz. Temelde. Anlamsal olarak.
Neden: