MetaTrader 5 Python Kullanıcı Grubu - Metatrader'da Python nasıl kullanılır - sayfa 64

 
ckeiderling :

Herkese selam,


Umarım burada bir İngiliz'e aldırmazsın. Web'de başarılı bir şekilde arama yapmak için çok zaman harcadıktan sonra bazı rehberlik arıyorsunuz.

Maxiums makalelerinden biraz ilham aldıktan sonra MetaTrader5 Python kitaplığını kullanıyorum. Bellek işlemeyle ilgili bir sorun fark ettim.

Mt5 lib kullanarak bir Veri Çerçevesi yaptığımda, ortaya çıkan veri çerçevesi beklendiği gibi çalışıyor. Bunu, keneleri toplayan ve ardından manipüle edilmiş df'nin çıktısını almadan önce çeşitli analizler yapan bir fonksiyon içinde yaptım.

Ancak, DataFrame'i oluşturan işlevi yeniden çalıştırırsam, belleğin yalnızca önceki örnekten birikmeye devam ettiğini fark ettim.

Aynı sorunu mt5.copy_ticks_range() ve mt5.copy_rates_range() kullanarak da alıyorum. Belleği temizlemek için çekirdeği sıfırlamam gerekiyor.

Veri çerçevesini oluşturan satır dışındaki tüm kodu kaldırdıktan sonra bile aynı sorunu yaşıyorum. Örneğin:

def vel (sembol, yeniden inceleme, ileriye dönük, başlangıç_tarihi, bitiş_tarihi, nicelik_boyutu):

ticks = pd.DataFrame(mt5.copy_ticks_range(symbol, datetime(start_date.year, start_date.month, start_date.day), datetime(end_date.year, end_date.month, end_date.day), mt5.COPY_TICKS_ALL), sütunlar = [ 'zaman', 'teklif', 'sor', 'son', 'hacim', 'time_msc', 'bayraklar', 'volume_real'])

Bunu birkaç kez çalıştırırsam, bellek kullanımı her seferinde 27MiB artar:

Satır # Mem kullanımı Artış Satır İçeriği =========================================== ===== 126,3 MiB 126,3 MiB varsayılan (sembol, yeniden inceleme, ileriye dönük, başlangıç_tarihi, bitiş_tarihi, nicelik_boyutu): 153.3 MiB 26,9 MiB keneler = pd.DataFrame(mt5.copy_ticks_range(symbol, datetime(start_date.year, start_date .month) , başlangıç_tarihi.gün), ...


Satır # Mem kullanımı Artış Satır İçeriği

Hata ayıklama konusunda yardım istiyorsanız, tam bir MVCE vermeniz gerekir. Bu fragman yeterli değil.

 
ckeiderling :

Herkese selam,


Umarım burada bir İngiliz'e aldırmazsın. Web'de başarılı bir şekilde arama yapmak için çok zaman harcadıktan sonra bazı rehberlik arıyorsunuz.

Maxiums makalelerinden biraz ilham aldıktan sonra MetaTrader5 Python kitaplığını kullanıyorum. Bellek işlemeyle ilgili bir sorun fark ettim.

Mt5 lib kullanarak bir Veri Çerçevesi yaptığımda, ortaya çıkan veri çerçevesi beklendiği gibi çalışıyor. Bunu, keneleri toplayan ve ardından manipüle edilmiş df'nin çıktısını almadan önce çeşitli analizler yapan bir fonksiyon içinde yaptım.

Ancak, DataFrame'i oluşturan işlevi yeniden çalıştırırsam, belleğin önceki örnekten birikmeye devam ettiğini fark ettim.

Aynı sorunu mt5.copy_ticks_range() ve mt5.copy_rates_range() kullanarak da alıyorum. Belleği temizlemek için çekirdeği sıfırlamam gerekiyor.

Veri çerçevesini oluşturan satır dışındaki tüm kodu kaldırdıktan sonra bile aynı sorunu yaşıyorum. Örneğin:

def vel (sembol, yeniden inceleme, ileriye dönük, başlangıç_tarihi, bitiş_tarihi, nicelik_boyutu):

ticks = pd.DataFrame(mt5.copy_ticks_range(symbol, datetime(start_date.year, start_date.month, start_date.day), datetime(end_date.year, end_date.month, end_date.day), mt5.COPY_TICKS_ALL), sütunlar = [ 'zaman', 'teklif', 'sor', 'son', 'hacim', 'time_msc', 'bayraklar', 'volume_real'])

Bunu birkaç kez çalıştırırsam, bellek kullanımı her seferinde 27MiB artar:

Satır # Mem kullanımı Artış Satır İçeriği =========================================== ===== 126,3 MiB 126,3 MiB varsayılan (sembol, yeniden inceleme, ileriye dönük, başlangıç_tarihi, bitiş_tarihi, nicelik_boyutu): 153.3 MiB 26,9 MiB keneler = pd.DataFrame(mt5.copy_ticks_range(symbol, datetime(start_date.year, start_date .month) , başlangıç_tarihi.gün), ...


Satır # Mem kullanımı Artış Satır İçeriği

belki https://docs.python.org/3/library/gc.html kullanmayı denersiniz

https://stackkabuse.com/basics-of-memory-management-in-python/

 

Merhaba.
MetaTrader5.Buy() / Sell() yoluyla sipariş vermeye çalışırken bu hata görünmeye başladı:

order_open = mt5.Buy(sembol, hacim)

"C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py" dosyası, satır 313, Satın Alma'da

r.retcode != TRADE_RETCODE_REQUOTE ve r.retcode != TRADE_RETCODE_PRICE_OFF ise:

AttributeError: 'NoneType' nesnesinin 'retcode' özniteliği yok


Nasıl düzeltileceğini önerebilir misiniz?

Dosyalar:
 
AxxelTrader :

Herkese merhaba.
MetaTrader5.Buy() / Sell() üzerinden sipariş vermeye çalışırken böyle bir hata görünmeye başladı:

order_open = mt5.Buy(sembol, hacim)

"C:\Python3.7.4\lib\site-packages\MetaTrader5\__init__.py" dosyası, satır 313, Satın Alma'da

r.retcode != TRADE_RETCODE_REQUOTE ve r.retcode != TRADE_RETCODE_PRICE_OFF ise:

AttributeError: 'NoneType' nesnesinin 'retcode' özniteliği yok


Nasıl düzelteceğimi söyler misin?

r = mt5.Buy(...)
if r is None:
    print(mt5.last_error())
else :
     if r.retcode ...
 

Hangi terminal yapısını kullanıyorsunuz?

Beta sürümüne güncellendi mi?

 
MetaQuotes :

Hangi terminal yapısını kullanıyorsunuz?

Beta sürümüne güncellendi mi?

En son sürüme güncellendi - MetaTrader5 paket sürümü: 5.0.31

Böyle bir hata hem mt5.Buy(), mt5.Sell() işlevlerini kullanırken hem de mt5 kullanırken oluşur. order_send (istekler) .

Ayrıca "retcode" özniteliği olmadığını da yazar.

 
AxxelTrader :

En son sürüme güncellendi - MetaTrader5 paket sürümü: 5.0.31

Bu hata hem mt5.Buy(), mt5.Sell() işlevleri kullanılırken hem de mt5.order_send(requests) kullanılırken oluşur.

Ayrıca "retcode" özniteliği olmadığını da yazar.

Soru, terminalin versiyonuyla ilgiliydi.

 
Renat Fatkhullin :

Soru, terminalin versiyonuyla ilgiliydi.

MT5 sürümü: 5.00 yapı 2361 08 Mart 2020

 
AxxelTrader :

MT5 sürümü: 5.00 yapı 2361 08 Mart 2020

Beta sürümüne yükseltin lütfen.

Yeni işlevler yalnızca beta sürümlerinde mevcuttur.

 
Renat Fatkhullin :

Beta sürümüne yükseltin lütfen.

Yeni işlevler yalnızca beta sürümlerinde mevcuttur.

2432 sürümüne güncellendi.
Ama hata hala devam ediyor..
Hatta farklı brokerlerde denendi bile..

Dosyalar:
Neden: