MetaTrader 5 Python用户组 - 如何在Metatrader中使用Python - 页 76

 
MrBrooklin:

谢谢你,马克西姆!

我已经在尝试了。循环已经开始,但文件还没有打开。我将让这个循环处于运行状态并等待。

问候,弗拉基米尔。


P.S. Pardon!一下子没注意到,那是值得一小时 的。我把它改成了一分钟 EUR_USD_QUOTE.csv文件被打开,但Pycharm 的运行标签中得到了这样的信息

� � � � 㤠���� ����� "excel.exe"。

然后又过了一分钟左右,文件关闭又重新打开,但在Exel中,电子表格的左侧出现了一个标签,要求我保存之前打开的文本。我又等了一会儿,想看看接下来会发生什么,但后来循环停止了,出现了这样的信息。

����� "excel.exe", � �����䨪�஬ 4208, � ����� 襭赶。
����� "excel.exe", � �����䨪�஬ 3168, � ����� 襭赶。
回溯(最近一次调用):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", line 37, in <module>
get_data(save_file='EUR_USD_QUOTE.csv')
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/9.py", line 23, in get_data
with open(save_file, 'w') as save:
PermissionError: [Errno 13] Permission denied: 'EUR_USD_QUOTE.csv'

这就是目前的结果,但我已经取得了进展!"。

真诚的,弗拉基米尔。

也许Excel没有来得及关闭,就已经在尝试访问该文件了,那么

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)

在这里添加5-10秒的延迟,程序将等待Excel关闭。

我还没有决定如何处理左边的窗户 )

 
MrBrooklin:

我想学习如何 使用Python语言 在互联网上获取报价 ,不是在终端观看,而是在一些文件中观看,例如,csv。我以为这是最基本的任务,但事实证明并非如此。也许我走错了路,但不找东西的人,他什么也找不到。

现在我将继续讨论你提出的代码。代码启动后, Pycharm开发环境 中出现了一条信息。

Traceback (most recent call last):
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py", line 25, in <module>
main()
File "C:/Users/Vladimir/PycharmProjects/My_Python_Project/10.py",第13行,in main
eurusd_bid = soup.find('td', 'pid-1-bid').text.replace(', ', '. ')
AttributeError: 'NoneType' object has no attribute 'text'

Process finished with exit code 1

我需要改变什么才能看到代码如何工作?

尊敬的弗拉基米尔。

不工作的原因是这个网站已经阻止了你发送请求。你不得不伪造一个用户代理的事实,一定是在暗示你在做他们不希望你做的事情。网络扫描已经远远超出了这个话题的范围,所以我们应该停止谈论它,回到手头的主题上来。你对使用MetaTrader5软件包有什么问题吗?

 
Maxim Dmitrievsky:

它可能没有时间关闭Excel,正在试图访问文件,然后

添加一个5-10秒的延迟,程序将等待Excel关闭。

我还没有决定如何处理左边的窗户 )

马克西姆,非常感谢你的代码,你帮助我改进了这些代码。左边的面板目前没有什么问题。我将在晚些时候添加你的新代码,很可能是在周末,因为我今天在工作中完全被淹没了,需要休息一下。一旦有了新的结果,我会尽快告诉你。

问候,弗拉基米尔。

 

MT5库在哪个偏移量上返回未结 订单的时间

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'

但在终点站,这是一个不同的时代

我如何正确地使python程序中的时间与订单(仓位)的时间同步?

 
Maxim Dmitrievsky:

MT5库在哪个偏移量上返回未结 订单的时间

但在终点站,这是一个不同的时代

我如何正确地使python程序中的时间与订单(仓位)的时间同步?

首先,你需要知道交易服务器的确切时区。然后用pytz创建一个时区对象。最后,将时区对象传递给一个方法。

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:

首先,你必须知道交易服务器的确切时区。然后用pytz创建一个时区对象。最后,将时区对象传递给该方法。

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

谢谢,我将这样试一试

我想自动同步时间,因为交易服务器可能会改变。
 
Maxim Dmitrievsky:

谢谢,我将尝试这个

我想自动同步时间,因为贸易服务器可能会改变。

UNIX的时间戳是不分时区的,所以你需要知道经纪商的时区来给时间戳提供时区意识的背景。唯一的办法是了解贸易服务器的时区设置。我不认为有任何方法可以通过编程获得这些信息。你可以做的是创建一个配置文件,将你可能使用的不同贸易服务器映射到时区。例子。


config.json

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

UNIX的时间戳是不分时区的,所以你需要知道经纪商的时区来给时间戳提供时区意识的背景。唯一的办法是了解贸易服务器的时区设置。我不认为有任何方法可以通过编程获得这些信息。你可以做的是创建一个配置文件,将你可能使用的不同贸易服务器映射到时区。例子。


config.json

好吧......。是

没有pytz的更简单的方法。

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
同时,我们可以在启动EA之前,在远离价格的地方开一个挂单。并比较'pt'和't'之间的时间差异。
datetime.utcnow()
以自动抵消时间
 
Maxim Dmitrievsky :

好吧......。是

没有pytz,更简单的方法。

我们也可以在启动EA之前,在离价格较远的地方开一个挂单。并比较'pt'和自动抵消时间之间的时差

我也想过这个问题,但后来我想起来,订单时间是以UNIX时间戳的形式存储的,没有时区。换句话说,你不能从订单的时间戳中推断出经纪人的时区,因为无论哪个时区,时间戳都是一样的。如果你想知道GMT的偏移量,你必须知道当前的终端(经纪人)时间,目前还没有办法用python来获得当前的终端时间或GMT的偏移。

 
Maxim Dmitrievsky:

它可能没有时间关闭Excel,正在试图访问文件,然后

添加一个5-10秒的延迟,程序将等待Excel关闭。

我还没有决定如何处理左边的窗户 )

你好,马克西姆!

我早些时候答应过你,在周末我将检查有延迟代码添加的变体。我已经检查过了,但延迟并没有影响到任何东西。我对左边的标签没有问题,因为我根本不注意它。

再次,非常感谢您的协助。我不会在这个主题中再问任何问题。

问候,弗拉基米尔。