也许你可以通过了解while循环来更好地理解for循环 ...... for循环只是一个带有初始条件和增量的while循环 ......
查阅for 的文档,它说 . .
"for操作符等同于以下连续的操作符:"
Expression1;
while(Expression2)
{
operator;
Expression3;
};
具体到你的问题,"为什么第一个例子包含一个 "条件 "作为第二个参数,而第二个例子包含 "Expression2"作为第二个参数?"一个表达式可以是一个条件,一个条件的结果是一个真值 或假值,例如(a > b)或(c || d)或(OrdersTotal() >= 0),文档中也说.."表达式2是循环终止的条件测试。"
西蒙。
一个表达式可以是一个条件
那么,"for "运算符标题中的参数 二可以是一个表达式或条件?我认为Expression_1和Expression_3必须保持是表达式,而不是改变为条件,对吗?我不明白为什么表达式1和3也不能成为条件。表达式1和3都只是要填充的参数。(作为一个条件,也可以是参数二,也就是Expression_2的目的)。
请确认你的想法。
表达式可以是算术运算(2+2=4)、赋值等。(所有这些都列在MetaEditor词典中)。
条件是真||假(例子:a>b,a>=b,a==b,等等)。
操作也包含在MetaEditor字典中(例子:Break, Continue, Return, while, for,等等)。
谢谢你
西蒙。
一个表达式可以是一个条件
那么,"for "运算符标题中的参数二可以是一个表达式或条件?我认为Expression_1和Expression_3必须保持是表达式,而不是改变为条件,对吗?我不明白为什么表达式1和3也不能成为条件。表达式1和3都只是要填充的参数。(作为一个条件,也可以是参数二,也就是Expression_2的目的)。
文档 - while
书 - while
西蒙,我将在代码中练习使用while操作,帮你自己一个忙...我喜欢这样的声音!:)谢谢你。
威廉,这个数字,转换为布尔值是一个条件... (1=true,0=false)。非常感谢。
谢谢你。
西蒙。
我已经写了一个EA,它应该;)能够做到你的要求。
我分享的是这个EA与终端中 "专家 "标签的结果的组合。
该EA似乎能够选择USDJPY订单并将其信息打印到专家标签。为什么该EA没有关闭订单以及打印订单信息?
谢谢你。
西蒙。
我已经写了一个EA,它应该;)能够做到你的要求。
我分享的是这个EA与终端中 "专家 "标签的结果的组合。
该EA似乎能够选择USDJPY订单并将其信息打印到专家标签。为什么该EA没有关闭订单以及打印订单信息?
谢谢你。
请解释一下你的代码,以及它的目的是什么......特别是请告诉我,在这段时间里,请告诉我。
西蒙。
请解释一下你的代码和它的目的......特别是请告诉我,同时请告诉我。
我将尽力解释代码 和它的目的。
代码目的。
1.从三个订单中选择USDJPY订单。
2.2. 修改USDJPY订单的TP和SL。
3.执行OrderPrint()函数。
4.关闭 USDJPY 订单。
代码解释。
首先,变量被声明。
int i; double bid_ask;
第二,执行'while'循环。
'while'循环的逻辑。
OrderSelect()函数 使用变量'i'来代替数字1,2,3,等等。(请牢记这一点)
因此,如果OrderSelect()函数和OrderSymbol()函数中的变量i不是USDJPY,则 变量i增加1。
while(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()!="USDJPY")
i++;
循环增加'i'变量,直到OrderSelect()函数选择适当的订单票和OrderSymbol()函数选择一个USDJPY订单。当这两个目标都完成后,while循环变成假的,控制权被传递到i++;(while循环主体)下面。
第三,OrderModify()函数被执行。
OrderModify(i,OrderOpenPrice(),50*Point,50*Point,0,CLR_NONE);
第四,OrderPrint()函数被执行。
OrderPrint();
第五,包括参数,以辨别要关闭的订单是买入还是卖出订单。
if(OrderType()==OP_BUY){bid_ask=Bid;} if(OrderType()==OP_SELL){bid_ask=Ask;}
第六,一旦程序区分了订单是买入还是卖出,它就执行OrderClose()函数。
OrderClose(i,OrderLots(),bid_ask,3,CLR_NONE);
第七(也是最后一点),程序包括一个注释,它将显示变量'i',以确认票号确实是在策略测试器的视觉测试中的USDJPY票。
Comment("i = " ,i);
谢谢你。
西蒙。
'while'循环逻辑。
OrderSelect()函数使用变量'i'来代替数字1,2,3,等等。(请牢记这一点)
因此,如果OrderSelect()函数和OrderSymbol()函数中的变量i不是USDJPY,则 变量i增加1。
循环增加'i'变量,直到OrderSelect()函数选择适当的订单票和OrderSymbol()函数选择一个USDJPY订单。当这两个目标都完成后,while循环变成假的,控制权被传递到i++;(while循环主体)下面。
如果你有对返回值的检查和 错误报告,你可能会自己看到你的问题。
你好,MQL4社区。
第一个参考资料:https://book.mql4.com/operators/for
根据第一个参考资料,"for "运算符的格式例子是这样写的。
第二个参考资料:https://docs.mql4.com/basis/operators/for
根据第二个参考资料,提供的'for'运算符的例子是这样描述的。
为什么第一个例子 包含一个 "条件 "作为第二个参数,而第二个例子包含 "Expression2 " 作为第二个参数?
这种矛盾的含义是什么?
这有什么关系吗?
如果我要使用 "for "循环运算符,我相信我必须对它的所有参数有深刻的理解。
谢谢你。