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

时间:2015-08-23 17:35:57

标签: mql4 forex

我不能为我的生活如何判断已发送的待处理订单以及您是否获得了有效的机票,是否填写了MQL4

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

是否有回调或脚本是否必须以某种方式不断进行轮询?

2 个答案:

答案 0 :(得分:2)

没有

无论是经纪人/终端生态系统,还是 mysqlConnection.query('SELECT `something` FROM `here` WHERE `dog` = ?', [info] function(err, row, fields) { if(err) { return console.log('Error1'); } else if (!row.length) { return console.log('Error2'); } else if (!row[0].something) { return console.log('Error3'); } console.log('Works'); }); 语言都会在MQL4符合市场价格后转换为贸易。

一个可能选择以相当愚蠢的方式轮询MT4 /终端中的Pending Order条记录

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 ) ) { ... - 类似记录号码的数据包(在某种程度上使用)像指针一样)和关联的Order属性,它们可以调解直接访问/修改(没有事先DMA dbPool)。

对这种巨大的记录包的实时维护进行了测试,对于具有数十万活动订单的低强度HFT进行了测试(通过OrderSelect() {处理这样做是不切实际的。 {1}}工具(dbPool多资源优化模式中的较少)。

答案 1 :(得分:1)

如果您有订单,那么您可以定期检查 OrderType() 。它将从 BUY_STOP OP_BUYSTOP )更改为购买 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.
  }
}