在mql4中使用library( grid )
library( gridExtra )
data( iris )
grid.newpage()
grid.rect( vp = viewport( x = 0.4, y = 0.4, width = 0.3, height = 0.3 ) )
grid.table( iris[ 1:3, 1:2 ], vp = viewport( x = 0.4, y = 0.4, width = 0.3, height = 0.3 ) )
时,默认情况下是否根据票证号订购了订单?我的意图是对从打开的第一个订单到最近的订单使用OrderSelect()
。
答案 0 :(得分:2)
除非在文档中明确指定,否则不要在MQL中假设任何内容。就是说,您需要先对票证号码进行排序,然后再依次进行排序。
CArrayInt tickets;
for(int i=0; OrderSelect(i, SELECT_BY_POS); i++)
tickets.Add(OrderTicket());
tickets.Sort();
for(int i=0; i<tickets.Total(); i++)
if(OrderSelect(tickets[i], SELECT_BY_TICKET))
...
答案 1 :(得分:0)
没有参数就无法调用OrderSelect()
函数。您必须指定ID和选择订单的方式。如果您知道该订单的ID(在MT4终端窗口中看到),则可以致电OrderSelect( order_id, SELECT_BY_TICKET)
,如果您不知道或在历史交易中循环,则必须应用OrderSelect(i,SELECT_BY_POS)
或{ {1}},其中OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
是0到i
或OrdersTotal()
之间的整数。
如果您以OrdersHistoryTotal()
为整数循环遍历交易数组,强烈建议您从最大值循环为零(反之亦然),您可以通过调用i
获取票据ID。在OrderTicket()
成功之后起作用。
答案 2 :(得分:0)
`enter code here`
int Magic = 12345;
// This reads the orders LIFO (last in...)
// the index is an integer and is incremented from 0
// as the orders are placed. It is NOT
// the ticket number. No sorting necessary.
for(int i=OrdersTotal()-1;i>=0;i--)
if(_Symbol=OrderSymbol() && Magic = OrderMagicNumber())
if(OrderSelect(i, SELECT_BY_POS) {
Print("Order Index: ",i,", Ticket: ",OrderTicket());