OrderModify()问题

 

你好,MQL4论坛。

{OrderModify(ticket,0,Ask-500*Point,0,0,Blue);}}}}

上面的代码是有效的,但随着卖价的上升或下降,sl也随之上升或下降。

我试着这样做,作为一个解决方案...

{OrderModify(ticket,0,OrderOpenPrice()-500*Point,0,0,Blue);}}}}

(所选择的订单是一个买入订单)

我检查了日志中收到的错误,它显示为4051。有多个错误4051。基本上它不起作用,我很好奇是否有人以前解决过这个问题,并且有解释。

我不明白为什么这个解决方案不能工作(是的,我相信我正确地选择了订单,因为第一个错误的OrderModify解决方案在工作)。

谢谢你。

 
WhooDoo22:


我检查了正在接收的错误的日记,它读到4051。有多个错误4051。基本上它不工作,我很好奇以前是否有人解决过这个问题,并有一个解释。

当你遇到一个函数的问题时,请阅读该函数的文档 . . .OrderModify()<----- Click ME !!!

你不能将订单的开盘价修改为0.0 . . . 假设你已经正确地执行了OrderSelect(),使用OrderOpenPrice()作为你传递给OrderModify()的第二个参数

 

西蒙,我阅读了OrderModify()函数的文档,注意到所使用的例子是一个追踪止损。我不希望在EA中使用追踪止损。这是因为如果我使用追踪止损,(根据该例子)EA将需要市场在当前的sl上面移动x个点来修改sl到指定价格。基本上这太复杂了。我只是想在订单提交给市场后,给订单添加一个止损

不管怎么说,我目前也在尝试新的解决方案。

谢谢你。

 
WhooDoo22:

西蒙,我阅读了OrderModify()函数的文档,注意到所使用的例子是一个追踪止损。我不希望在EA中使用追踪止损。这是因为如果我使用追踪止损,(根据该例子)EA将需要市场在当前的sl上面移动x个点来修改sl到指定价格。基本上这太复杂了。我只是想在订单提交给市场后,给订单添加一个止损。

不管怎么说,我目前也在尝试新的解决方案。

谢谢你。

你需要让开盘价 保持不变,即OrderOpenPrice()试试。
 

西蒙。

战略测试员。

1.视觉模式

2.速度31

3.2010.12.29

4.欧元兑美元

5.M15

运行"仅公开价格",而不是每一个刻度。


MetaEditor。编辑 -> 查找...-> "//选择1."


选择1.=没有错误,但我显然不希望这样。

选择2.=日志标签->日志读取。"错误4051"。

谢谢你。

附加的文件:
test1.mq4  12 kb
 

显然,根据错误4051,在OrderModify()参数内使用OrderOpenPrice()函数 被认为是一个 "无效的函数参数"。我在想"?":)我可以保存OrderOpenPrice()的值,并将其包含在订单修改函数参数中,以实现我想做的事情,但真的吗?肯定有一个更简单的方法!对我来说,这又回到了老的磨刀石上。)

谢谢你。

 
WhooDoo22:
显然,根据错误4051,在OrderModify()参数内使用OrderOpenPrice()函数被认为是一个 "无效的函数参数"。
显而易见,你的代码是错误的。OrderOpenPrice()是好的。发布包括你的orderSelect在内的代码。
 

威廉。

显而易见,如果你想提供你的支持,我在一个链接中发布了EA,供你下载并在MetaEditor中查看。OrderSelect()函数 目前没有问题。你知道吗?我只为你发布这个,威廉。

//***************************************************
// EMERGENCY BUY ORDER STOP LOSS PROTECTION SECTION ;
//***************************************************

   OrderSelect(0,SELECT_BY_TICKET,MODE_TRADES); // was ticket.
   if(OrdersTotal()>0)                                                                         {
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderSend1==true)                                                                        {
//   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<=OrderOpenPrice()-500*Point)                     {
     
// choice 1.     
//     {OrderModify(ticket,OrderOpenPrice(),Ask-500*Point,0,0,Blue);}}}}
// choice 2.
     {OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice()-500*Point,0,0,Blue);}}}}

按照你的要求。

谢谢你。

 
WhooDoo22:

威廉。

显而易见,如果你想提供你的支持,我在一个链接中发布了EA,供你下载并在MetaEditor中查看。OrderSelect()函数目前没有问题。你知道吗?我只为你发布这个,威廉。

按照你的要求。

谢谢你。

0 不是一个有效的票号,甚至在策略测试器中 也不是,测试一下你的OrderSelect(),你自己就会知道了. . .
 

西蒙,我将进行测试以了解情况。

谢谢你。

 

啊哈!我把0号票换成了1号票,然后一切都像钟表一样工作。是的,我错了,威廉...OrderSelect()函数 是一个问题。很明显,OrderSelect()函数必须选择一张票。如果票号是0,EA会选择什么票? :O "?"。谢谢你们两位的帮助。

谢谢你们。