做了一个2个EMA交叉的EA,需要建议 - 页 4 1234 新评论 Tjipke de Vries 2013.12.22 08:07 #31 prupru: 我现在有一个更大的问题,我的经纪人倾向于部分执行订单。 亲爱的客户。 请注意,您的交易已被部分打开(15.84中的2.32手),价格为587.318。 如果您对这个问题有任何其他问题,不要犹豫,请联系我们。 亲切的问候。 经理。 这里是支持说的。 请注意,在高波动性或低流动性期间,限价订单可能被部分执行。这意味着,如果价格得到满足,该仓位将立即得到全部或部分填补。在您的情况下,您的订单被部分执行,这就是您收到通知信的原因。 我知道如何关闭所有订单,尽管它们被部分关闭,我只需要在OrdersTotal()>0 时关闭所有订单,但我不知道当订单部分打开时该怎么办。 编辑。 我刚刚意识到,我必须检查适当的Symbol和magicnumber订单,这就有点困难了 编辑:这里是关闭所有订单的函数,即使是部分关闭的订单也应该关闭。 //Close all my Orders void CloseAllOrders() { int notMyOrders = 0; while (OrdersTotal()>notMyOrders) { notMyOrders = 0; for(int i = OrdersTotal()-1; i >= 0 ; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) {notMyOrders++; continue;} if(OrderType()<= 1)CloseOrder(); } } return; } 重写的 [删除] 2013.12.23 18:44 #32 deVries: 重写 哇 这对我来说有点棘手,我读了4、5遍才明白。谢谢! 还有......如果OrderSelect 返回错误会怎样? Orderselect返回false的频率是多少?这有可能吗? Tjipke de Vries 2013.12.23 19:00 #33 prupru: 哇哦这对我来说有点棘手,我读了4、5遍才明白。谢谢!还有......如果OrderSelect 返回错误会怎样?Orderselect返回false的频率是多少?这有可能吗? for(int i = OrdersTotal()-1; i >= 0 ; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; i= 0 从循环中回来 i = -1 如果(OrderSelect(-1,SELECT_BY_POS,MODE_TRADES)==false) break;// ==> 结束检查 交易,我们打破循环。 下一个CloseOrder() //CloseOrder void CloseOrder() {double PR=0; while(!IsTradeAllowed()) Sleep(10); RefreshRates(); if(OrderType()==OP_BUY) PR=Bid; if(OrderType()==OP_SELL) PR=Ask; if(!OrderClose(OrderTicket(),OrderLots(),PR,Slippage,CLR_NONE)) { Print("Close order error: ",GetLastError()); Print("Type ", OrderType()," PR ",PR, " Ask ", Ask, " Bid ", Bid, " OrderTicket ", OrderTicket(), " OrderLots ", OrderLots()); } return;} //--------------------------- end of close order 从GetLastError() 可以返回哪些常见的错误? 如果平仓失败,可能下一个交易也会失败,因为有一个错误,如tradecontext太忙或其他错误...... 那么你能做些什么来避免很多这种情况的发生呢? [删除] 2013.12.24 09:13 #34 deVries:那么你能做些什么来避免很多这种情况的发生呢? 还不知道。我得好好想想。 我现在被另一个问题所困扰。 我把我的EA放在WINDOWS 2003 VPS上,现在它出现了 "因超时而终止 "的错误,但我在家里的电脑上从未见过这种错误。 而且这个错误不是在我的平仓和开仓循环运行的时候出现的,而是在expert jush检查穿越和闲置的时候出现的。 我的意思是,程序检查新条形图,trailingstop = 0,所以没有调用尾随止损功能,然后如果新条形图打开,它检查EMA交叉,没有交叉(我得到超时错误的时候,EMA线离交叉还很远),所以程序返回(0) 没有任何周期!它怎么能被超时终止呢? Tjipke de Vries 2013.12.24 10:27 #35 prupru: 还不知道。我得考虑一下。 我现在被另一个问题所困扰。 我把我的EA放在WINDOWS 2003 VPS上,现在它返回 "因超时而终止 "的错误,但我在家里的电脑上从未见过这样的错误。 而且这个错误不是在我的平仓和开仓循环运行的时候出现的,而是在expert jush检查穿越和闲置的时候出现的。 我的意思是,程序检查新条形图,trailingstop = 0,所以没有调用尾随止损功能,然后如果新条形图打开,它检查EMA交叉,没有交叉(我得到超时错误的时候,EMA线离交叉还很远),所以程序返回(0) 没有任何周期!它怎么能被超时终止呢? 这不是一个周期吗? while(!IsTradeAllowed()) Sleep(10); [删除] 2013.12.24 10:48 #36 deVries: 这不是一个周期吗? 我的意思是在EA被终止的时候,EMA线还远未交叉,所以没有调用NewOrder函数,所以你所说的周期(在NewOrder函数内)没有运行。 增加了IsStopped条件 while( (!IsTradeAllowed()) && (!IsStopped()) ) Sleep(10); while ( (LotRemains>0) && (!IsStopped()) ) while ( (OrdersTotal()>0) && (!IsStopped()) ) [删除] 2013.12.24 14:16 #37 也许超时错误的出现是因为我用完了VPS的处理器资源。我已经切换到一个更昂贵的计划,我没有看到他们,直到我运行一些沉重的东西,如windows uodate。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我现在有一个更大的问题,我的经纪人倾向于部分执行订单。
亲爱的客户。
请注意,您的交易已被部分打开(15.84中的2.32手),价格为587.318。
如果您对这个问题有任何其他问题,不要犹豫,请联系我们。
亲切的问候。
经理。
这里是支持说的。
请注意,在高波动性或低流动性期间,限价订单可能被部分执行。这意味着,如果价格得到满足,该仓位将立即得到全部或部分填补。在您的情况下,您的订单被部分执行,这就是您收到通知信的原因。
我知道如何关闭所有订单,尽管它们被部分关闭,我只需要在OrdersTotal()>0 时关闭所有订单,但我不知道当订单部分打开时该怎么办。
编辑。
我刚刚意识到,我必须检查适当的Symbol和magicnumber订单,这就有点困难了
编辑:这里是关闭所有订单的函数,即使是部分关闭的订单也应该关闭。
重写的
重写
哇
这对我来说有点棘手,我读了4、5遍才明白。谢谢!
还有......如果OrderSelect 返回错误会怎样?
Orderselect返回false的频率是多少?这有可能吗?
哇哦
这对我来说有点棘手,我读了4、5遍才明白。谢谢!
还有......如果OrderSelect 返回错误会怎样?
Orderselect返回false的频率是多少?这有可能吗?
i= 0
从循环中回来
i = -1
如果(OrderSelect(-1,SELECT_BY_POS,MODE_TRADES)==false) break;// ==> 结束检查 交易,我们打破循环。
下一个CloseOrder()
从GetLastError() 可以返回哪些常见的错误?
如果平仓失败,可能下一个交易也会失败,因为有一个错误,如tradecontext太忙或其他错误......
那么你能做些什么来避免很多这种情况的发生呢?
那么你能做些什么来避免很多这种情况的发生呢?
还不知道。我得好好想想。
我现在被另一个问题所困扰。
我把我的EA放在WINDOWS 2003 VPS上,现在它出现了 "因超时而终止 "的错误,但我在家里的电脑上从未见过这种错误。
而且这个错误不是在我的平仓和开仓循环运行的时候出现的,而是在expert jush检查穿越和闲置的时候出现的。
我的意思是,程序检查新条形图,trailingstop = 0,所以没有调用尾随止损功能,然后如果新条形图打开,它检查EMA交叉,没有交叉(我得到超时错误的时候,EMA线离交叉还很远),所以程序返回(0)
没有任何周期!它怎么能被超时终止呢?
还不知道。我得考虑一下。
我现在被另一个问题所困扰。
我把我的EA放在WINDOWS 2003 VPS上,现在它返回 "因超时而终止 "的错误,但我在家里的电脑上从未见过这样的错误。
而且这个错误不是在我的平仓和开仓循环运行的时候出现的,而是在expert jush检查穿越和闲置的时候出现的。
我的意思是,程序检查新条形图,trailingstop = 0,所以没有调用尾随止损功能,然后如果新条形图打开,它检查EMA交叉,没有交叉(我得到超时错误的时候,EMA线离交叉还很远),所以程序返回(0)
没有任何周期!它怎么能被超时终止呢?
这不是一个周期吗?
这不是一个周期吗?
我的意思是在EA被终止的时候,EMA线还远未交叉,所以没有调用NewOrder函数,所以你所说的周期(在NewOrder函数内)没有运行。
增加了IsStopped条件