开发人员!你甚至会测试你所创造的东西吗? - 页 11

 

纸杯,C-4

通过OnTradeTransaction的现有服务器响应模式

它适合我,而且在我的EA中起作用,但是

我的第一条信息是,没有从服务器返回任何信息(根本没有)。

交易已经完成(订单由1人完成),第二个错误是

第二个错误是,没有回复说订单已经下达,而是回复说订单被部分执行(重复)。

问题不是出在处理程序上(我对它没有异议),而是出在服务器的响应上(一个响应根本就没有,另一个则是错误的)。

在我的EA中,处理服务器响应的模式不是基于服务器响应的顺序,但响应必须是正确的。

以下是发生的情况(图片来自第一篇帖子)。

专家顾问下了一个成交量为3的订单。

该订单是由一个人执行的--服务器的反应是正确的。

然后专家顾问修改了订单--服务器的响应是ORDER_STATE_PARTIAL,而响应应该是ORDER_STATE_PLACED。

然后,该订单又被执行了1次,没有从服务器收到任何信息。

几天后(如下图),我重复了这个序列--结果发生了变化(可能是开发人员纠正了什么)。

我得到了一条交易发生的信息(秒21:15:02.232),但关于修改的信息仍然不正确。

同样令人震惊的是,来自服务器的三个回复同时出现(21:14:53.049)!

很明显,一切都在同一个线程中运作,信息堆积如山,但仍....。我正在阻止EA的运行。

来接收信息。

 

papaklass!

重点是,*.ex5程序在单线程中运行,如果

会有很多处理者,情况会更糟糕。

 
papaklass:

现在我特别检查了OnTrade和OnTradeTransaction操作。

三个OnTrade处理程序或四个OnTradeTransaction处理程序在一个交易订单上触发,以建立一个市场头寸(市场订单)。我只需要一个处理程序OnPositionOpened来触发。

对于通过止损/止盈平仓,有3个OnTrade处理程序或3个OnTradeTransaction处理程序被触发,而不是一个OnPositionClosed。 冗余是显而易见的。

现有的事件处理程序(OnTrade/OnTradeTransaction)的这些多重响应并没有对以下问题给出明确的答案:"发生了什么交易事件,交易操作的结果 是什么?这就提出了一个问题。"为什么这么麻烦?"

有了这种交易事件的冗余处理,不同类型的碰撞很容易发生,这将导致错误,特别是在客户大量发送交易订单时。

因此,在你的情况下或在komposter(超时)的情况下发生的事情对我个人来说并不令人惊讶。

OnTrade和OnTradeTransaction事件的实现方式让我想起了20年前的一个插曲......我记得读过对Spectrum新游戏的评论,特别是令人难忘的一篇,其中写道:"......游戏中的声音很好,因为你可以把它关掉......"。 我对OnTrade和OnTradeTransaction事件的态度几乎相同,它们很好,只是因为你不能使用它们。
 
SWA:
OnTrade和OnTradeTransaction事件的实现方式让我想起了20年前的一个情节......我记得我读过关于Spectrum新游戏的评论,尤其令人难忘的是对一个游戏的评论,其中这样写道:"......游戏中的声音很好,因为你可以把它关掉......"。我对OnTrade和OnTradeTransaction事件的态度大致相同,它们只有在不使用它们的情况下才有意义。

而我,则(成功地)使用了这两个处理程序!

如果由于某种原因,OnTradeTransaction 不工作,我就检查

在OnTrade中 - 非常方便,因为OnTradeTransaction。

然后是OnTrade。

 
Mikalas:

而我,则(成功地)使用了这两个处理程序!

如果由于某种原因,OnTradeTransaction不工作,我就检查

在OnTrade中 - 非常方便,因为OnTradeTransaction。

然后是OnTrade。

我个人认为这种便利性值得商榷:损失了时间,并使客户-服务器通道因要求获得关于服务器上发生的确切信息而超载。这可能是一种情况,当你得到服务器上来之不易的信息时,已经不再是最新的和可靠的了。
如果专家顾问以交易算法 所需的频率向服务器生成一个请求,那么使用这些事件将非常方便(至少对我来说是这样)。
bool TradeTransaction(TIME_REQUEST);
bool Trade(TIME_REQUEST);
// где временная метка может принимать значение к примеру TIME_REQUEST=TimeTradeServer или TIME_REQUEST=TimeGMT

而服务器会立即回复这样的请求,提供全面的信息......

然而,假设有 "不可逾越的客观原因 "使其无法实现这样的便利,那么我就用我所拥有的来做:)

 

谁能做到...:)

顺便说一下,从交易所服务器下载Plaza II API,你就会明白 "腿是怎么长出来的"。

 
Mikalas:

请不要无理取闹!顺便说一下,现在已经是10点了!

而且你有权利完全不看这里写的东西!

那么这个主题是什么呢?只是为了喊话?

如果你认为有错误,用日志和代码来确认(没有人会破译你的图片)。
如果你想找到一个可靠的解决方案,就听听他们怎么说(放弃事件模型,分析当前状态)。

使用OnTradeTransactionOnTrade来对交易情况的变化作出即时反应但整个处理过程将被放在一个处理程序中,正如Vasiliy所建议的OnRefresh()

好运!

 
komposter:

那么这个主题是什么呢?只是为了喊话?

如果你认为有错误,用日志和代码来确认(没有人会对你的图片进行解码)。
如果你想要一个可靠的解决方案,那就听听他们怎么说(放弃事件驱动模式,分析当前状态)。

使用OnTradeTransaction或OnTrade来对交易情况的变化作出即时反应但所有的处理都将放在一个处理程序中,正如Vasiliy建议的 那样OnRefresh()

好运!

康帕斯特!

要么阅读你所写的一切,要么...

2.无论我在这些网页上写什么,都是我作为论坛参与者的权利。

和粗鲁的任何东西都是远远不够的!。

3.无论你在哪里处理错误,如果服务器的响应不是它应该有的--结果将是一样的--错误!

4.你可能不是在交易自己。

 
Mikalas:
BURNING REMOTE是对明目张胆的攻击的回答!。不管是什么问题,这就是答案。你本来可以成为一个英雄...))
 

pronych和....

1.>> LUCKY REMOTE是对公然攻击的回答!不管是什么问题,这就是答案。>>本来可以成为一个英雄...))

你可能对你周围的世界有着恰如其分的认知......

2.你们是程序员还是 "写手"?

3.谁来回答一个简单的问题:服务器应该对 "修改订单 "命令做出什么反应?

4.那为什么要用文件呢?文章?闭上眼睛,想吐什么就吐什么吧!客户还是要付钱的(他也是要被榨干的人)。

bool CheckMoney()
{
  return(ВАСЯ_ПУПКИН);
}