MT5 ve iş başında hız - sayfa 91

 
Anton :

Frenler ObjectGetInterger - norm mu?

 
fxsaber :

Frenler ObjectGetInterger - norm mu?

Get yöntemleri zaten eşzamanlıdır, bu yüzden beklerler. Nesnelerle çalışma, nesnelere doğrudan erişim yoluyla değil, özel bir komut kuyruğundan geçer.

Bilgi için: Set ve Get yöntemlerini karıştırmak kesinlikle önerilmez. Çok yazıp çok okumak daha iyidir. Ya da tam tersi.

 
Renat Fatkhullin :

Get yöntemleri zaten eşzamanlıdır, bu yüzden beklerler. Nesnelerle çalışma, nesnelere doğrudan erişim yoluyla değil, özel bir komut kuyruğundan geçer.

Bilgi için: Set ve Get yöntemlerini karıştırmak kesinlikle önerilmez. Çok yazmak ve sonra çok okumak daha iyidir. Ya da tam tersi.

Bu bir sorun maalesef. Yukarıdaki kod ile gösterilmiştir.

Açıklamalar için teşekkürler.

 
Bazı durumlarda çıktı.

gerçek bir hesapta çalıştırmanın sonucu.

 2021.03 . 29 17 : 18 : 55.280 TradesID_Example (EURUSD,M1)     HistoryDealsTotal () = 99663
2021.03 . 29 17 : 18 : 55.280 TradesID_Example (EURUSD,M1)     HistoryOrdersTotal () = 174307

2021.03 . 29 17 : 24 : 15.862 TradesID_Example (EURUSD,M1)    GetSumByPositionsID(PositionsID,GetSumByPositionID) = 29906412.60837016
2021.03 . 29 17 : 24 : 15.862 TradesID_Example (EURUSD,M1)     Alert : Bench_Stack = 0 , 1 <= Time[GetSumByPositionsID(PositionsID,GetSumByPositionID))] = 320581370 mcs.

2021.03 . 29 17 : 24 : 16.057 TradesID_Example (EURUSD,M1)    GetSumByPositionsID(PositionsID,GetSumByPositionID2) = 29906412.60837016
2021.03 . 29 17 : 24 : 16.057 TradesID_Example (EURUSD,M1)     Alert : Bench_Stack = 0 , 1 <= Time[GetSumByPositionsID(PositionsID,GetSumByPositionID2))] = 195526 mcs.
2021.03 . 29 17 : 24 : 16.170 TradesID_Example (EURUSD,M1)    GetSumByPositionsID(PositionsID,GetSumByPositionID2) = 29906412.60837016
2021.03 . 29 17 : 24 : 16.170 TradesID_Example (EURUSD,M1)     Alert : Bench_Stack = 0 , 1 <= Time[GetSumByPositionsID(PositionsID,GetSumByPositionID2))] = 112839 mcs.

Kütüphane, standart uygulamadan ~2500 kat daha hızlıdır. Sadece alternatif bir yaklaşım, bazı hesaplamaları kabul edilebilir bir sürede yapmanıza izin verir.

 

Terminali hafızadan vazgeçmeye zorlamak için aşağıdaki betiği çalıştırabilirsiniz.

 void OnStart ()
  {
   short arr[];
   ArrayResize (arr, INT_MAX );
   ArrayInitialize (arr, 0 );
   Print ( ArraySize (arr));
   Sleep ( 5000 );
  }

RAM boyutunuza göre dizinin boyutunu seçin

 
Rorschach :

Terminali hafızadan vazgeçmeye zorlamak için aşağıdaki betiği çalıştırabilirsiniz.

RAM boyutunuza göre dizinin boyutunu seçin

Fikir nedir?

 
fxsaber :

Fikir nedir?

Görünüşe göre, terminali hafıza eksikliği koşullarına sokmak Görüyorsunuz, serbest bırakılması için dahili mekanizmalar çalışacak.

 
traveller00 :

Görünüşe göre, terminali bellek eksikliği koşullarına sokmak Görüyorsunuz, serbest bırakılması için dahili mekanizmalar çalışacak.

Evet, terminalin yeterli belleği yok ve önbelleğe alınmış verileri temizlemeye başlıyor

 

Olağandışı bir durum ortaya çıktı. Gösterge sinyaline bağlı olarak EA ekran görüntüsü alır ve filtreler geçilirse pozisyonları aç/kapat komutu verir.
Ekran görüntüsü başlığında saati içerir: gün, saat ve saniye, örneğin, CHFJPY_d29_ h10_m24_s17 . Zaman, TimeCurrent() işlevinden alınır.

Terminalde 28 Expert Advisor örneği vardı. Bir noktada, 44 dakika boyunca terminal donmuş gibiydi ve 10:27'de normal çalışma yeniden başladı. İşte terminalin günlüğünün bir parçası:


Bağlantı kesilmeleri görünmüyor. EURUSD için 10:27'deki ilk giriş - işlemler tarihinde - 10:14'teki sl'deki kapanıştır.

Aşağıda danışmandan gelen günlüğün bir kısmı bulunmaktadır. Gördüğünüz gibi üst kırmızı çerçevelerde log kayıt süresi ile ekran görüntüsü başlığında yer alan TimeCurrent() süresi hemen hemen aynıdır.
Alt karelerde ise fark zaten yarım saat.


CHFJPY sembolünde, açılma sinyali olan bir ekran görüntüsü oluştu - 10:12'de, ikinci ekran görüntüsünün 10:24'te sinyalle oluşumu. Ama açılış/kapanış ve yeni açılış 10:27'de bir dakika içinde gerçekleşti.

Genel olarak, bu tür tuhaflıklar 9:43'ten 10:27'ye çıktı:
1) TimeCurrent() çalışır ve mevcut sunucu saatini alır, EA göstergeden doğru sinyalleri alır.
2) Günlük girişleri, yalnızca 10:27'de günlüğe girdi. Saat 10:27'de Dosyalar klasörüne sabit diske ekran görüntüleri yazıldı, 10:27'de (eski sinyallere göre) yeni siparişler açıldı.

Bu tür donmaların veya frenlemelerin sebebi ne olabilir birisi karşılaşabilir mi? İstemi, nedenini yakalamak için hangi işlevler? Bu, Nisan ayından bu yana birkaç kez oldu.

 
Vasiliy Pushkaryov :

İstemi, nedenini yakalamak için hangi işlevler?

TimeLocal ve TimeCurrent arasındaki farkı izleyin.