新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 430

 
igrok333:

写了这个代码。

元编辑喃喃自语。



它为什么要交配?


#属性严格

你的pr 是否被初始化了?

 
igrok333:

写了这个代码。

元编辑喃喃自语。
它为什么要交配?


#属性严格

那里清楚地写着,在第553行可以使用一个没有值的变量。试着写bool pr=false; 这将骗过编译器,但你最好好好检查。毕竟,如果订单类型是挂单,你仍然会有没有价值的pr...。

 
Roman Sharanov:

on the previous one, and what's here from mql4?the OnTick() function?

这个问题在关于mql4语言的文章中提到了,所以我立刻注意到了Time[0]。

仔细观察后,就会发现这是一个用户定义的数组。

而这里是文件中的一个评论。

注意事项

该函数使用了同步调用--这意味着该函数会等待执行所有在它被调用之前被放在图表队列中的命令,因此该函数可能会很耗时。如果你在图表上处理大量的对象,你应该牢记这一点。

由于一个价格坐标中的一个对象可以有几个值,所以有必要指定行号。这个功能只能应用于以下对象。

  • 趋势线 (OBJ_TREND)
  • 角度的趋势线 (OBJ_TRENDBYANGLE)
  • 江恩线(OBJ_GANNLINE)。
  • 等距通道 (OBJ_CHANNEL) - 2行
  • 线性回归通道 (OBJ_REGRESSION) - 3行
  • 标准偏差通道(OBJ_STDDEVCHANNEL) - 3行
  • 带箭头的线(OBJ_ARROWED_LINE)。


 
Artyom Trishkin:

你的pr 是否被初始化了?

我以为只要声明就可以了。
我以为它在声明时被初始化为零。
 
STARIJ:

它明确指出,在第553行,可以使用一个没有值的变量。尽量写成bool pr=false;这样会骗过编译器,但最好能正确检查一切。毕竟,如果订单类型是挂单,你仍然会有没有价值的pr...

谢谢你提醒我关于待定的订单)



这是正确的做法吗?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {  
         pr=false; 

         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  }  
 
igrok333:

谢谢你提醒我停顿的问题)
,这样做对吗?

if (pr==false)等同于 if (!pr)
if (pr==true)等同于 if (pr)

我使用 "警报"而不是 "打印"--它应该立即出现,而无需打开日记。而且没有任何额外的信息

 
Вместо
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
короче
if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), Bid, 30 );
if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), Ask, 30 );
или просто
pr=OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 30 );


 
STARIJ:

if (pr==false)等同于 if (!pr)
如果(pr==true)等同于如果(pr)。

我使用Alert 而不是Print--它立即显示在屏幕上,而不用打开日记。而且没有任何额外的信息

我其实是在说把pr 放在代码中))
 
Дед пенсионер:
我们可以这样写OrderClosePrice()吗?

我们在交易结束后得到OrderClosePrice()。
 
igrok333:
是否可以像这样写OrderClosePrice()?我们在交易结束后收到OrderClosePrice()。

你可以。但要小心。对于一个未结头寸,它返回收盘价。相应地:买入--出价,卖出--要价