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

 
Rashid Umarov:

检查你的账户类型是净额结算还是套期保值。对于净值化,已经存在的头寸的票据不会改变,按订单号寻找份额后的头寸也没有意义。

是的,都清楚了,看了是的,在净价票上开仓 的情况下,对应的是被开的仓位。这一点很清楚。

 
Almaz:
错误代码 1,这是成功的mt5.RES_S_OK,下一次构建将写入[1,'成功']。负值的代码是错误mt5.RES_E_xxx。

是的,谢谢你--关于为什么会有空行,这一点很清楚。

 
嗨,关于从终端获得关于newbar的更新,第517号帖子是否有任何更新?
 
fbrand:
你好,第517号帖子中关于从终端获得关于newbar的更新信息,是否有任何更新?

到目前为止,我不得不用时间检查来循环。

if mt5.symbol_info_tick(symbol).time % (60 * timefr) == 0:
...

不是很方便。但作为一个临时的选择,它是好的。

 
Vladimir Perervenko:

到目前为止,我不得不用时间检查来循环。

不是很方便。但作为一个临时的选择,它是好的。

没有计划。在一个计时器上或在一个循环中检查新的小节

 
Rashid Umarov :

没有计划。在一个计时器上或在一个循环中检查新的小节


如果你根据弗拉基米尔使用,那么我们将不会得到确切的量,而只是在投票时的那个刻度的量?


而如果你再使用EA中的新条形图 来调用Python脚本,并且脚本指向一个以上的符号,那么终端中所有符号的新条形图是同时执行的,还是我应该为每个符号创建一个Python脚本和顾问?


谢谢

ps:对不起,因为翻译器把字弄乱了,所以不得不用英文。
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 

使用history_orders_get()。

在文件中,明确地复制-粘贴 :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

而且在用法上有一个奇怪之处。

    from_date = datetime(2020,1,1)
    to_date = datetime.now()
    if mt5.initialize(acc['path'], login=login, server=acc['server'], password=acc['pass']):
        orders = mt5.history_orders_get(from_date, to_date)    
        if len(orders) > 0:
            orders_frame = pd.DataFrame(orders)
            print(orders_frame.head())

结果。

 python.exe .\history-deal-mt-1.py
         0           1              2           3              4  5  6  7  8  9      10       11  12  13    14   15       16      17      18       19   20      21             22 23
0  4308935  1583603265  1583603265527  1583603267  1583603267535  0  0  0  0  4  234000  4308935   0   3  0.01  0.0     0.00     0.0     0.0  9128.00  0.0  BTCUSD  python script
1  4308936  1583603511  1583603511561  1583603511  1583603511561  0  1  0  1  4  234000  4308935   0   5  0.01  0.0  9128.01     0.0     0.0  9128.01  0.0  BTCUSD  [tp 9128.010]
2  4308937  1583603550  1583603550455  1583603552  1583603552460  0  1  0  0  4       0  4308937   0   0  0.01  0.0     0.00     0.0     0.0  9127.50  0.0  BTCUSD
3  4308938  1583603969  1583603969250  1583603971  1583603971253  0  0  0  0  4  234000  4308938   0   3  0.01  0.0     0.00  9135.5  9142.5  9139.00  0.0  BTCUSD  python script
4  4308939  1583603974  1583603974183  1583603974  1583603974188  0  1  0  1  4  234000  4308938   0   4  0.01  0.0  9135.50     0.0     0.0  9135.50  0.0  BTCUSD  [sl 9135.500]

总的来说,数据是显示的,但在哪里,是什么--人们只能猜测。

朋友们,请--在TradeOrder(和类似的)中添加类似_fields或as_dict()或__dict__的东西。

    Point = collections.namedtuple('Point', ['x', 'y', 'val'])    
    print(Point._fields)
python.exe .\history-deal-mt-1.py
('x', 'y', 'val')

真的,现在不方便了。

 
Дмитрий Прокопьев:

使用history_orders_get()。

在文件中,明确地复制-粘贴 :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

更新帮助或进入链接

 
Rashid Umarov:

没有任何计划。在一个定时器上或在一个循环中检查新条

你能更具体地说明一下计时器的情况吗?

 
Дмитрий Прокопьев:

朋友们,请--在TradeOrder(和类似的)中添加类似_fields或as_dict()或__dict__的东西。

真的,现在不方便了。

在5.0.27中已经是这样了,所有的结构序列(类似于C语言API中的命名元组)都增加了_asdict()方法。

sym = mt5.symbol_info("EURUSD")._asdict()
for i in sym:
   print(i, '=', sym[i])