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

 
Sivoraksha-ia:
很奇怪,但一张空桌子也到了。不需要像Quicksilver那样在终端本身打开任何东西来使卸货工作?

任何具有所需对数的图表(用于刻度线)。

 
大家好。


我对使用Python API的order_send()请求后返回的OrderSendResult 结构有一个问题。返回的字段之一是 "评论",其中应包含经纪人对交易的评论。然而,这个字段返回的是传递给请求的相同注释,而不是应该的经纪人返回。


要重现该错误,请执行以下操作。

1.创建一个查询,结果是一个评论。在 "评论 "查询中填写一个假的评论。

2.使用Python API的order_send ()命令发送请求。

3.在返回的orderSendResult对象中,检查 "评论 "字段。


评论 "字段将传递相同的评论,而它应该有一个由经纪人返回的评论,这可以在MT5终端的 "日志 "标签中检查。

有人能证实这一点吗?有什么办法能让经纪人发表意见吗?



Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
OrderSend - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Perervenko:

你会在文件中加入描述吗?

添加

  • 市场_书籍_添加
  • 市场_书籍_获取
  • 市场_书籍_发布
  • Документация по MQL5: Интеграция / MetaTrader для Python / market_book_add
    Документация по MQL5: Интеграция / MetaTrader для Python / market_book_add
    • www.mql5.com
    market_book_add - MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     

    我想用python组织一个虚拟贸易会计。我需要它来区分不同交易策略的特点。使用的经纪人是Otkritie。不存在网状物。仪器有一个共同的位置,停止和采取的位置是共同的。我决定这样做:我以任何策略在任何市场上开立交易,没有止损和止盈。相反,我下了一个相同规模的止损和限价订单。我分别记住了表中的订单。每隔一段时间,我就把订单=mt5.orders_get(symb的符号),并得到一个已知的票据订单列表.ticket.tolist()。

    然后我通过我的交易表,检查在收到的未结订单列表中是否仍有止损或限价订单票。如果没有止损,意味着止损几乎已经触发;如果没有限价,意味着获利。然后我从我的表中删除该交易的条目,并删除该交易的剩余挂单。而且一切正常,除了一点--我不知道如何计算这笔交易的虚拟利润。在图片中,你可以看到卖出止损设置在141430,但实际上出现了滑点,开盘价是141350。我请求触发头寸的请求: deals = mt5.history_orders_get(ticket=246525084) (这个票据在下单时已经保存在系统中,如上图所示),但在我的回复中,我没有看到关于下单地点的信息,只有关于下单地点的信息。历史记录显示,卖出止损确实是在15215696号票中执行的,我可以在这个票中要求正确的价格。但首先我需要找到交易中的票据。我如何将此票与挂单票(卖出止损)相匹配?

     
    我的问题有了进展。通过请求关闭头寸的历史记录mt5.history_deals_get,我可以在订单中找到一个关闭订单的票据和它的执行价格。如果我在参数中指定一个时间范围,这就可以了。我也调用了同样的函数,将订单的票据传递给它--mt5. history_deals_get(ticket=TICKET) --但响应(-2,'终端:无效的参数')有这个参数的函数到底能不能用?
     
    亲爱的开发者,请你对我之前的问题发表意见。history_deals_get(ticket=TICKET) 函数不起作用响应总是(-2,'终端:无效参数')同样的函数,但有一个不同的参数history_deals_get(position=POSITION) 可以工作,但我需要按票据顺序找到交易。
     
    是否有可能制作一个可以访问历史的Python api新闻日历,以进行研究?
     
    亲爱的,有谁在MOEX 上进行交易吗?谁有同样的问题,当你初始化连接到终端时,它重新连接到服务器并要求提供证书密码?
    Документация по MQL5: Интеграция / MetaTrader для Python / initialize
    Документация по MQL5: Интеграция / MetaTrader для Python / initialize
    • www.mql5.com
    initialize - MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
     

    order_send和order_check 返回无。我不明白该去哪里找。请告诉我什么是错的。请。

    编码

    import MetaTrader5 as mt
    
    if not mt.initialize(login=12345):#
        print("initialize() failed")
        mt.shutdown()
    
    terminal_info=mt.terminal_info()
    if terminal_info!=None:
        print(f"terminal {'''connected''' if terminal_info.connected else '''disconnected'''}")
    print("version: ",mt.version())
    
    info = mt.symbol_info("Si-6.21")
    print(f"Si-6.21  {info.bid=}  {info.ask=}")
    
    request = {
        "action": mt.TRADE_ACTION_PENDING,
        "symbol": "Si-6.21",
        "volume": 1,
        "type": mt.ORDER_TYPE_BUY_LIMIT,
        "price": 77300,
        "sl": 0,
        "tp": 0,
        "deviation": 0,
        "magic": 123,
        "comment": "test",
        "type_time": mt.ORDER_TIME_DAY,
        "type_filling": mt.ORDER_FILLING_RETURN,
    }
    
    check = mt.order_check(request)
    print("order check: ",check)
    
    ret = mt.order_send(request)
    print("order send: ", ret)
    if not ret is None:
        print(f" retcode:{ret.retcode}")
    

    输出

    terminal connected
    version:  (500, 2875, '02 Apr 2021')
    Si-6.21  info.bid=77770.0  info.ask=77773.0
    order check:  None
    order send:  None
    
    Process finished with exit code 0


    我设法解决了这个问题。在请求中,volume,price,sl,tp字段应该有浮动类型。它的工作原理是这样的

    request = {
        "action": mt.TRADE_ACTION_PENDING,
        "symbol": "Si-6.21",
        "volume": 1.,
        "type": mt.ORDER_TYPE_BUY_LIMIT,
        "price": 77300.,
        "sl": 0.,
        "tp": 0.,
        "deviation": 0,
        "magic": 123,
        "comment": "test",
        "type_time": mt.ORDER_TIME_DAY,
        "type_filling": mt.ORDER_FILLING_RETURN,
    }
     

    同事们,请指教。

    1.我如何在Python中从mt5中按工具提取可用的交易时段并定期更新?

    2.我是否希望在库中看到一种方法来请求和改变未结头寸 的追踪止损?