订单选择功能问题 - 页 3

 

"OrderSelect()"返回的是整数,而文档明确指出它返回的是布尔值?

布尔值是0或1

你甚至没有检查 "OrderClose() "的结果,也没有检查是否发生了运行时错误!在我理解了订单选择FMIC之后,我再写代码。

了解C语言编程是很重要的,高兴吗?

 
boopa26:

"OrderSelect()"返回的是整数,而文档明确指出它返回的是布尔值?

布尔值是0或1

你甚至没有检查 "OrderClose() "的结果或是否发生了运行时错误!是的,但那是在FMIC之后。

它已经是一个布尔值 了,你不需要把它和任何东西进行比较,无论是另一个布尔常量还是一个类型化的整数。你不应该对内部表示的布尔值进行硬编码!你应该使用 "true "或 "false",但最好只在初始化一个变量时使用,而不是在比较中使用。

if(  OrderSelect( ... ) )  // instead of "if( OrderSelect( ... ) == true )"
if(  OrderSelect( ... ) )  // instead of "if( OrderSelect( ... ) == 1 )"
if( !OrderSelect( ... ) )  // instead of "if( OrderSelect( ... ) == false )"
if( !OrderSelect( ... ) )  // instead of "if( OrderSelect( ... ) == 0 )"

如果你费心学过 "C",你就会知道这一点!

 

这是我的问题

什么东西能把顺序选择功能 从假的变成真的?

我知道!等于没有

例子

如果不是 订单选择或如果订单选择BUT

默认情况下,订单选择是0,那么什么会将订单选择从0切换到1?

文件中写道

"返回值

如果函数成功,返回真"。

这些信息不足以让我理解


谢谢你,FMIC

 
boopa26:

只有这个论坛

Eddie你知道关于订单选择功能的任何事情吗?

我当然知道。

我已经从其他编码员那里学到了,而且我能够阅读MQL书籍和手册。

但最重要的 一点是:我已经学会了使用调试器。它为我节省了大量的时间来寻找MY分析和编码错误。

 
做得好,艾迪
 
boopa26: 我明白了!等于没有

如果你明白,为什么你一开始就没有做得正确!?

boopa26 :这是我的问题

是什么把选择函数的顺序从假变成了真?

例子

Ifnot order select or if order select BUT

默认情况下,订单选择是0,那么什么会将订单选择从0切换到1?

文档中写道

"返回值如果函数成功则返回真"

这些信息不足以让我理解

没有 "默认值",也没有从一个值切换到另一个值!它要么成功选择订单并返回 "true";要么失败,返回 "false",你必须检查错误代码 以找出原因。

 
  1. boopa26: 想写订单选择函数来关闭订单,没有for cycles或while cycles。
    然后发布 带有循环的代码
  2. 在阅读前发问题。
  3. boopa26:

    1.不需要C知识。Mql4是不同的函数

    3.已经阅读了文档

    4.已经写好的代码

    然后对文档的内容自相矛盾,并变得争论不休。
  4. Musngi被禁,boopa26突然出现。巧合吗?我不这么认为。

请不要喂食巨魔。当你回应时,你给了巨魔力量。当你无视巨魔时,他就会饿着肚子寻求关注,最终死亡。

 

你好,我可以通过循环订单选择 来寻找未平仓的订单,但我不能通过循环订单选择来寻找平仓的订单 利润。

这段代码循环选择订单来寻找未平仓的订单

static int a;

//cycle order select

if(OrdersTotal()>0&&
   a<OrdersTotal()&&
   OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==0)

   a++;

//close open order

if(OrdersTotal()>0&&
   OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==1&&
   OrderMagicNumber()==magic_number&&
   OrderType()==OP_BUY&&
// close order signal)
  
   OrderClose(OrderTicket(),lots_2,Bid,3,Blue);

https://docs.mql4.com/trading/orderselect

https://docs.mql4.com/trading/orderprofit

也许这

if(OrdersHistoryTotal()>0&&
   b<OrdersHistoryTotal()&&
   OrderSelect(b,SELECT_BY_POS,MODE_HISTORY)==0)

   b++;
 
static int a;

//cycle order select

if(OrdersTotal()>0&&
   a<OrdersTotal()&&
   OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==0)

   a++;

//close open order

if(OrdersTotal()>0&&
   OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==1&&
   OrderMagicNumber()==magic_number&&
   OrderType()==OP_BUY&&
// close order signal)
  

   OrderClose(OrderTicket(),lots_2,Bid,3,Blue);

static int a;

你没有初始化变量a,为什么它是静态的?


OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==0)

已经有人告诉你,你应该使用真或假,而不是1或0

OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==false)
// OR
!OrderSelect(a,SELECT_BY_POS,MODE_TRADES))


你没有在订单中循环往复

 
Keith Watford:
static int a;

//cycle order select

if(OrdersTotal()>0&&
   a<OrdersTotal()&&
   OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==0)

   a++;

//close open order

if(OrdersTotal()>0&&
   OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==1&&
   OrderMagicNumber()==magic_number&&
   OrderType()==OP_BUY&&
// close order signal)
  

   OrderClose(OrderTicket(),lots_2,Bid,3,Blue);

static int a;

你没有初始化变量a,为什么它是静态的?


OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==0)

已经有人告诉你,你应该使用真或假,而不是1或0

OrderSelect(a,SELECT_BY_POS,MODE_TRADES)==false)
// OR
!OrderSelect(a,SELECT_BY_POS,MODE_TRADES))


你没有在订单中循环往复

static int a; sits above start(){ GLOBAL VALUE

1或0没有区别,真或假

我正在增加条件生效后的a值