论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
  • 1
  • 2
前往
共 25 条
查看:1191回复:24
honolulu
注册时间2016-02-13
天秤座
[求助]EA中如何加快平单速度,并且保证平掉?
楼主发表于:2016-06-28 01:36只看该作者倒序浏览
1楼 电梯直达
电梯直达
本帖最后由 honolulu 于 2016-6-28 09:46 编辑 朋友问到平多个订单速度较慢的问题,突然想起了这个事。 遇到过一次因为交易商的问题,平多个订单时发出一个订单的OrderClose后至少1分钟无返回消息,导致循环中后几个订单不再发送close命令了(日志中查无后续close发出)。 可见,收到错误信息已经是近3分钟后的事儿了。 交易商补偿是按照订单发出close时的价格给补偿,这就造成没正常发送close的几个订单无法获得补偿。 如果是检测OrderClose的返回值,也会因为交易商并不是立刻返回错误,要拖1分钟以上,黄花菜都凉了。 分析了好久,感觉问题是否在 后续的close在循环中发送时,如果第一个close仍然在占用进程,导致后续close完全无效? 于是新改进的方法是在循环中加入 ,但是能否解决也不确定,毕竟这函数本意不是用在这儿的。而且会否引起其他连带问题。毕竟这种交易商的结单延迟不是经常可以遇到的,没办法测试。 各位兄台有什么更好的办法么? 对于平多个订单,就只能一个一个close么?就不能一个close里包含多个ticket一股脑丢给交易商么。。 有完美的平仓自定义函数的兄台不要藏私啊,先谢过了。emoji-image ----- 我晕,这帖子还发不了。说违反了论坛的安全防范策略 我就 叹号艾特井号刀了百分号了。。 代码改贴图试试。 QQ截图20160628094450.pngQQ截图20160628094450.pngQQ截图20160628093537.pngQQ截图20160628093537.png
TK29帖子1楼右侧xm竖版广告90-240
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
fllaga
注册时间2016-03-04
发表于:2016-06-28 01:47只看该作者
2楼
全局变量作为标记 每一副图表检查到标记变化之后 均可以发出CLOSE命令。 可以看做是多线程的CLOSE。
fllaga
注册时间2016-03-04
发表于:2016-06-28 01:50只看该作者
3楼
比如有 EURUSD GBPUSD USDJPY 三个图表均有单。 3图表的EA检测到全局变量是需平仓的命令时候。 均可以发送CLOSE命令。 意味着三个CLOSE是同时下达的。

点评

