Сообщения о торговых событиях и об изменениях в торговой истории поступают по независимым каналам. При отправке запроса на покупку функцией OrderSend() можно сразу же узнать тикет ордера, который был создан при успешном результате проверки запроса. Но в то же время сам ордер еще может не появиться в клиентском терминале и попытка выбрать его с помощью функции OrderSelect() окажется неуспешной.
////// Следит за поступлением новых трейдов и ордеров.///voidOnTimer()
{
datetime tBegin = TimeCurrent();
HistorySelect(dataBegin, TimeCurrent());
//Если новые трейды не поступили, то и нечего обрабатывать.if(HistoryDealsTotal() == 0)return;
AddDeals();
dataBegin = tBegin;
}
Программисты часто выбирают четвертый путь – они сразу начинают писать торгового робота и не хотят особенно тратить время на ручную торговлю. Зачем? Ведь можно сразу написать автомат, потратив на это несколько месяцев, и затем только пожинать плоды своего труда.
下午好!
С-4
股票#对新的Cgate Plaza II网关不是免费的。
Cgate的API是由交易所免费分发的。编写你自己的终端(当然,它不会像MQ那样漂亮)。
这并不难,难的是将Cgate API翻译成API用户,他们将能够用 任何语言 编写自己的专家顾问--DLL。
从本质上讲,我的想法是这样的。
BASE --> PLAZAII(Cgate API) --> Simple Terminal --> DLL user advisor.
在图中,我通过Plaza II协议从交易所获得一个测试报价
终端几乎已经准备好了(我写了3天)!
在语言中(在DLL-advisor中),你可以创建任何你想要的 "小工具"(杯子、按钮、附加图形等)。
你将只受到开发环境的限制。
然而,这个概念有一个很大的缺点 - 测试EA的复杂性(目前只能通过日志)。
但不可否认的优势是--"直接 "连接到交易所,以及任何编程语言。
P.S 客户端-服务器概念(正如一般的电子交易一样)只基于事件模型:请求-回答--这是基础。
你可以发明任何你喜欢的东西(各种检查,等等),但如果它不能正常工作的请求-响应,最终它仍然会
不可避免地,这将导致专家顾问的错误。
...
然而,这个概念有一个很大的缺点--测试EA的难度(目前只能通过日志)。
...
在MT5概念中,有一个非常大的优点--在论坛上与聪明人交流。如果不花钱,那么......。
终点站几乎准备好了(整整写了3天)!
三天来令人印象深刻!
唯一的问题是:如果一切都那么好,为什么你还在使用MT5?
在MT5的概念中,有一个非常大的优点--在论坛上与聪明的人交流。如果不花钱,那么......。
С-4!
终端 - 仅用于显示任何东西!
我以前写过,这一点都不难。最难的部分是将Cgate API转变为用户API。
我已经做了需要做的1/200(不是最难的)部分。
Cgate Plaza II是一个流式 异步 客户端-服务器,流式可以
包含不止一种类型的信息!
不幸的是,我没有水平,无法完全快速地进行这种转变....。
市场上只有2种(付费)产品通过Cgate工作,而我不是
我不确定这是否是正确的。
因此,在FORTS上,在我写CGate Trader之前,是MT5。
顺便说一下,我看到MetaQuotes软件公司2011年1月24日发表的一篇关于MetaTrader 5交易活动 的有趣文章。除其他事项外,它还说。
还有。
以下是如何正确组织订单和交易柜台的例子。
如果你仔细研究作者的问题,就会发现没有问题,你只需要找到道德力量来拒绝OnTradeTransaction()函数,并在OnTimer()中以高分辨率的更新捕捉所有变化。
在几分钟内,我起草了我的工作实例,改变了历史。
这个例子中隐藏着一个陷阱,不能按原样使用,但我认为概念很清楚。每次我们加载一段历史,从最后处理的交易到当前时间。如果有新的交易,我们会对其进行处理,并将历史装载的开始时间洗牌到交易到达的时间。顺便说一下,我看到MetaQuotes软件公司2011年1月24日发表的一篇关于MetaTrader 5交易活动 的有趣文章。除其他事项外,它还说。
哼哼
此外,还有关于这个主题的文章。
而我建议作者阅读《如何创建交易机器人》一文,不要 浪费时间。它完全适合。
Программисты часто выбирают четвертый путь – они сразу начинают писать торгового робота и не хотят особенно тратить время на ручную торговлю. Зачем? Ведь можно сразу написать автомат, потратив на это несколько месяцев, и затем только пожинать плоды своего труда.
但是,"没有劳动就不能把鱼从池塘里捞出来",程序员往往开始从头开始编写所有必要的基础设施--获取和处理价格数据,图表和指标的可视化表示,在历史上测试策略的自定义工具等等,而不是交易机器人。
在这个工作过程中,他得到了很多有用的经验。但与此同时,在大多数情况下,他或她没有一点接近最终目标--创建一个自动交易系统。而且,即使他或她一路走到最后,又哪里能保证所写的机器人能够盈利呢?而如果他或她想写另一个交易系统呢?你必须重建一切,处理新的不可避免的编程错误。
瓦西里!
我当然理解你对MT-5的依恋,但请相信我的话。
挖掘历史是没有意义的,因为错误的数据也可能被写在那里。
请理解一件简单的事情--客户-服务器=请求-响应!这就是为什么我们的客户会有这样的想法。
你看,订单被升级了,得到的答复是部分执行。
你认为在历史上会发生什么?
罗克!
你也把我已经读过五遍的东西强加给我。
我不是在谈论制作机器人(或如何编写机器人),而是关于
我说的不是制作机器人(或如何编写机器人),而是MT-5中的具体错误!"。
你甚至懒得仔细看照片
我附上了(信息时间)。
你甚至懒得仔细看我附上的图片。
我附上了。
可怜的家伙,我希望我能帮助你......你太紧张了,你在尖叫。
你可以给我一个文本日志文件,而不是屏幕截图。
+ 请给我一个代码,我可以重现你的错误?