Özel bir gösterge kullanırken Uzman Danışmanı hızlandırma teorisi (işlev - iCustom) - sayfa 6

 

Alexander Laur, yani komut dosyası/EA çalışırken, bellek ayrılmıştır ve silinemez - üzücü bir sonuç.
Bir komut dosyasının başka bir komut dosyasını çalıştırması mümkün mü, ardından komut dosyası tarafından başlatılan komut dosyasının kapatılması belleğin temizlenmesine yol açmalı mı, yoksa karmaşık bir veri işleme ortamı olarak mı kabul edilecek?

 
-Aleks- :

Alexander Laur, yani komut dosyası/EA çalışırken, bellek ayrılmıştır ve silinemez - üzücü bir sonuç.
Bir komut dosyasının başka bir komut dosyasını çalıştırması mümkün mü, ardından komut dosyası tarafından başlatılan komut dosyasının kapatılması belleğin temizlenmesine yol açmalı mı, yoksa karmaşık bir veri işleme ortamı olarak mı kabul edilecek?

Hemen "çalışan bir uzmanla bir grafik açmayı " önerdim, bu yapılabilir - ChartOpen + ChartApplyTemplate

Tek soru, kapatıldığında (Uzman Danışmanı silerek) hafızanın serbest kalıp kalmayacağıdır.

Kontrol etmek.

 
Andrey Khatimlianskii :

Hemen "çalışan bir uzmanla bir grafik açmayı " önerdim, bu yapılabilir - ChartOpen + ChartApplyTemplate

Tek soru, kapatıldığında (Uzman Danışmanı silerek) hafızanın serbest kalıp kalmayacağıdır.

Kontrol etmek.

Ellerimle denedim, bir sürü gösterge içeren şablonu neredeyse boş olana değiştirdim - bir etkisi var (ancak önbellek kalıyor - bence bu kritik değil). Ancak şablon komut dosyası aracılığıyla nasıl açılıp kapatılır - nasıl yapılacağını bilmiyorum. Anladığım kadarıyla, senaryo çalışırken hafızanın silinmeyeceğinden şüphe var ... Andrey, lütfen bir deney yapmaya yardım et.
 

Ek bir soru, gösterge içinde hesaplama için gerçek bir arabellek türü seçimi, grafik arabelleğinin boyutunu etkiler mi?

Tip

Bayt cinsinden boyut

Minimum pozitif değer

Maksimum değer

Temsil Doğruluğu

C++'da analog

batmadan yüzmek

4

1.175494351e-38

3.402823466e+38

7 önemli rakam

batmadan yüzmek

çift

sekiz

2.2250738585072014e-308

1.7976931348623158e+308

15 önemli rakam

çift


Ve çılgın bir fikir, ama ya grafik arabelleği yerine TextOut kullanırsak - oradan verileri nasıl okuyacağımı bilmiyorum ...

 
-Aleks- :

Ek bir soru, gösterge içinde hesaplama için gerçek bir arabellek türü seçimi, grafik arabelleğinin boyutunu etkiler mi?

"Grafik arabelleği" terimiyle, geleneksel bir göstergenin grafiksel gösterimini mi kastediyorsunuz?
 
Dennis Kirichenko :
"Grafik arabelleği" terimiyle, geleneksel bir göstergenin grafiksel gösterimini mi kastediyorsunuz?

Soru, hesaplamalar için gösterge kodunda double yerine float kullanırsanız, grafik arabelleği için ayrılan belleğin boyutunu bir çubukla etkilemenin mümkün olup olmadığıdır.

//---- buffers

double Vy[];
double bufDirSoft[];

extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;

 
Ve yine de, hafızanın bittiği nasıl belirlenir, herhangi bir fonksiyon var mı?
 
-Aleks- :

Soru, hesaplamalar için gösterge kodunda double yerine float kullanırsanız, grafik arabelleği için ayrılan belleğin boyutunu bir çubukla etkilemenin mümkün olup olmadığıdır...

Numara. Tüm girişimleri ezecek sihirli bir işlev var:

 bool    SetIndexBuffer (
   int                     index,         // индекс буфера
   double                  buffer[],       // массив
   ENUM_INDEXBUFFER_TYPE   data_type       // что будем хранить
   );

Bu mekanizma, dilin/terminalin kendisinde yerleşiktir. Fikir ilginç olsa da...

 
-Aleks- :
Ve yine de, hafızanın bittiği nasıl belirlenir, herhangi bir fonksiyon var mı?

bitti ne demek? :-)

Burada bir şey var:

https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer

IMHO, gösterge kaynakları için belleği yönetmenin en etkili yolu "Geçmişteki maksimum çubuklar" parametresini en aza indirmektir (Ayarlar --> Grafikler). Hatırladığım kadarıyla parametre için minimum 5 bin.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
-Aleks- :
Ve yine de, hafızanın bittiği nasıl belirlenir, herhangi bir fonksiyon var mı?

Terminal hakkında bilgi alabilirsiniz.

TERMINAL_MEMORY_TOTAL

Terminal (aracı) işlemi için kullanılabilir bellek boyutu, MB cinsinden

int

TERMINAL_MEMORY_AVAILABLE

MB cinsinden terminal (aracı) işleminin boş belleğinin boyutu

int

TERMINAL_MEMORY_USED

Terminal (aracı) tarafından kullanılan bellek boyutu, MB cinsinden

int

Neden: