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

 
MrBrooklin :

Teşekkürler Maksim!

Ben zaten deniyorum. Döngü başladı, ancak dosya henüz açılmıyor. Döngüyü çalışır durumda bırakıp bekleyeceğim.

Saygılarımla, Vladimir.


PS Üzgünüm! Hemen saate mal olduğu gerçeğine dikkat etmedi. EUR_USD_QUOTE.csv dosyasını dakika olarak değiştirdim, ancak Pycharm geliştirme ortamında Çalıştır sekmesinde aşağıdaki mesaj belirdi:

�訡��: �� 㤠���� ���� ������ "excel.exe".

Ardından, yaklaşık bir dakika sonra dosya kapandı ve yeniden açıldı, ancak zaten Exsel'de, tablonun sol tarafında önceden açılmış metnin kaydedilmesinin önerildiği bir sekme belirdi. Sonra ne olacağını görmek için biraz daha bekledim ve sonra döngü durdu ve şu mesaj çıktı:

�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 4208, �� �����襭.
�ᯥ譮: ����� "EXCEL.EXE", � �����䨪��஬ 3168, �� �����襭.
Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", satır 37, <module>
get_data(save_file='EUR_USD_QUOTE.csv')
"C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py" dosyası, 23. satır, get_data'da
open(save_file, 'w') ile save olarak:
PermissionError: [Errno 13] İzin reddedildi: 'EUR_USD_QUOTE.csv'

Şimdiye kadar böyle bir sonuç, ama zaten ilerleme var!

Saygılarımla, Vladimir.

Burada Excel'i kapatmak için hala zamanı olmayabilir ve zaten dosyaya erişmeye çalışıyor olabilir, o zaman

 while True:
    t = datetime .now().hour
     if (t2 != t):
        os.system("TASKKILL /F /IM excel.exe") 
	time.sleep( 10 )
        get_data(save_file='EUR_USD_QUOTE.csv')
        t2 = t
    time.sleep( 10 )

burada ayrıca 5-10 saniyelik bir gecikme ekleyin, program excel kapanana kadar bekleyecek

soldaki pencereyle ne yapılacağı henüz çözülmedi)

 
MrBrooklin :

Onları terminalde değil, bazı dosyalarda, örneğin csv'de izlemek için Python dilini kullanarak İnternette alıntı yapmayı öğrenmek istiyorum. Bunun en temel görev olduğunu düşündüm ama öyle olmadığı ortaya çıktı. Belki yanlış yoldayım ama hiçbir şey aramayan hiçbir şey bulamıyor.

Şimdi önerdiğiniz koda geçeceğim. Kod başlatıldıktan sonra Pycharm geliştirme ortamında bir mesaj belirdi:

Geri izleme (en son arama son):
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py", satır 25, <module> içinde
ana()
Dosya "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py", satır 13, ana
eurusd_bid = çorba.find('td', 'pid-1-bid').text.replace(',', '.')
AttributeError: 'NoneType' nesnesinin 'metin' özelliği yok

Çıkış kodu 1 ile işlem tamamlandı

Kodun nasıl çalıştığını görmek için neyi değiştirmem gerekiyor?

Saygılarımla, Vladimir.

Çalışmamasının nedeni, bu sitenin istek göndermenizi engellemesidir. Bir kullanıcı aracısını taklit etmek zorunda olmanız, onların yapmanızı istemedikleri bir şeyi yaptığınıza dair bir ipucu olmalıydı. Web taraması bu konunun kapsamının çok ötesindedir, bu yüzden bunun hakkında konuşmayı bırakıp konuya geri dönmeliyiz. MetaTrader5 paketini kullanma hakkında sorularınız mı var?

 
Maxim Dmitrievsky :

Burada Excel'i kapatmak için hala zamanı olmayabilir ve zaten dosyaya erişmeye çalışıyor olabilir, o zaman

burada ayrıca 5-10 saniyelik bir gecikme ekleyin, program excel kapanana kadar bekleyecek

soldaki pencereyle ne yapılacağı henüz çözülmedi)

Maxim, sonuçlandırmaya yardım ettiğin kod için çok teşekkür ederim. Sol panel şu ana kadar çok az endişe verici. Yeni kodunuzu daha sonra, büyük olasılıkla hafta sonu ekleyeceğim, çünkü Bugün işte tam bir tıkanıklık oldu, rahatlamanız gerekiyor. Yeni bir sonuç çıkar çıkmaz mutlaka size haber vereceğim.

Saygılarımla, Vladimir.

 

MT5 kitaplığı açık siparişlerin zamanını hangi dengeyle döndürür?

def checkPositions(self):
         return mt5.positions_get(symbol=self.symbol)

pos = trade.checkPositions()
pos[ 0 ].time

>>> pos[ 0 ].time
1598035196

datetime . datetime .fromtimestamp(pos[ 0 ].time).strftime("%A, %B %d, %Y %I:%M:%S")

>>> datetime . datetime .fromtimestamp(pos[ 0 ].time).strftime("%A, %B %d, %Y %I:%M:%S")
' Saturday, August 22 , 2020 01 : 39 : 56 '

ama terminalde farklı bir zaman

Bir python programında zaman, siparişlerin (pozisyonların) zamanı ile nasıl doğru bir şekilde senkronize edilir?

 
Maxim Dmitrievsky :

MT5 kitaplığı açık siparişlerin zamanını hangi dengeyle döndürür?

ama terminalde farklı bir zaman

Bir python programında zaman, siparişlerin (pozisyonların) zamanı ile nasıl doğru bir şekilde senkronize edilir?

Öncelikle ticaret sunucusunun tam saat dilimini bilmelisiniz. Ardından pytz ile bir saat dilimi nesnesi oluşturun. Son olarak, timezone nesnesini metoda iletin.

import datetime as dt

import pytz
import pymt5adapter as mta


def main():
    broker_timezone = pytz.timezone('Etc/UTC')
     for position in mta.positions_get():
        time = dt. datetime .fromtimestamp(position.time, tz=broker_timezone)
        print(time)


if __name__ == '__main__':
    with mta.connected():
        main()
https://stackoverflow.com/questions/13866926/is-there-a-list-of-pytz-timezones
Is there a list of Pytz Timezones?
Is there a list of Pytz Timezones?
  • 2012.12.13
  • ipegasus
  • stackoverflow.com
I would like to know what are all the possible values for the timezone argument in the Python library pytz. How to do it?
 
nicholish en :

Öncelikle ticaret sunucusunun tam saat dilimini bilmeniz gerekir. Ardından pytz ile bir saat dilimi nesnesi oluşturun. Son olarak, timezone nesnesini metoda iletin.

https://stackoverflow.com/questions/13866926/is-there-a-list-of-pytz-timezones

teşekkürler, bunu deneyeceğim

Saati otomatik olarak senkronize etmek istiyorum, tk. ticaret sunucusu değişebilir
 
Maxim Dmitrievsky :

teşekkürler, bunu deneyeceğim

Ticaret sunucusu değişebileceği için saati otomatik olarak senkronize etmek istiyorum

UNIX zaman damgaları zaman diliminden bağımsızdır, bu nedenle zaman damgasına zaman dilimine duyarlı bağlam vermek için aracı zaman dilimini bilmeniz gerekir. Bunu yapmanın tek yolu, ticaret sunucusunun saat dilimi ayarını bilmektir. Bu bilgiyi programlı olarak elde etmenin bir yolu olduğunu sanmıyorum. Yapabileceğiniz şey, kullanıyor olabileceğiniz farklı ticaret sunucularını saat dilimine eşlemek için bir yapılandırma dosyası oluşturmaktır. Misal:


yapılandırma.json

{
     "servers" : {
         "MetaQuotes-Demo" : {
             "timezone" : "Europe/Moscow"
        },
         "AMPGlobalUSA-Demo" : {
             "timezone" : "Etc/UTC"
        }
    }
}
 
nicholish en :

UNIX zaman damgaları zaman diliminden bağımsızdır, bu nedenle zaman damgasına zaman dilimine duyarlı bağlam vermek için aracı zaman dilimini bilmeniz gerekir. Bunu yapmanın tek yolu, ticaret sunucusunun saat dilimi ayarını bilmektir. Bu bilgiyi programlı olarak elde etmenin bir yolu olduğunu sanmıyorum. Yapabileceğiniz şey, kullanıyor olabileceğiniz farklı ticaret sunucularını saat dilimine eşlemek için bir yapılandırma dosyası oluşturmaktır. Misal:


yapılandırma.json

iyi evet

pytz olmadan daha kolay yol:

pt = datetime . datetime .utcfromtimestamp(pos[ 0 ].time) // position open time by mt5 time
tt = datetime . datetime .utcnow() + datetime .timedelta(hours= 3 )   // current server time (from mt5 clock)

delta = tt-pt
>>> delta
datetime .timedelta(seconds= 2139 , microseconds= 506786 ) // position lifetime
ayrıca EA'ya başlamadan önce fiyattan çok uzakta bekleyen bir sipariş açabiliriz. Ve 'pt' ile arasındaki saat farkını karşılaştırın
 datetime .utcnow()
zamanı otomatik olarak dengelemek için
 
Maxim Dmitrievsky :

iyi evet

pytz olmadan daha kolay yol:

ayrıca EA'ya başlamadan önce fiyattan çok uzakta bekleyen bir sipariş açabiliriz. Ve 'pt' ile otomatik olarak ofset zamanı arasındaki saat farkını karşılaştırın

Ben de aynı şeyi düşündüm ama sonra sipariş zamanının, zaman dilimi olmayan bir UNIX zaman damgasında saklandığını hatırladım. Başka bir deyişle, zaman damgaları saat dilimi ne olursa olsun aynı olduğundan, aracı saat dilimini sipariş zaman damgasından tahmin edemezsiniz. GMT ofsetini bilmek istiyorsanız, mevcut terminal (broker) zamanını bilmeniz gerekir ve şu anda mevcut terminal zamanını veya GMT ofsetini almak için python kullanmanın bir yolu yoktur.

 
Maxim Dmitrievsky :

Burada Excel'i kapatmak için hala zamanı olmayabilir ve zaten dosyaya erişmeye çalışıyor olabilir, o zaman

burada ayrıca 5-10 saniyelik bir gecikme ekleyin, program excel kapanana kadar bekleyecek

soldaki pencereyle ne yapılacağı henüz çözülmedi)

Merhaba Maxim!

Daha önce, hafta sonu bir gecikme kodu ekleyerek seçeneği kontrol edeceğime söz verdim. Kontrol edildi, ancak gecikme hiçbir şeyi etkilemedi. Sol sekmede sorun yok çünkü. Sadece buna dikkat etmiyorum.

Bir kez daha, yardımınız için çok teşekkür ederim. Bu başlıkta daha fazla soru sormayacağım.

Saygılarımla, Vladimir.

Neden: