[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 484

 

向交易功能发送了不正确的参数,例如,不正确的符号、未识别的交易、负的价格公差、不存在的票号,等等。 你需要改变程序逻辑。


试试第二个参数,把OrderOpenPrice()而不是零放进去

 
sergeev:

养成打印所有可能与错误有关的参数的习惯。

如果(!OrderModify(...)) { 打印(GetlastError()+....OrderModify参数列表 ); }



是的,这是个好习惯。谢谢。))

FOReignEXchange 03.07.2011 18:35

尝试用第二个参数而不是零来放OrderOpenPrice()。

是的,这是正确的。))而且由于某种原因,我确信你不能设置你不需要修改的参数,因为这将导致另一个错误。是否有与我所说的类似的东西?

这样的事情在我的脑海中是固定的。

该函数试图将参数改为相同的值。

 
tol64:


而且由于某种原因,我确信你不能设置你不想修改的参数,因为那会引起另一个错误。是否有与我所说的类似的东西?

像这样的事情是固定在脑子里的。

该函数试图将参数改为相同的值。


你可以只改变一个参数,其余的保持不变,然后到处写OrderOpenPrice(), OrdsrStopLoss()等等。
 
你好!谁有某一价位的拖网的例子,并有一定的间距?谢谢你!
 

这里是我的另一个问题。关于我上面给出的代码例子(tol64 03.07.2011 18:20)。

该程序并不总是同步不同仓位的止损。也就是说,选择了头寸,满足了条件,它也被记录在日记中,但止损没有被修改。

在上图中,票据4的仓位的止损应该被修改,设置为与票据1的仓位相同的值。程序通过打印达到了这一点,但进一步的执行似乎被阻止了。

   for(count = 0; count < OrdersTotal(); count++)
      {  
         if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) 
            Print("Ticket: ",OrderTicket(),", Type: ",OrderType(),", Magic: ",OrderMagicNumber(),", StopLoss: ",OrderStopLoss());

         double Op_Price = NormalizeDouble(OrderOpenPrice(),Digits);
         double Stp_Loss = NormalizeDouble(OrderStopLoss(),Digits);
         
         if(OrderMagicNumber() == Magic_SP01)
            {  if(OrderType() == OP_SELLSTOP)
                  {  if(Low_1 < SP_Level_01 && new_val > Op_Price && new_val < Open_0)  
                        {  OrderModify(OrderTicket(),new_val,OrderStopLoss(),0,0,DeepPink);  }

                     if(!(global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)) Print("Условие не выполняется!");  else
                        {  OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink);
                           Print("Условие ModifyOrder исполнилось: global_trailing_SP: ",global_trailing_SP,", Stop Loss: ",OrderStopLoss());  }
                  }
               if(OrderType() == OP_SELL)
                  {  if(global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)  
                       {  OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink);  }
                  }
            }

         ...

因为条件没有得到满足的变体也没有被记录。尝试了这么多不同的组合,但都没有成功。请帮助。

 

还有这里。

 if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) 

这不正是我们要做的吗?

 if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)=true) 
 
FOReignEXchange:

还有这里。

这不正是我们要做的吗?


不,它不会,反正它返回的是bool。
 
tol64:

这里是我的另一个问题。关于我上面给出的代码例子(tol64 03.07.2011 18:20)。

该程序并不总是同步不同仓位的止损。也就是说,选择了头寸,满足了条件,它也被记录在日记中,但止损没有被修改。

在上图中,票据4的仓位的止损应该被修改,设置为与票据1的仓位相同的值。程序通过打印达到了这一点,但进一步的执行似乎被阻止了。

因为条件没有得到满足的变体也没有被记录。尝试了这么多不同的组合,但都没有成功。我希望得到您的帮助。


Print() 在你提供的函数中直接输出变量 global_trailing_SP 的值。

你从哪里读取这个变量的值?

并替换代码中的零(高亮)。

OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink)

对OrderTakeProfit()

 
FOReignEXchange:

如果没有条件,那么这个条件是为了什么呢?而订单数据就不会被使用。


然后告诉我哪个代码更好

if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) 

写成:

if(!OrderSelect(count,SELECT_BY_POS,MODE_TRADES)) continue;
 
abolk:


然后,告诉我什么是更好的代码

写成:


我不明白?我只是在帮助中寻找,那里的OrderSelect() 使用一个条件。我没有见过任何地方没有真正的。

If是一个条件运算符。而且括号里应该有一个条件。在我看来,这种方式更符合逻辑。虽然可能没有什么区别。