我如何正确地开立市场订单? - 页 4

 
Gennady Mazur:
是的,好建议...

重复进行

我们必须检查结果。秩序。

如果下了订单,这并不意味着交易已经完成

此外,我们还应该检查订单的状态,以及它是否已经出现在历史上。

交易所不使用头寸,只使用订单。

 
Gennady Mazur:

我最近提出了一个关于重开订单的话题。我以为我已经解决了这个问题,因为一个星期以来一切工作都非常顺利。但今天我遇到了一个类似的问题,只是在打开时。
在Finam上有很多订单,在Otkritie上有9个订单......尽管在所有情况下都应该只有一个订单开盘。

下面是EA的一个代码片断

    

即我们可以从代码中看到,如果操作成功,变量OpenOrders 增加,最初等于0

如果它高于0,就不应该再开立订单,而是用注释Order1开立整堆的订单。

在打开订单 的函数中检查 是否有积极的回应,以及是否已经收到了订单票据,但由于某些原因,这个函数返回错误,尽管订单实际上已经设定。

解释一下问题出在哪里,如何解决这个问题?

告诉我,你是为哪个市场编写这段代码的?
 
prostotrader:
告诉我,你是为哪个市场编写这段代码的?
股票市场
 
Gennady Mazur:
对于股票经纪人来说。
好的,我去看看...
 
Sergey Chalyshev:

重复进行

除此以外,你还应该检查订单的状态,以及它是否已经出现在历史上。

该交易所不处理头寸,只处理订单。

好吧,谢尔盖,见....,这是来自查询结果的文件。

交易

一张票的交易,如果它已经被执行。这是在交易过程中报告的TRADE_ACTION_DEAL

秩序

票务订单,如果已经下了票。在交易操作中被通知TRADE_ACTION_PENDING


我没有挂单,我使用TRADE_ACTION_DEAL

你一定是在用限价器工作,那么一切都很正确....,这里是以当前价格从市场进入。
 
Gennady Mazur:

好吧,谢尔盖,见....,这是来自查询结果的文件。

交易

门票交易,如果有的话。将在交易中报告TRADE_ACTION_DEAL

秩序

票务订单,如果已经下了票。在交易操作中被通知TRADE_ACTION_PENDING


我没有挂单,我使用TRADE_ACTION_DEAL

你一定是在用限价器工作,那么一切就都是正确的....,这里你是以当前的价格从市场进入。
再看看我的答复,或者写信给servicedesk。
 
Vladimir Karputov:

设置类型填充

设置类型填充

通过填充设置订单类型


你设定你认为合适的东西。

顺便说一下,刚刚检查了发送订单和印刷品的结果

所以在所有的情况下,票面上都是0

  bool res=false;
  res=OrderSend(Request,Results);
  if(res)
  {
    Print(_Symbol+" Test True order "+(string)Results.deal);
    if(Results.deal>0) return(true);
    else return(false);
  }
    Print(_Symbol+" Test False order "+(string)Results.deal);
  return(false);
 
Gennady Mazur:

顺便说一下,刚刚检查了 发送订单和印刷品的结果

票据在所有情况下都显示为0

已经取得了进展......。))



 
Gennady Mazur:

顺便说一下,我刚刚向印刷厂核实了发送订单的结果

所以在所有的情况下,票面上都是0

  bool res=false;
  res=OrderSend(Request,Results);
  if(res)
  {
    Print(_Symbol+" Test True order "+(string)Results.deal);
    if(Results.deal>0) return(true);
    else return(false);
  }
    Print(_Symbol+" Test False order "+(string)Results.deal);
  return(false);

退货代码在哪里?我如何知道是否有错误?

我给了你一个例子:双重保护和票据的输出和返回代码。

 

我没能找到一个例子。让我这样说吧。

当你通过市场发送订单时,订单应该执行或被拒绝(因为你有一个FOK填充)。

因此,你不需要等票,你需要得到一张票。

一旦你收到一个票据,你就带着票据 "去 "OnTradeTransaction()。

你听TRADE_TRANSACTION_HISTORY_ADD,因为市场订单总是能进入历史记录。

并查看票据,看看订单发生了什么。

原因: