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

 

下午好!

С-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 客户端-服务器概念(正如一般的电子交易一样)只基于事件模型:请求-回答--这是基础。

你可以发明任何你喜欢的东西(各种检查,等等),但如果它不能正常工作的请求-响应,最终它仍然会

不可避免地,这将导致专家顾问的错误。


 
Mikalas:

...

然而,这个概念有一个很大的缺点--测试EA的难度(目前只能通过日志)。

...

在MT5概念中,有一个非常大的优点--在论坛上与聪明人交流。如果不花钱,那么......。

 
Mikalas:

终点站几乎准备好了(整整写了3天)!

三天来令人印象深刻!

唯一的问题是:如果一切都那么好,为什么你还在使用MT5?

DC2008:

在MT5的概念中,有一个非常大的优点--在论坛上与聪明的人交流。如果不花钱,那么......。

是的,那是肯定的。现在这样的产品没有生态系统就无法生存。一个论坛,交流,成千上万的用户,像你和我一样的积极分子,准备张贴,讨论,博客......没有用户的支持,任何项目,不管是什么项目,迟早都会停滞不前,所有开发项目的努力都会白费。
 

С-4!

终端 - 仅用于显示任何东西!

我以前写过,这一点都不难。最难的部分是将Cgate API转变为用户API。

我已经做了需要做的1/200(不是最难的)部分。

Cgate Plaza II是一个流式 异步 客户端-服务器,流式可以

包含不止一种类型的信息!

不幸的是,我没有水平,无法完全快速地进行这种转变....。

市场上只有2种(付费)产品通过Cgate工作,而我不是

我不确定这是否是正确的。

因此,在FORTS上,在我写CGate Trader之前,是MT5。

 

顺便说一下,我看到MetaQuotes软件公司2011年1月24日发表的一篇关于MetaTrader 5交易活动 的有趣文章。除其他事项外,它还说。

Сообщения о торговых событиях и об изменениях в торговой истории поступают по независимым каналам. При отправке запроса на покупку функцией OrderSend() можно сразу же узнать тикет ордера, который был создан при успешном результате проверки запроса. Но в то же время сам ордер еще может не появиться в клиентском терминале и попытка выбрать его с помощью функции OrderSelect() окажется неуспешной. 

还有

交易服务器上的所有操作和发送有关交易事件的信息都是异步进行的。只有一个有保障的方法可以找出交易账户上的具体变化。这种方式是为了记住交易状态和交易历史,并将新的状态与保存的状态进行比较。

以下是如何正确组织订单和交易柜台的例子。

如果你仔细研究作者的问题,就会发现没有问题,你只需要找到道德力量来拒绝OnTradeTransaction()函数,并在OnTimer()中以高分辨率的更新捕捉所有变化。

在几分钟内,我起草了我的工作实例,改变了历史。

///
/// Следит за поступлением новых трейдов и ордеров.
///
void OnTimer()
{
     datetime tBegin = TimeCurrent();
     HistorySelect(dataBegin, TimeCurrent());
     //Если новые трейды не поступили, то и нечего обрабатывать.
     if(HistoryDealsTotal() == 0)return;
     AddDeals();
     dataBegin = tBegin;
}
这个例子中隐藏着一个陷阱,不能按原样使用,但我认为概念很清楚。每次我们加载一段历史,从最后处理的交易到当前时间。如果有新的交易,我们会对其进行处理,并将历史装载的开始时间洗牌到交易到达的时间。
 
C-4:

顺便说一下,我看到MetaQuotes软件公司2011年1月24日发表的一篇关于MetaTrader 5交易活动 的有趣文章。除其他事项外,它还说。

哼哼

罗什

此外,还有关于这个主题的文章。

 

而我建议作者阅读《如何创建交易机器人》一文,不要 浪费时间。它完全适合。

Программисты часто выбирают четвертый путь – они сразу начинают писать торгового робота и не хотят особенно тратить время на ручную торговлю. Зачем? Ведь можно сразу написать автомат, потратив на это несколько месяцев, и затем только пожинать плоды своего труда.

但是,"没有劳动就不能把鱼从池塘里捞出来",程序员往往开始从头开始编写所有必要的基础设施--获取和处理价格数据,图表和指标的可视化表示,在历史上测试策略的自定义工具等等,而不是交易机器人。

在这个工作过程中,他得到了很多有用的经验。但与此同时,在大多数情况下,他或她没有一点接近最终目标--创建一个自动交易系统。而且,即使他或她一路走到最后,又哪里能保证所写的机器人能够盈利呢?而如果他或她想写另一个交易系统呢?你必须重建一切,处理新的不可避免的编程错误。

 

瓦西里!

我当然理解你对MT-5的依恋,但请相信我的话。

挖掘历史是没有意义的,因为错误的数据也可能被写在那里。

请理解一件简单的事情--客户-服务器=请求-响应!这就是为什么我们的客户会有这样的想法。

你看,订单被升级了,得到的答复是部分执行。

你认为在历史上会发生什么?

 

罗克!

你也把我已经读过五遍的东西强加给我。

我不是在谈论制作机器人(或如何编写机器人),而是关于

我说的不是制作机器人(或如何编写机器人),而是MT-5中的具体错误!"。

你甚至懒得仔细看照片

我附上了(信息时间)。

 
Mikalas:

你甚至懒得仔细看我附上的图片。

我附上了。

可怜的家伙,我希望我能帮助你......你太紧张了,你在尖叫。


你可以给我一个文本日志文件,而不是屏幕截图。

+ 请给我一个代码,我可以重现你的错误?