3个货币对3个ea或许可以发3次close。 可是同一个货币对的多个订单怎么办呢,总得循环依次吧,不管是从0循环到ordertotal还是反过来,也只能一单一单处理,怎么办呢 3个ea发3次close,如果一个close在占用进程(send发表于 2016-06-28 02:06
个性签名

韬客社区www.talkfx.co

张翠山
注册时间2015-04-23
积极参与奖韬客美食家
发表于:2016-06-28 01:55只看该作者
4楼
不懂mt4,但听楼主描述感觉是黑平台 试试市价单开相反仓,开仓总不会不执行把。

点评

用杜卡的不要来砸场子 信不信我鄙视你 也不是黑平台啦,最后还给了补偿的。毕竟服务器、网络总难免出些问题。没有尝试下反单,但是下了个0.01试验也是错误,延续了1小时后客服才告知已恢复正常。感觉发表于 2016-06-28 02:07
cipx
注册时间2016-04-12
发表于:2016-06-28 02:03只看该作者
5楼
感觉楼主写的程序有点问题,日志的第一句的最后 “at price 0.00000”? 在价格0.00000处关闭订单肯定是不行的,难道你的OrderClose函数的 输入的关闭价格是0,不是Bid?

点评

刚试验了一下,即便手动操作,现价关闭,日志中都是写的0.00000,并不是代码问题。毕竟ea运行正常。发表于 2016-06-28 02:09
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:06只看该作者
6楼
fllaga 发表于 2016-6-28 09:50
比如有 EURUSD GBPUSD USDJPY 三个图表均有单。 3图表的EA检测到全局变量是需平仓的命令时候。 均可以发送 ...
3个货币对3个ea或许可以发3次close。 可是同一个货币对的多个订单怎么办呢,总得循环依次吧,不管是从0循环到ordertotal还是反过来,也只能一单一单处理,怎么办呢 3个ea发3次close,如果一个close在占用进程(sending中 无返回值 这种状态),后续的也不能保证肯定可以再发出吧?
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:07只看该作者
7楼
张翠山 发表于 2016-6-28 09:55
不懂mt4,但听楼主描述感觉是黑平台 试试市价单开相反仓,开仓总不会不执行把。
emoji-image 用杜卡的不要来砸场子 信不信我鄙视你 也不是黑平台啦,最后还给了补偿的。毕竟服务器、网络总难免出些问题。没有尝试下反单,但是下了个0.01试验也是错误,延续了1小时后客服才告知已恢复正常。感觉是数据服务器仍然工作,但是订单处理服务器爆掉了。

点评

和杜卡无关,反向开仓的意思是锁仓 只有美国平台禁止锁仓,其余国家的都可以 意思就是先锁住仓,等不忙的时候随便平发表于 2016-06-28 02:10
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:09只看该作者
8楼
cipx 发表于 2016-6-28 10:03
感觉楼主写的程序有点问题,日志的第一句的最后 “at price 0.00000”? 在价格0.00000处关闭订单肯定是不 ...
刚试验了一下,即便手动操作,现价关闭,日志中都是写的0.00000,并不是代码问题。毕竟ea运行正常。
张翠山
注册时间2015-04-23
积极参与奖韬客美食家
发表于:2016-06-28 02:10只看该作者
9楼
honolulu 发表于 2016-6-28 10:07
用杜卡的不要来砸场子 信不信我鄙视你 也不是黑平台啦,最后还给了补偿的。毕竟服务器、网 ...
和杜卡无关,反向开仓的意思是锁仓 只有美国平台禁止锁仓,其余国家的都可以 意思就是先锁住仓,等不忙的时候随便平

点评

嗯 这个知道的。不过新下的0.01也是错误的。那锁仓单也不会成交吧?发表于 2016-06-28 02:13
小龙女HK
注册时间2010-11-28
发表于:2016-06-28 02:10只看该作者
10楼
这个我一直在用,你可以试试。 while LOOP 需要多一些条件(比如:次数)不然很大机会会造成问题的。 closecode.pngclosecode.png

评分

参与人数1
积分
金币
人气
时间
理由
0
0
0
2016-06-28
代码收到 ,非常感谢
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:13只看该作者
11楼
张翠山 发表于 2016-6-28 10:10
和杜卡无关,反向开仓的意思是锁仓 只有美国平台禁止锁仓,其余国家的都可以 意思就是先锁住仓,等不忙 ...
嗯 这个知道的。不过新下的0.01也是错误的。那锁仓单也不会成交吧?

点评

锁仓是开仓,如果平仓不行,开仓也不行,试试修改单子行不行,给单子止损改到已经触发的位置 如果这也不行就等于什么都不行,那就是让平台去死,赶紧迁移至杜卡斯贝,今生再无困惑。发表于 2016-06-28 02:16
张翠山
注册时间2015-04-23
积极参与奖韬客美食家
发表于:2016-06-28 02:16只看该作者
12楼
honolulu 发表于 2016-6-28 10:13
嗯 这个知道的。不过新下的0.01也是错误的。那锁仓单也不会成交吧?
锁仓是开仓,如果平仓不行,开仓也不行,试试修改单子行不行,给单子止损改到已经触发的位置 如果这也不行就等于什么都不行,那就是让平台去死,赶紧迁移至杜卡斯贝,今生再无困惑。

点评

明显杜卡是你家开的。发表于 2016-06-28 02:22
kimfufree
注册时间2007-01-29
天秤座
发表于:2016-06-28 02:16只看该作者
13楼
只能检查平仓返回值了,平仓不成功再来,没别的办法。平台要黑你,断网几分钟,再连上,你的EA才开始检查。已经错过最佳报价了。

点评

我就是想 管你交易商处理不处理。反正我一股脑把结单命令塞过去。 那只要不是黑平台,你当时不处理,日志上也有时间戳。反正最后是要给补偿的。 算是想要一种对特殊情况的应对吧。发表于 2016-06-28 02:25
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:22只看该作者
14楼
张翠山 发表于 2016-6-28 10:16
锁仓是开仓,如果平仓不行,开仓也不行,试试修改单子行不行,给单子止损改到已经触发的位置 如果这也不 ...
emoji-image 明显杜卡是你家开的。
名字不长
注册时间2013-04-05
积极参与奖
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:25只看该作者
16楼
kimfufree 发表于 2016-6-28 10:16
只能检查平仓返回值了,平仓不成功再来,没别的办法。平台要黑你,断网几分钟,再连上,你的EA才开始检查。 ...
我就是想 管你交易商处理不处理。反正我一股脑把结单命令塞过去。 那只要不是黑平台,你当时不处理,日志上也有时间戳。反正最后是要给补偿的。 算是想要一种对特殊情况的应对吧。
smile2u
注册时间2014-07-04
积极参与奖
发表于:2016-06-28 02:26只看该作者
17楼
本帖最后由 smile2u 于 2016-6-28 11:30 编辑 明确告诉你,在你发出指令后,后面的动作和结果都不是你能控制的了,你只有等。 行情走的慢时还好。剧烈动荡时,成交在哪,多久成交,你只有认命的份。 这并不是MT软件的毛病,是MT与此公司的LP之间清算过程固有的毛病。 因此选择有较大LP做后盾的公司就比较重要。只是一般情况下你查不到此公司后面真正接入的是什么LP。 通常听说的是其背后接入了几十上百家银行流动性,这是句不准确的废话。准确的说应该是,通过Sucden Financial 或cfh 或hotspots 或dukascopy 或Currenex 或FC Stone 或LMAX 或X open hub 或...... 接入了百余家银行的流动性。 因此报价、执行速度、滑点都会有很大的不同。

点评

“在你发出指令后,后面的动作和结果都不是你能控制的了” 意思是整个ea会暂停么? 那就是无法做到在同一个ea下,不等结果的情况下,连续发出订单指令了? 那在无返回结果的时段中。另一个ea发出的订单指令会如何发表于 2016-06-28 02:35

评分

参与人数1
积分
金币
人气
时间
理由
0
0
0
2016-06-28
明白,如此说来,翠花极力推荐杜卡也确实该.
yufangyn
注册时间2016-06-02
发表于:2016-06-28 02:29只看该作者
18楼
拖几分钟就完了? 黑天鹅还用EA啊,真胆大
honolulu
注册时间2016-02-13
天秤座
楼主发表于:2016-06-28 02:35只看该作者
19楼
smile2u 发表于 2016-6-28 10:26
明确告诉你,在你发出指令后,后面的动作和结果都不是你能控制的了,你只有等。 行情走的慢时还好。剧烈动 ...
“在你发出指令后,后面的动作和结果都不是你能控制的了” 意思是整个ea会暂停么? 那就是无法做到在同一个ea下,不等结果的情况下,连续发出订单指令了? 那在无返回结果的时段中。另一个ea发出的订单指令会如何?丢弃,还是也发过去?

点评

发表于 2016-06-28 02:38
在上次指令无结果返回时,后面指令处于排队状态。上面补充了,你再看一下。发表于 2016-06-28 02:38
个性签名

韬客社区www.talkfx.co

scalping
注册时间2015-01-14
发表于:2016-06-28 03:14只看该作者
20楼
本帖最后由 scalping 于 2016-6-28 11:35 编辑 IsTradeContextBusy()不在这个地方用,是用来判断同一个MT4上同一个货币兑上是否有复数的EA在跑,判断出了也没办法,除非装填的时候不让装填。 多个ea在跑时,如果其中一个发出closeorder后,还没等返回结果,另外一个ea也发出一个closeorder,这第二个就会得到Error 146 (Trade context busy) 。如果要判断这种情况,这个地方判断ERR_TRADE_CONTEXT_BUSY(146)错误。只有一个EA是不会出现这个错误的。mt4不允许一个货币对同时发https session connect请求。 同一个货币兑上是否有复数的EA不可避免,发生ERR_TRADE_CONTEXT_BUSY也很偶然但不可避免,closeorder上加一个循环就行,出了错就循环n次重新请求,只有出现135错误(ERR_PRICE_CHANGED)时发一个refreshrates后再重新请求。结果正确了就退出这个小循环。

点评

好吧。只能如此。毕竟这也是极端情况,并不是经常会产生的问题发表于 2016-06-28 03:34
  • 1
  • 2
前往
共 25 条

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;

2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;

3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;

4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;

5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]