MQL4调整了出价线

时间:2018-02-13 14:29:03

标签: mql4

这里只是一个编程问题......

我试图在每个刻度线上显示调整后的出价线。

在我的EA中,我包含以下代码来创建水平线对象,然后每次都移动它。

问题是这条线没有显示出来。

你能帮我在我的图表上显示这条线吗?

if (!ObjectFind(0,"Hline"))
  {
     ObjectCreate(0,"HLine", OBJ_HLINE , 0 , 0, Bid + dBidAdjustLine * dPoint);
     ObjectSet("HLine", OBJPROP_STYLE, STYLE_SOLID);
     ObjectSet("HLine", OBJPROP_COLOR, Red);
     ObjectSet("HLine", OBJPROP_WIDTH, 2);     

  }
  else
     ObjectMove(0,"HLine",0,0,Bid + dBidAdjustLine * dPoint);
  ChartRedraw();

谢谢!

3 个答案:

答案 0 :(得分:1)

OnInit()中创建对象,然后仅移入OnTick()。此外ObjectCreate返回bool,因此最好检查该函数是否返回true,然后移至您的级别,而不是立即

答案 1 :(得分:0)

让我们检查一下螺母和螺栓:

OnTick(){ ... } 处理程序代码段内运行此操作并发布PrintScreen以显示该产品:

double   aLevel = Bid + dBidAdjustLine * dPoint;
Comment( "Level: ", aLevel, "LastError: ", GetLastError() );
// ---------------------------------------------------------------------    
if ( !ObjectFind(   0, "Hline" ) ) 
{     ObjectCreate( 0, "HLine", OBJ_HLINE,     0 , 0, aLevel );
      ObjectSet(       "HLine", OBJPROP_STYLE, STYLE_SOLID );
      ObjectSet(       "HLine", OBJPROP_COLOR, Red );
      ObjectSet(       "HLine", OBJPROP_WIDTH, 2 );
      }
else
      ObjectMove(   0, "HLine", 0, 0, aLevel );
// ---------------------------------------------------------------------
ChartRedraw();

答案 2 :(得分:0)

@ user3666197,此代码也适用于OnTick(),它解决了您提出的自我修复问题:

if (!ObjectCreate( 0, "HLine", OBJ_HLINE, 0 , 0, Bid + dBidAdjustLine * dPoint));
      double   aLevel = Bid + dBidAdjustLine * dPoint;
      if (ObjectFind(0,"Hline" ) ) 
      {
         ObjectMove(0, "HLine", 0, 0, aLevel );
         ObjectSet("HLine", OBJPROP_STYLE, STYLE_SOLID );
         ObjectSet("HLine", OBJPROP_COLOR, Red );
         ObjectSet("HLine", OBJPROP_WIDTH, 2 );
      }      
      ChartRedraw();