void analyzeFilledOrder(ulong orderTicket,double volume)
{
bool isFindOrder=false;
string fullComment;
ENUM_ORDER_TYPE orderType;
if(getIsOrderOfExpert(orderTicket,true)) //Если ордер из сделки уже в истории
{
fullComment=HistoryOrderGetString(orderTicket,ORDER_COMMENT);
orderType=ENUM_ORDER_TYPE(HistoryOrderGetInteger(orderTicket,ORDER_TYPE));
isFindOrder=true; //локальная переменная, если нашли в истории
}
if(!isFindOrder && getIsOrderOfExpert(orderTicket,false)) //Если не нашли ордер в истории и ордер есть не в истории
{
fullComment=OrderGetString(ORDER_COMMENT);
orderType=ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE));
isFindOrder=true; //локальная переменная, если нашли не в истории
}
if(isFindOrder) //если хоть где-то нашли, то выставляем отложенные стоп ордера
{
//выставляем стоп ордера
有时交易的顺序如下 TRADE_TRANSACTION_ORDER_DELETE, then TRADE_TRANSACTION_DEAL_AD, then TRADE_TRANSACTION_HISTORY_AD。在这种情况下,止损单往往不会在交易执行后下达。我想这是因为该订单已经被删除,但还没有被添加到历史中。这意味着我们无法在历史或终端中找到该交易的订单。虽然这很值得怀疑,但事实是没有下止损单,因为机器人在所有维度搜索订单后没有找到它(isFindOrder=false)。交易的顺序可能是正确的,但订单仍然无处可寻。 在所有情况下,机器人都能正确检测到交易,但没有进入下单阶段。然而,它也偶尔会正确工作,下单。
傻子。
我以为你是指你。
发生了什么事?"如果他愿意,他会想出办法的。"?
对我来说,在一个帖子里回复比在几十个帖子里 "推荐 "更容易。
如果他想,他就会想出办法。
从前,我想...但你的代码是世界上的东西。
在这种情况下,你只需要有一点MT4/5的知识。
在这种情况下,你只需要有一点MT4/5的知识。
不幸的是,我知道的不多,只有一点点。
我曾经告诉过你,你把你的代码插进插出,就像每个桶里的屁股塞。那些需要它的人已经使用了很长时间,有些人甚至为它做广告。但在不是很有必要的情况下强加于人,简直是不礼貌的。特别是当一个人想了解并进入mql5的编程,而不是通过技巧。
不幸的是,我知道的不多,只有一点点。
我已经告诉过你一次,你把你的代码插在每个桶里做生意,没有任何理由。那些需要它的人已经使用了很长时间,有些人甚至为它做广告。但在不是很有必要的情况下强加于人,简直是不礼貌的。特别是当一个人想了解并进入mql5的编程,而不是通过技巧。
关于交易、自动交易系统和交易策略测试的论坛
在贸易交易中的处理
fxsaber, 2019.02.08 13:24
给我看看支部作者问题的解决方案。
你看,当你做出一些断言时,以某种方式在实践中支持它们也不失为一个好主意。在几页中没有出现OnTradeTransaction的解决方案。如果有的话,很快就会明白为什么给定的解决方案是这样的,而不是相反。解决方案应该显示逻辑,而不是地狱。如果我去掉这个插件,源代码的逻辑不会有一点损失。而且你只需要理解逻辑(想法),没有别的。
我同意这种说法。一旦理解了逻辑,就会扔掉所有的包括,创造自己的。这正是建议的方式:掌握的不是一个inlude,而是通过代码来展示,而不是吓唬人,其解决方案需要的任务如何能够工作。
在这里,我又回到了问题的源头。问题也随之而来。
关于交易、自动交易系统和交易策略测试的论坛
在贸易交易中的处理
Ilya Child, 2019.02.07 20:08
晚上好。
伙计们,请帮助解决这个问题。这个问题可能并不新鲜,但我还没有找到任何明确的解决方案(无论是在实践中,还是在论坛上)。
我 在终端中对2个不同的仪器 运行2个不同的机器人。各地的魔法是不同的。机器人放置待定限额,程序OnTradeTransaction 允许我检测一个交易,并使用该交易放置待定止损单。
以下是贸易交易的代码
这是检查该交易是否属于机器人的函数的代码
这是待定止损单的程序代码
这是搜索历史中的订单和历史外的订单的函数代码
我将按照终端接收的顺序在日志文件中输出关于传入交易的信息。现在我有一个问题,我在用模拟账户交易时遇到过。
有时交易的顺序如下 TRADE_TRANSACTION_ORDER_DELETE, then TRADE_TRANSACTION_DEAL_AD, then TRADE_TRANSACTION_HISTORY_AD。在这种情况下,止损单往往不会在交易执行后下达。我想这是因为该订单已经被删除,但还没有被添加到历史中。这意味着我们无法在历史或终端中找到该交易的订单。虽然这很值得怀疑,但事实是没有下止损单,因为机器人在所有维度搜索订单后没有找到它(isFindOrder=false)。交易的顺序可能是正确的,但订单仍然无处可寻。 在所有情况下,机器人都能正确检测到交易,但没有进入下单阶段。然而,它也偶尔会正确工作,下单。
我已经尝试了不同的方法,没有任何效果。我现在考虑在待定下单程序开始时增加一个1秒钟的间隔。我不知道还有什么地方可以挖掘。
请分享你的经验和想法。
我怎样才能将突出的内容与下面这句话协调起来。
关于交易、自动交易系统和策略测试的论坛
在贸易交易中的处理
Ilya Child, 2019.02.07 20:20
我忘了补充,模式是网状的。这个位置对所有机器人来说都是一样的。也就是说,一个机器人买了一个头寸,第二个 也 买了,TRADE_TRANSACTION_DEAL_ADD事件以相反的顺序出现,最终第一个机器人没有看到它。
是的,而且我在逻辑上需要从交易中获得对订单的评论,位置在这里没有什么帮助。我们不要注意这个错别字,一个买了,另一个买了...最主要的是,似乎两个EA在一个符号上工作,账户类型净值...或者,也许我不明白什么?
我们不要注意这个错别字,一个买了,另一个买了...最主要的是,看起来好像有两个EA在同一个工具上工作,账户类型为净值...或者,也许我不明白什么?
在一个网状符号上有几个EA是正常的。比如说,织网的。所以很有可能净值头寸为零,但有两个SL和两个TP。这个问题在上面有明确的表述。
在一个单一的网状符号上,多个EA是常态。例如,净值化头寸。所以很有可能净值头寸为零,但有两个SL和两个TP。这个问题在上面有明确的表述。
我们可以猜测任何我们喜欢的东西。我想听听 "运输局长 "的意见。毕竟,我引用了他的帖子。
我们想怎么编就怎么编。我想听听运输经理的意见。我是在引用他的话。
我想老板已经被 "吓到 "了,他不会再出现了 :)
我不太明白你的意思。下面是我的交易处理
关于交易中的订单状态。你应该意识到,这不是我自己编造的。在所有deal_add交易中,这是订单的状态。请注意,这是一个市场订单,它曾经是一个挂单。
现在我们有另一部分不理解的地方。一笔deal_add交易飞来,而该头寸没有出现,不存在的头寸上的挂账被放置。
已添加。
发送了Deal_add交易,但头寸还没有被放置,而一个不存在的头寸的挂单已经被放置。交易类型为卖出,订单类型为买入。尽管最初的限制是Sell_limit
显然,要么是旧的信息没有在某个地方被清除,要么是未初始化的信息被占用。
如果我有一个deal_add,这个订单通常已经在历史中,或者已经被删除,但还没有出现在历史中。
虽然也有这样的情况,即订单仍然存在,然后它处于放置状态。
但在这个时候,它几乎不可能。
在选择订单 或故事的地方检查它们是否真的被选中。