如何判断您是否填写了 MQL4 订单?

How to tell if you are filled in MQL4 order?

我一辈子都不知道如何判断已发送且您已获得有效票证的挂单是否在 MQL4 中填写

http://book.mql4.com/trading/index

是否有回调,或者脚本是否必须以某种方式连续轮询?

没有

Broker/Terminal 生态系统和 MQL4 语言在 Pending Order 满足市场价格并转换为交易。

是的。

一个 可以 选择以一种相当愚蠢的方式轮询 MT4/Terminal 中的 dbPool 条记录

int trades_total = OrdersTotal();

for ( int i = 0; i < trades_total; i++ ) {
      OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
      if (       OrderSymbol() == Symbol()
         && OrderMagicNumber() == Magic
         && (      OrderType() == OP_BUYSTOP
            ||     OrderType() == OP_BUY
            )
         ) { ...

或一个可以创建/存储/维护自己的DMA-类似的记录编号包(数组) (用作有点像指针)和关联的 Order 属性,它可以调解直接 access/modification(无需事先 dbPool OrderSelect())。

使用如此巨大的记录袋进行实时维护已经过测试,对于具有数十万个活动订单的低强度 HFT 是可行的(必须通过 [=13= 进行处理是不切实际的) ] OrderSelect()/Order*() 检测(Strategy Tester 多标准优化模式中的较少)。

如果您有订单,那么您可以定期查看OrderType()。它将从 BUY_STOP ( OP_BUYSTOP ) 变为 BUY ( OP_BUY ), 等等然后你就知道你的订单被执行了。

int myTicket;

void OnTick()
{
  // check for order filled
  OrderSelect(myTicket, SELECT_BY_TICKET);
  int type = OrderType();
  if((type == OP_BUY) || (type == OP_SELL))
  {
    // order is filled, do something here.
  }
  else
  {
    // order is not filled yet. keep waiting.
  }
}