![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
Hayır, bu sadece bir 32bit terminal sorunu değil. Ancak bugün 32bit için çözüm hazır, 64bit'te hala 256Kb yığın sınırı var.
Ancak programcının kendisi özellik aracılığıyla gerekli yığın boyutunu belirtmezse, terminaldeki EX5 varsayılan yığın boyutuyla (256Kb) çalışacaktır.
Büyük boy hakkında.
Bir işlev içindeki bir değişkenin her bildirimi (statik değişkenler hariç) yığında alan tahsis edilirken, yığında yerel değişkenler için alan tahsisi her çağrıda gerçekleşir.
Bu nedenle, işlevin boyutu 64Kb'lik yerel değişkenlere sahipse, yığın 3 iç içe çağrı için yeterli olacaktır, 4. çağrı ile yığın taşacaktır (çünkü yığının bir kısmı terminalin iç ihtiyaçlarına gider). Bu nedenle, büyük yerel verilere ihtiyaç varsa, dinamik bellek kullanmak daha iyidir - işleve girerken, sistemde yerel ihtiyaçlar için bellek ayrılır (yeni, ArrayResize) ve işlev çıktığında bellek silinir ( sil, ArrayFree).
Detaylı açıklama için teşekkürler. Ama bu kesinlikle benim sorunum değil. Bacakların büyüdüğü fonksiyon zaten bulunduğundan ve böyle bir hacim olmadığından (64Kb - 256Kb) bu hatayı tespit etmek için bir test EA yazmaya çalışacağım. Geceleri, servis masasına sorunlu bir işleve sahip bir uzman göndereceğim.
Aynı işlevin ( CLBufferWrite ( ) ) çalışmasıyla ilgili başka bir takip sorusu (ve lütfen bunu yardımda açıklayın ).
Bilgi, ArrayIsSeries bayrak seti (==true) ile gösterge arabelleğinden doğrudan ara belleğe yazılırsa, giriş dizisi hangi yönde okunacaktır?
Bayrağın görmezden gelineceğinden şüpheleniyorum ve ayrıca hangi yerden okuyacağı belli değil? Belirtilen ofset dizinin fiziksel sonundan mı yoksa baştan mı sayılacak?
Tabii şimdilik şimdilik , her ihtimale karşı suya üfleyeceğim (ArrayIsSeries == false ile çalışacağım), ama yine de?
offset - bu işlevlerde, aslında, OpenCL arabelleğinin başlangıcından itibaren bayt cinsinden ofset ve işleve geçirilen dizi, ArrayIsSeries bayrağı dikkate alınmadan sıfır öğesinden kopyalanacaktır.
1. Şu anda, OpenCL arabelleği ile çalışma işlevselliği tamamlanmamıştır ve tamamlanacak/eklenecektir.
2. offset - bu işlevlerde, aslında, OpenCL arabelleğinin başlangıcından itibaren bayt cinsinden ofset ve işleve geçirilen dizi, ArrayIsSeries bayrağı dikkate alınmadan sıfır öğesinden kopyalanacaktır.
1. Kagbe'den şüphelendim... :)
2. Evet. Yelken. Bu, doğrudan gösterge arabelleğinden parçalar halinde yazmanın (henüz) işe yaramayacağı anlamına gelir.
Elbette, başlangıç pozisyonlarını hem kaynakta hem de alıcıda hareketli hale getirmeniz gerekir. Burası gibi:
int ArrayCopy (
void dst_array[] , // куда копируем
void src_array[] , // откуда копируем
int dst_start=0 , // с какого индекса пишем в приемник
int src_start=0 , // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
İndeksleme ile (yön ve ölçü birimleri (bayt / eleman)) lütfen yardımda daha dikkatli olun. Ve sonra bu .. zaman çok üzgünüm .. :)))
--
Cevap için teşekkürler. İşlevselliği iyileştirme çabalarınızı gerçekten takdir ediyorum.
Ziyafetin devamını sabırla bekleyeceğim. Bu arada, bir hançerin ucunda dans etmek zorundasın. :)
597 x64 oluşturun, yeni yüklendi.
2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) 'Mandelbrot.bmp' açılırken SaveBitmapToFile hatası
2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
Daha önce durum böyle değildi.
// Win7x64
597 x64 oluşturun, yeni yüklendi.
Daha önce durum böyle değildi.// Win7x64
Örneği yeniden derlemeyi deneyin. Kontrol ettim - her şey benim için çalışıyor.
Zaten yüzlerce kez yeniden derlendi. Tekrar yeniden başlatacağım.
... Şimdi yeniden başlatacağım.
Hayır, yardımcı olmadı.
Renat :
...... Kontrol ettim - her şey benim için çalışıyor.
Bu yüzden benim için de işe yarıyor. Ancak her on ila kırk döngüde bir böyle bir kaka uçar:
2012.02.23 23:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
2012.02.23 23:16:42 OpenCLTest (EURUSD,M30) 'Mandelbrot.bmp' açılırken SaveBitmapToFile hatası
2012.02.23 23:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' açılırken hata oluştu
Hayır, yardımcı olmadı.
Bu yüzden benim için de işe yarıyor. Ancak her on ila kırk döngüde bir böyle bir kaka uçar:
Ayrıca keşfedildi.
Bunun nedeni, belirtilen dosya üzerinde senkronizasyon olmadan iki farklı iş parçacığında çalışılıyor olması ve dosyanın periyodik olarak kilitlenmesidir:
Resimli örnek sadece OpenCL ile çalışma prensibini göstermek için yapıldığı için bu bir sorun teşkil etmemektedir.
Resimli örnek sadece OpenCL ile çalışma prensibini göstermek için yapıldığı için bu bir sorun teşkil etmemektedir.