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

 
Mikalas:

你能告诉我,你如何控制一个订单是否被修改(没有服务器的响应)?

修改一个订单会触发几个事件,我控制所有这些事件,同时也控制待办任务在待办列表中的时间。

我有一个forts机器人,每节课做500-600个交易,到目前为止没有损失的事件,也就是说,等待列表中的所有任务都被执行,没有达到定时检查。

 
Yurich:

根据定义,事件模型不可能完全可靠;如果一个事件没有发生,并不意味着它没有发生。

如果有些事件达到了,有些没有达到,那么就需要重复的代码块来保证对命令结果的处理,这些代码块会通过与前一次的比较来检查状态,等等。那么问题来了,如果重复的代码工作起来绝对可靠,为什么还要使用建立在事件上的代码呢?为什么使用两个代码而不是一个非事件驱动的代码?滋生多余的人?
 
Yurich:

修改一个订单会触发几个事件,我控制所有这些事件,我还控制一个等待名单任务在等待名单上的时间。

我有一个外汇机器人,每节课做500-600次交易,到目前为止没有损失事件,也就是说,等待列表中的所有任务都被执行,没有达到定时检查。

现在这更有趣了...那么,就没有出现过预期事件终究没有到来的情况吗?
 
C-4:
现在这更有趣了...那么,从来没有出现过预期事件没有到来的情况?
当我说没有事件损失时,我的意思是,在等待名单上的任务正在等待他们的事件(至少是一连串重要事件中的一个)。也许有迈克尔说的事件的损失,我没有保留事件的日志,但它们并不影响我的事件模型的整体运作。
 

to:Michael.

一般来说,在情况以某种方式得到解决之前,你更容易做额外的检查。

int dealsCount = 0;
///
/// С заданной периодичностью синхронизируем количество обработанных и поступивших трейдов.
///
void OnTimer(void)
{
   if(dealsCount != HistoryDealsTotal())
   {
      //Пришли новые трейды. их нужно обработать
      for(int i = dealsCount; i < HistoryDealsTotal(); i++)
      {
          ulong ticket = HistoryDealGetTicket(i);
          DealChecking(ticket);
      } 
   }
}

///
/// Поступило новое событие о поступлении трейда.
///
void  OnTradeTransaction(
      const MqlTradeTransaction&    trans,
      const MqlTradeRequest&        request,
      const MqlTradeResult&         result
   )
{
   if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
     DealChecking(trans.deal);
   ...
}

///
/// Обработчик трейдов.
/// \param ticket - Уникальный идентификатор трейда, который надо обработать.
void DealChecking(int ticket)
{
   
   // Далее идет нужная обработка.
   ...
   //Трейд обработан - увеличиваем количество обработанных трейдов.
   dealsCount++;
}

这个实现没有冗余,因为只有一个 "新交易 "事件的实际处理程序。但它被以两种不同的方式调用:通过计时器和通过事件OnTradeTransaction如果新的交易 由于某种原因没有调用 OnTradeTransaction 事件,将发生总金额和已处理交易金额的不同步在这种情况下,所有未处理的交易仍将通过for循环到达DealChecking处理器。

这个方案可以对任何事件进行限制,而不仅仅是针对 TRADE_TRANSACTION_DEAL_ADD
 
Mikalas:

...

P/S 而且没有必要 "撕毁文本",整个句子是这样开始的。

知道了交易类型,你可以决定分析交易账户中订单、头寸和交易的当前状态

你总是可以在帮助中找到更多的细节。

我同意尤里奇 关于其他一切的看法。你也许也应该重新考虑你的计划。

 

亲爱的同事们!

非常感谢大家的意见!

只有一条虫子在咬我:那平台是用来做什么的?

 

Mikalas:

那么你为什么需要一个平台呢?

这可能是一个反问句 :)如果没有,答案已经在这个主题中给出了。

关于交易、自动交易系统和交易策略测试的论坛

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

C-4, 2013.12.10 12:08

我不建议这样做。与MQ一起修复这个错误要比你自己为广场建立一个新的终端容易得多。你会在无休止的错误修复和编写 "标准功能 "中陷入困境。我说的是我自己的经验。我在Stock#的基础上部分开发了这样一个自制的综合体--其结果是为特定任务提供了另一辆 "自行车"。你最好和支持服务部门打交道,这样会更容易、更便宜。
我对航站楼里的一切也不满意,例如 "最后价格 "的态度。但我希望,当股票经纪人聚集到一定数量时,MQ将开始倾听他们的需求。
 
好的。什么是MT5的真正替代品?
 
Armen:
好的。什么是MT5的真正替代品?

这正是你在创建此类主题之前需要问自己的问题。在MT5到来之前,要在FORTS上交易,你至少要编写自己的交易终端。如果你想在FORTS上进行交易,在这方面没有现成的解决方案,除了Quick,它对自动交易几乎毫无用处(那些曾经在QPile上写过超过1000行的程序的人将理解我在说什么)。有一套辅助性的Stock#库,但它还没有发展成为一个 "开箱即用 "的成熟交易终端(运行和交易)。实际上,一个技术水平一般或较高的程序员要用Stock#创建一个交易平台,需要6个月的时间。初级程序员 将被这个产品压倒。还有像Kofite、TSLab、WealthLab等终端。但你必须清楚地认识到,它们并不被经纪商直接支持,所以你必须处理快速+你的超级交易平台(通过DDE传输数据的所有相关问题)。如果你想通过协议PlazaII工作--每月3 000卢布,经纪人将为你提供这样的机会。

在资产阶级部分,情况并没有好转。并非每个美国经纪商都提供有可能进行自动交易的交易平台。并非每一个美国经纪人都可以从俄罗斯进行合作。如果他们给你一个API,这是很好的。而我们又一次回到了为这个API编写自己的自行车。不仅如此,他们提供的平台也太不同了,面向不同的细分市场。只需将Wealth-Lab与ThinkOrSwim进行比较。没有标准,没有统一的接口。

一般来说,如果你的座右铭是 "我只梦想和平 "或 "我交易是为了测试新软件和编写下一辆自行车" - 那么你真的应该寻找一些其他平台,而不是MetaTrader5。