帮助。为什么EA不关闭交易 - 页 3 1234567 新评论 Simon Gniadkowski 2012.05.21 18:51 #21 crossy: 这里如果Orderselect是FALSE,EA如何回到代码行:for(int cnt=OrdersTotal(); cnt > 0; cnt-- ) ?? 你可以在循环中使用continue 转到下一个值。......或者用break 从循环中跳出......点击链接查看相关文档。 Simon Gniadkowski 2012.05.21 18:54 #22 crossy: 在这里,如果Orderselect是FALSE,EA如何回到代码行:for(int cnt=OrdersTotal(); cnt > 0; cnt-- ) ??? 这段代码是错误的 . . . cnt需要从OrdersTotal() - 1开始,然后向下递减到cnt >= 0 ... ...第一个条目是0而不是1 这就是我要求查看代码的原因。......而你已经展示了足够的内容来确定问题所在 ......可能吧。) Yochanan Gerbi 2012.05.21 19:17 #23 RaptorUK: 这段代码是错误的 . . . cnt需要从OrdersTotal() - 1开始,然后向下递减到cnt >= 0 ... ...第一个条目是0而不是1 这就是我要求查看代码的原因。......而你已经展示了足够的内容来确定问题所在 ......可能吧。) 非常正确。谢谢你,Wizeman! Yochanan Gerbi 2012.05.21 19:23 #24 crossy: 非常正确。谢谢你,Wizeman! 还有一个想法。 如果我有很多条件,你可以写。 If( X>b && B>S && NB<F......) { BBB= 5; }f.e. 在这里,EA必须计算括号内的每个条件。 但是,如果你在寻找效率(4000个代码行......),我更喜欢有。 如果 ( X>b ) { while (B>S) { While ( NB<F...) { BBB=5。 } break; } break; } 这两种变化是一样的吗? Y. onewithzachy 2012.05.21 20:08 #25 crossy,当你写代码时,请使用SRC按钮,它将更易读 所以它会像这样显示 //--- first code If(X>b && B>S && NB<F......) { BBB=5; } // --- second code If(X>b) { while(B>S) { while(NB<F..) { BBB=5; } break; } break; } 关于mql4中 "if, while and for "循环的解释https://book.mql4.com/operators/assign 在第二段代码中,由于你使用了break,所以是可以的,但是,为了得到BBB=5,这是一个很长的过程,我更喜欢第一段代码,它使用的资源更少。 Simon Gniadkowski 2012.05.21 20:25 #26 crossy: 还有一个想法。 如果我有很多条件,你可以写。 If( X>b && B>S && NB<F......) { BBB= 5; }f.e. 在这里,EA必须计算括号内的每个条件。 但是,如果你在寻找效率(4000个代码行......),我更喜欢有。 像这样使用while,你可能会发现自己处于一个无限的循环中. . . Yochanan Gerbi 2012.05.22 03:17 #27 谢谢你们俩!。 Yochanan Gerbi 2012.05.23 06:24 #28 onewithzachy: 请使用SRC按钮来显示你的代码,以便更好地阅读 :) 你的OrderSelect()的编码方式是错误的。把你的代码和这个比较一下。 然后,如果你仍然有问题,请回信 :) 特别感谢onewithzachy。 我不知道ORDERSELECT不能捕捉,所以你可能有未知的错误。 我的代码本来是4016行,现在变成了将近4500行--但没有错误。 谢谢大家,朋友们。 Y. Yochanan Gerbi 2012.05.25 11:20 #29 你好,朋友们。 在这里工作了很长时间后,我的EA取得了不错的成绩,但我还有一个问题,如下所示。 我有以下的代码行。 CLOSE_Single_P(Pair1, "LONG",OrderT, OrderL)。 因为。 Pair1 是符号。 "LONG " 是多头交易的标志。 OrderT 是订单票号。 OrderL 是订单的手数。 该函数如下。 void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT){ double PRC; bool Check = false; for ( int cntt=0; cntt<20000; cntt++ ){ if ( Check ){ Check_Ini( ) 。 return;} for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- ){ if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) ){ Check = false; if ( TREN == "LONG" ) PRC = MarketInfo(SYMB,MODE_BID); else if ( TREN == "SHORT" ) PRC = MarketInfo(SYMB,MODE_ASK); Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow); if ( Check ) break;} } } return;} 我的问题是。EA有时能很好地关闭交易,但有时EA关闭了交易,但它还在继续寻找票据来关闭它,尽管它已经被关闭。 (我得到的错误是:"未知票据号码..." 。 我认为我有一个逻辑错误。 谢谢你的帮助。 Y Help: Why The EA 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 求助,我想请高手朋友们写一个 止盈--止损脚本 Simon Gniadkowski 2012.05.25 11:21 #30 请 ... ... ... ... 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里如果Orderselect是FALSE,EA如何回到代码行:for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
??
在这里,如果Orderselect是FALSE,EA如何回到代码行:for(int cnt=OrdersTotal(); cnt > 0; cnt-- )
???
这段代码是错误的 . . .
cnt需要从OrdersTotal() - 1开始,然后向下递减到cnt >= 0 ... ...第一个条目是0而不是1
这就是我要求查看代码的原因。......而你已经展示了足够的内容来确定问题所在 ......可能吧。)
这段代码是错误的 . . .
cnt需要从OrdersTotal() - 1开始,然后向下递减到cnt >= 0 ... ...第一个条目是0而不是1
这就是我要求查看代码的原因。......而你已经展示了足够的内容来确定问题所在 ......可能吧。)
非常正确。谢谢你,Wizeman!
非常正确。谢谢你,Wizeman!
还有一个想法。
如果我有很多条件,你可以写。
If( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
在这里,EA必须计算括号内的每个条件。
但是,如果你在寻找效率(4000个代码行......),我更喜欢有。
如果 ( X>b )
{
while (B>S)
{
While ( NB<F...)
{
BBB=5。
}
break;
}
break;
}
这两种变化是一样的吗?
Y.
crossy,当你写代码时,请使用SRC按钮,它将更易读
所以它会像这样显示
关于mql4中 "if, while and for "循环的解释https://book.mql4.com/operators/assign
在第二段代码中,由于你使用了break,所以是可以的,但是,为了得到BBB=5,这是一个很长的过程,我更喜欢第一段代码,它使用的资源更少。
还有一个想法。
如果我有很多条件,你可以写。
If( X>b && B>S && NB<F......)
{
BBB= 5;
}f.e.
在这里,EA必须计算括号内的每个条件。
但是,如果你在寻找效率(4000个代码行......),我更喜欢有。
请使用SRC按钮来显示你的代码,以便更好地阅读 :)
你的OrderSelect()的编码方式是错误的。把你的代码和这个比较一下。 然后,如果你仍然有问题,请回信 :)
特别感谢onewithzachy。
我不知道ORDERSELECT不能捕捉,所以你可能有未知的错误。
我的代码本来是4016行,现在变成了将近4500行--但没有错误。
谢谢大家,朋友们。
Y.
你好,朋友们。
在这里工作了很长时间后,我的EA取得了不错的成绩,但我还有一个问题,如下所示。
我有以下的代码行。
CLOSE_Single_P(Pair1, "LONG",OrderT, OrderL)。
因为。
Pair1 是符号。
"LONG " 是多头交易的标志。
OrderT 是订单票号。
OrderL 是订单的手数。
该函数如下。
void CLOSE_Single_P(string SYMB, string TREN, int TICKET, double LOTT)
{
double PRC;
bool Check = false;
for ( int cntt=0; cntt<20000; cntt++ )
{
if ( Check )
{
Check_Ini( ) 。
return;
}
for ( int vvv = OrdersTotal()-1; vvv >= 0; vvv-- )
{
if ( OrderSelect(vvv, SELECT_BY_POS, MODE_TRADES) )
{
Check = false;
if ( TREN == "LONG" )
PRC = MarketInfo(SYMB,MODE_BID);
else
if ( TREN == "SHORT" )
PRC = MarketInfo(SYMB,MODE_ASK);
Check = OrderClose(TICKET,LOTT,PRC,Slippage,Yellow);
if ( Check )
break;
}
}
}
return;
}
我的问题是。EA有时能很好地关闭交易,但有时EA关闭了交易,但它还在继续寻找票据来关闭它,尽管它已经被关闭。
(我得到的错误是:"未知票据号码..." 。
我认为我有一个逻辑错误。
谢谢你的帮助。
Y
请 ... ... ... ...