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

 
Vladimir Perervenko:

创造一个实体(连接)在原则上是否可能?我认为没有那么大的必要,但为了将来的参考。

当在图表上安装另一个脚本(Py)时,第一个脚本被重置。这是它应该有的样子吗?

我不认为创建另一个实体会很困难,它只是对lib的另一个抽象层次。

这不再被认为是使用终端的lib,而是作为一个成熟的终端在python方面的网关。

最好现在就把更多的效用放到lib本身:)。

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

我不认为创建另一个实体会很困难,它只是对lib的另一个抽象层次。

这不再被认为是使用终端的lib,而是作为一个成熟的终端在python方面的网关。

最好现在就把更多的效用放到lib本身:)。

我的终端启动经常失败,还没有弄清原因。我一定是在安装Python的某个地方出现了错误......我将使用lib作为终端的网关(通过服务)。我将在周一对其进行测试。

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

mt5.initialize(blabla, portable=True)- 没有什么帮助,它仍然询问系统中最后启动 的终端。

尝试没有命名的参数路径, 路径 作为第一个未命名的参数传递。

if mt5.initialize('/works/MT5-1', login=11111, ...):
        ...   
        mt5.shutdown()
else:
   print('error')

if mt5.initialize('/works/MT5-2', login=2222, ...):
        ...   
        mt5.shutdown()
else:
   print('error')
 
Almaz:

尝试没有命名的参数路径, 路径 作为第一个未命名的参数传递。

它工作正常。谢谢你。

错误?

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

一切工作都很正常。谢谢。(笑)。

一个错误?

不是一个错误。

第一个参数没有命名,是固定的。但以防万一,它将在下一个版本中被命名。

 
Renat Fatkhullin:

不是一个错误。

第一个参数是未命名的,是固定的。但以防万一,它将在下一个版本中被命名。

啊哈,所以我没有具体理解文档的内容。

谢谢你。

 
真的需要一些东西来让 "新酒吧 的开始 "走出终端。指标并不那么重要。Python原来也有一个带有指标计算的库。
 

问题。有一个 positions_get 函数。文件描述了它的三种操作模式。

岗位_获取

通过符号或票据过滤来获取未结头寸。它可以用3种不同的方式调用。


调用时无参数。返回所有符号的开放头寸。

positions_get()

调用时指定一个符号,它想获得该符号的未平仓头寸。

positions_get(

symbol="SYMBOL" // 符号名称

)

调用指定位置的门票。

positions_get(

ticket=TICKET // ticket

)

参数

symbol="SYMBOL" [in] 符号的名称。可选的命名参数。如果指定了一个符号,票据参数将被忽略。

ticket=TICKET [in] 位置票(POSITION_TICKET)。可选的命名参数。


Variant positions_get() - 没有问题,工作正常。

但另外两个人却没有任何回报。

	 pos_info = mt5.positions_get(symbol = "GBPUSD")	
	 print(mt5.last_error())

第二个回调变量。

        result = mt5.order_send(request)        
        if result.retcode == 0 or result.retcode == 10009:      
                pos_info = mt5.positions_get(ticket = result.order)
                print("mt5.last_error(): %s" % (mt5.last_error()))

last_error也返回一个奇怪的结构。

2020-03-09 22:25:41 [DEBUG][module: processing.py] add_position: Possition open - OK! MqlTradeResult: {
    "retcode": 10009,
    "deal": 134756209,
    "order": 161108536,
    "volume": 0.01,
    "price": 1.31089,
    "bid": 1.31066,
    "ask": 1.31089,
    "comment": "Request executed",
    "request_id": 98,
    "retcode_external": 0
}
mt5.last_error(): [1, '']

到哪里去找?有什么问题吗?

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

一个有职位票的电话。

positions_get(

ticket=TICKET //ticket

)

参数

symbol="SYMBOL" [in] 符号的名称。可选的命名参数。如果指定了一个符号,票据参数将被忽略。

ticket=TICKET [in] 位置票(POSITION_TICKET)。可选的命名参数。


Variant positions_get() - 没有问题,工作正常。

但另外两个人却没有任何回报。

第二种呼叫变体。

last_error也返回一个奇怪的结构。

2020-03-09 22:25:41 [DEBUG][module: processing.py] add_position: Possition open - OK! MqlTradeResult: {
    "retcode": 10009,
    "deal": 134756209,
    "order": 161108536,
    "volume": 0.01,
    "price": 1.31089,
    "bid": 1.31066,
    "ask": 1.31089,
    "comment": "Request executed",
    "request_id": 98,
    "retcode_external": 0
}
mt5.last_error(): [1, '']

要注意什么?有什么问题吗?

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

 

last_error тоже возвращает странную конструкцию:

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