任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 887 1...880881882883884885886887888889890891892893894...1178 新评论 владимир 2015.04.13 18:42 #8861 tuner: 执行void start(),就不会有错误。 谢谢你!错误已经消失了,但头寸仍然无法关闭。 Alexander 2015.04.13 18:55 #8862 rapid_minus: 谢谢你!错误已经消失了,但头寸仍然无法关闭。 没有足够的代码,无法准确判断是什么原因造成的 владимир 2015.04.13 18:58 #8863 tuner: 没有足够的代码来说明具体的原因是什么 摘录。 void CritCloseBuy(){ if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&(MA_1>MA_2) || ((Yellow_0-Red_0)>)(Yellow_1-Red_1)&& ((MB_0<MB_1)&&(MB_1>MB_2)))) while(true){ ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,Red); if (ord_close = false){ Comment("BAY position closing failed with error #",GetLastError();//错误的信息 break;} else{ Ord=0; break;} } 这可能是开放的原因。 void CritOpen(){ if (//condition for opening//) while(true){ ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,NULL,10011,0,clrNONE); //开单 BAY, MAGIC 10011 if(ticket<=0){ Comment("开仓BAY-10011失败,错误#",GetLastError()。 break;} else{ Comment("BAY-10011仓位以0手开仓。1,price", Ask); Ord=(Ord+1); break;}} Any rookie question, so Need Help Spotting Coding 請高手指教!!!關於修改程序!!! 請高手幫幫忙,急需中.... Vitalie Postolache 2015.04.13 19:21 #8864 rapid_minus: 摘录。...before ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,Red) 。如果能用OrderSelect()函数 来选择订单就更好了。我不明白这样一个围绕关闭函数的循环的目的是什么... владимир 2015.04.13 19:25 #8865 evillive: before ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,Red) 。 如果能用OrderSelect()函数来选择订单就更好了。 我有唯一的一个。嗯,实际上一开始是这样的。我开始用摸索的方法寻找原因。我不明白这个循环的意义。 我只是用类比的方法作弊:如果我用循环打开,那么我也应该关闭...... владимир 2015.04.13 19:44 #8866 伊戈尔-金有我们的例子。 void start() { ManagePositions();} //+----------------------------------------------------------------------------+//|按市场价格平仓|//| 参数。|//| sym - 仪器名称("" - 当前符号)。|//| op - 操作(-1-任何位置)|//| mn - 魔术数字(-1-任何魔法)|//+----------------------------------------------------------------------------+ void ClosePositions(string sym="", int op=-1, int mn=-1) { int i, k=OrdersTotal() 。 如果(sym=="") sym=符号(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES){ if (OrderSymbol()==sym && (op<0 || OrderType()==op)){ if (mn<0 || OrderMagicNumber()==mn) { if (OrderType()==OP_BUY){ OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);} if (OrderType()==OP_SELL) { OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);}}}}}} 但编译器要求检查OrderClose的返回值 [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 编码帮助 Vitalie Postolache 2015.04.13 20:06 #8867 rapid_minus:伊戈尔-金有我们的例子。但编译器要求对OrderClose的返回值进行检查那么,就像例子中那样做--先选择,然后关闭。如果是唯一的订单或一百万个订单,这并不重要,因为每个订单都必须首先被选中。检查非常简单 if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell))Print("Closing error #",GetLastError())。 Alexander 2015.04.13 20:12 #8868 rapid_minus:伊戈尔-金把我们的作为一个例子。...但编译器要求对OrderClose的返回值进行检查 这是因为在伊戈尔写函数的时代,编译器并不要求检查返回值,而今天的编译器如果不检查返回值就会发誓 владимир 2015.04.13 21:28 #8869 evillive:因此,像例子中那样做--先选择,然后关闭。不管是只有一个订单还是一百万个订单,每个订单都必须先被选中。检查非常简单 if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell))Print("Closing error #", GetLastError())。 我做了以下工作:如果(!OrderClose(OrderTicket(), OrderLots(), Bid, 0, Red)){ Comment(" BAY位置关闭 失败,错误#",GetLastError())。 break;} 否则{ Ord=0; break;} 一直要求 "返回值应被检查。 像这样做了。 ord_close=OrderClose(OrderTicket(), OrderLots(), Bid, 0, Red); if (ord_close = false){ Comment("BAY位置关闭失败,错误#",GetLastError(); //错误信息 break;} else{ Ord=0; break;} 沉默不语。但在这两种情况下,它都没有关闭仓位。 ZS: 我认为在定义关闭和打开条件时有一个错误 上面的帖子显示了一个接近条件的例子。那里会有什么问题呢? Any rookie question, so [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. 编码帮助 Vitalie Postolache 2015.04.13 21:57 #8870 rapid_minus:它是无声的。但在这两种情况下,它都没有关闭仓位。ZS:我认为在平仓和开仓的条件定义上有一个错误在上面的帖子中,有一个接近条件的例子。那里会有什么问题呢?好吧,如果默默地,没有错误,不关闭,那么关闭条件就不对。我们需要重新思考和改写这个非常条件。这里的括号不知为何安排得不对。 if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&&(MA_1>MA_2))) || ((Yellow_0-Red_0)>(Yellow_1-Red_1) && ((MB_0<MB_1)&&(MB_1>MB_2))))这个怎么样? if (((Yellow_0-Red_0<Yellow_1-Red_1) && (MA_0<MA_1 && MA_1>MA_2)) || ((Yellow_0-Red_0>Yellow_1-Red_1) && (MB_0<MB_1 && MB_1>MB_2))) 1...880881882883884885886887888889890891892893894...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
执行void start(),就不会有错误。
谢谢你!错误已经消失了,但头寸仍然无法关闭。
没有足够的代码来说明具体的原因是什么
摘录。
void CritCloseBuy()
{
if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&(MA_1>MA_2) || ((Yellow_0-Red_0)>)(Yellow_1-Red_1)&& ((MB_0<MB_1)&&(MB_1>MB_2))))
while(true)
{
ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,Red);
if (ord_close = false)
{
Comment("BAY position closing failed with error #",GetLastError();//错误的信息
break;
}
else
{
Ord=0;
break;
}
}
这可能是开放的原因。
void CritOpen()
{
if (//condition for opening//)
while(true)
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,NULL,10011,0,clrNONE); //开单 BAY, MAGIC 10011
if(ticket<=0)
{
Comment("开仓BAY-10011失败,错误#",GetLastError()。
break;
}
else
{
Comment("BAY-10011仓位以0手开仓。1,price", Ask);
Ord=(Ord+1);
break;
}
}
摘录。
...before ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,Red) 。
如果能用OrderSelect()函数 来选择订单就更好了。我不明白这样一个围绕关闭函数的循环的目的是什么...
before ord_close=OrderClose(OrderTicket(),0.1,MarketInfo(OrderSymbol(),MODE_BID),0,Red) 。
如果能用OrderSelect()函数来选择订单就更好了。
我有唯一的一个。嗯,实际上一开始是这样的。我开始用摸索的方法寻找原因。我不明白这个循环的意义。
我只是用类比的方法作弊:如果我用循环打开,那么我也应该关闭......
伊戈尔-金有我们的例子。
void start() {
ManagePositions();
}
//+----------------------------------------------------------------------------+
//|按市场价格平仓|
//| 参数。|
//| sym - 仪器名称("" - 当前符号)。|
//| op - 操作(-1-任何位置)|
//| mn - 魔术数字(-1-任何魔法)|
//+----------------------------------------------------------------------------+
void ClosePositions(string sym="", int op=-1, int mn=-1) {
int i, k=OrdersTotal() 。
如果(sym=="") sym=符号();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES){
if (OrderSymbol()==sym && (op<0 || OrderType()==op)){
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
}
if (OrderType()==OP_SELL) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
}
}
}
}
}
}
但编译器要求检查OrderClose的返回值
伊戈尔-金有我们的例子。
但编译器要求对OrderClose的返回值进行检查
那么,就像例子中那样做--先选择,然后关闭。如果是唯一的订单或一百万个订单,这并不重要,因为每个订单都必须首先被选中。
检查非常简单 if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell))Print("Closing error #",GetLastError())。
伊戈尔-金把我们的作为一个例子。
...
但编译器要求对OrderClose的返回值进行检查
因此,像例子中那样做--先选择,然后关闭。不管是只有一个订单还是一百万个订单,每个订单都必须先被选中。
检查非常简单 if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell))Print("Closing error #", GetLastError())。
我做了以下工作:如果(!OrderClose(OrderTicket(), OrderLots(), Bid, 0, Red))
{
Comment(" BAY位置关闭 失败,错误#",GetLastError())。
break;
}
否则
{
Ord=0;
break;
}
一直要求 "返回值应被检查。
像这样做了。
ord_close=OrderClose(OrderTicket(), OrderLots(), Bid, 0, Red);
if (ord_close = false)
{
Comment("BAY位置关闭失败,错误#",GetLastError(); //错误信息
break;
}
else
{
Ord=0;
break;
}
沉默不语。但在这两种情况下,它都没有关闭仓位。
ZS: 我认为在定义关闭和打开条件时有一个错误
上面的帖子显示了一个接近条件的例子。那里会有什么问题呢?
它是无声的。但在这两种情况下,它都没有关闭仓位。
ZS:我认为在平仓和开仓的条件定义上有一个错误
在上面的帖子中,有一个接近条件的例子。那里会有什么问题呢?
好吧,如果默默地,没有错误,不关闭,那么关闭条件就不对。我们需要重新思考和改写这个非常条件。
这里的括号不知为何安排得不对。
if (((Yellow_0-Red_0)<(Yellow_1-Red_1) && ((MA_0<MA_1)&&(MA_1>MA_2))) || ((Yellow_0-Red_0)>(Yellow_1-Red_1) && ((MB_0<MB_1)&&(MB_1>MB_2))))
这个怎么样?
if (((Yellow_0-Red_0<Yellow_1-Red_1) && (MA_0<MA_1 && MA_1>MA_2)) || ((Yellow_0-Red_0>Yellow_1-Red_1) && (MB_0<MB_1 && MB_1>MB_2)))