初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1443

 

我遇到了一个无法解释的时刻。账户是真实的。机器人设置了一个挂单,然后跟踪价格。在价格 "捕捉 "到挂单后,它打开了一个卖出仓位,并指定了止损和止盈。到此为止没有任何问题。然后,价格朝着我想要的方向移动,按照我的想法,止盈应该是 50 点。但事实并非如此。尽管当前价格跌破了开仓价格加上价差的水平,即 50 + 14 点,但平仓价格比开仓价格高出 36 点。就这样,一笔交易又一笔交易地重复着。我在测试仪上运行机器人,发现所有平仓头寸的点数都是 50 点,应该是这样的。

难道真的存在持续偏差,而且其大小与 14 点的点差大小大致相等?你不觉得奇怪吗? 这是昨天的交易日志。

KE      0       05:36:02.089    Trades  '1000008949': modify #1021600709 sell stop 0.04 EURUSDrfd -> price: 1.07870, sl: 1.07970, tp: 1.07820) done in 8.663 ms
RK      0       05:45:14.097    Trades  '1000008949': deal #1021883094 sell 0.04 EURUSDrfd at 1.07870 done (based on order #1021600709)
RJ      0       07:49:46.015    Network '1000008949': scanning network for access points
PJ      0       07:49:46.873    Network '1000008949': scanning network finished
IR      0       10:51:16.238    Trades  '1000008949': market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870
FF      0       10:51:16.258    Trades  '1000008949': accepted market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870
JF      0       10:51:16.558    Trades  '1000008949': market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870 placed for execution
OI      0       10:51:16.558    Trades  '1000008949': order #1021607738 buy 0.04 / 0.04 EURUSDrfd at market done in 316.213 ms
EF      0       10:51:16.558    Trades  '1000008949': deal #1021888944 buy 0.04 EURUSDrfd at 1.07834 done (based on order #1021607738)

弗拉基米尔

 
MrBrooklin 挂单,然后跟踪价格。在价格 "捕捉 "到挂单后,它打开了一个卖出仓位,并指定了止损和止盈。到此为止没有任何问题。然后,价格朝着我想要的方向移动,按照我的想法,止盈应该是 50 点。但事实并非如此。尽管当前价格跌破了开仓价格加上价差的水平,即 50 + 14 点,但平仓价格比开仓价格高出 36 点。就这样,一笔交易又一笔交易地重复着。我在测试仪上运行机器人,发现所有平仓头寸的点数都是 50 点,这是理所应当的。

难道真的有一个恒定的偏差,而且大小相同,大约等于 14 点的点差。你不觉得奇怪吗? 下面是交易日志。

弗拉基米尔

也许我遗漏了什么,但我认为您需要了解什么 出价 要价

 
Vladimir Deryagin #:

也许我遗漏了什么,但我认为您需要弄清楚 ask 含义。

我也开始怀疑,认为问题出在代码上。但我在策略测试器中也遇到了同样的问题。但在策略测试器中一切正常!在关闭交易的过程中,我用红色标出了执行时间。也许这就是问题所在?

敬上,弗拉基米尔。

附注: 今天我有 3 笔交易,它们的平仓点偏差分别为 10、14 和 15 点。看起来像是偏差。((

 
您好,在五位数的价格上,15 - 20 点的点差是正常的。而 50 点是不够的。如果利润与点差相同,您就不会走运了。虽然这取决于您是谁。
 
Aleksei Stepanenko #:
您好,在五位数的价格上,15 - 20 点的点差是正常的。而 50 点是不够的。如果利润与点差相同,您就不会走运了。虽然这取决于您是谁。

您好,阿列克谢,我同意这不是机器人最理想的策略,但只要它能带来稳定的利润,就让它发挥作用吧。越少越好,但越多越好。

现在谈谈我的问题。我查看了所有日志,发现自二月一日以来,平仓时间急剧增加,从 50-70 msk 增加到 330-450 msk。我会向我的外汇交易商了解情况。

弗拉基米尔


 

请问是否可以更改 "交易 "表中智能交易系统的 ID?

比方说,有一个设置限价卖出订单的脚本,请问能否在 "Trade "表中更改智能交易系统的 ID?

trade.BuyLimit(1,10.75,NULL,0,0,0,0,0,0,0,NULL);

如何在命令中指定 ID 编号,以便让具有类似 ID 的智能交易系统接收该订单?

 
BOBEF #:

请问是否可以更改 "交易 "表中智能交易系统的 ID?

或者假设有一个下限价卖出订单的脚本、

trade.BuyLimit(1,10.75,NULL,0,0,0,0,0,0,0,NULL);

如何在命令中指定 ID 编号,以便让具有类似 ID 的智能交易系统接收该订单?

 trade.SetExpertMagicNumber(magic);
 trade.BuyLimit(1,10.75,NULL,0,0,0,0,NULL);
 
Alexey Viktorov #:

谢谢
 

可能出错的地方

int aaa = StringFind(Set, txt);

Set - 我们要查找的字符串。

txt - 我们要查找的内容。

为什么 aaa = -1 ?

一般来说,字符串变量可以与相同的字符串变量有某种不同。

字符串 a = "A";

字符串 c = "A";

在什么情况下,a!=c 是可能的?

 



例如,DatabaseOpen() 函数每次在数据库被锁定且函数无法访问数据库时都会打印错误信息。但这对我来说是正常的工作情况,我会自己捕捉这个错误,并在必要时将其输出。

结果,整个日志都是关于锁定数据库的信息。

2023.02.13 18:57:21.917 database error, database is locked