分形的突破--图解 - 页 2

 

我目前得到了结尾的括号"}"错误。


但我重新检查了这些函数,它们都被正确处理了。


我尝试了另一种方法,继续得到这个相同的错误。

 
ZacharyRC:

我目前得到的是结尾的括号"}"错误。


但我重新检查了这些函数,它们都被正确处理了。


我尝试了另一种方法,继续得到这个相同的错误。


我已经找到了这个错误,算了吧!
 
ZacharyRC:

嘿,deVries。


我在最后的代码中遇到了问题,试图在这么多点之后把修改止损放到收支平衡。


你看到任何明显的错误了吗?

你需要再次阅读:什么是函数返回值?你 不想知道你的OrderModify()是怎么回事吗? 如果你的OrderSelect()失败了会怎样?

 
if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==(OP_BUY)&&(Move.BE))
{

这不是获取你的EA交易的正确方式

你不能确定0号仓位是来自你的EA,你必须要管理好

始终使用一个循环来获得所有未完成的交易,然后选择这种方式,你有

你的EA正在交易的符号()和你的EA给出的MAGICNUMBER。

.

我的方法是这样的

 

 for(i = OrdersTotal()-1; i >= 0 ; i--)         //always counting down checking trades
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;     // if false we abort the loop
     if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;   //if selected trade not symbol or magicnumber next one
 
RaptorUK:

你需要再次阅读:什么是函数的返回值? 你不想知道你的OrderModify()是怎么回事吗? 如果你的OrderSelect()失败了会怎样?


我今晚一定会重新阅读,我还没有完全掌握。
deVries:

这不是获取你的EA交易的正确方法

你不能确定0号仓位是来自你的EA,你必须要管理

始终使用一个循环来获取所有未完成的交易,然后进行选择,这样你就有了

你的EA正在交易的符号()和你的EA给出的MAGICNUMBER

.

我的方法是这样的

我上次使用的是for()循环,出现了几个错误,就放弃了。将再次尝试,并重新阅读文本。


谢谢你们,先生们。

 
RaptorUK:

你需要再次阅读:什么是函数的返回值? 你不想知道你的OrderModify()是怎么回事吗? 如果你的OrderSelect()失败了会怎样?


我今天感觉有点慢!让这些话沉淀下来后,我意识到MQL4语言可以成为寻找错误的最佳伴侣,而不是留言板。



TY RaptorUK!

 
ZacharyRC:

我今天感觉有点迟钝!让这句话沉淀下来后,我意识到MQL4语言可以成为寻找错误的最佳伴侣,而不是留言板。

没错,100%正确。 :-)
 
deVries:

这不是获取你的EA交易的正确方式

你不能确定0号仓位是来自你的EA,你必须要管理好

始终使用一个循环来获得所有未完成的交易,然后选择这种方式,你有

你的EA正在交易的符号()和你的EA给出的MAGICNUMBER。

.

我的方法是这样的

啊哈,我明白了,这让我可以在我的交易中循环,分辨出哪个是哪个,并与神奇数字相匹配。到目前为止,循环是最好的方式。

 
ZacharyRC:

啊哈,我明白了,这让我可以在我的交易中循环往复,分辨哪个是哪个,并与神奇数字相匹配。循环是迄今为止最好的方法。

你用得越多,你就能学到更多的技巧....。
 

仍然有困难。我已经进行了错误的调查,以找出原因。


日志已经报告了。

1)错误4051=不正确的参数

2) 修改订单的票据无效

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
if(OrderType()==OP_BUY)
{

 if(Move.BE && StopLoss > 0) 
 {
   if(Bid - OrderOpenPrice() >= Point * StopLoss)
     {
       if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
        {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
 }
  }
   }
    }
 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 }
  }
   }
    }