MQL4 调整后的出价线

MQL4 adjusted bid line

这里只是一道编程题...

我正在尝试显示每个价格变动时的调整出价线。

在我的 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();

谢谢!

让我们检查一下具体细节:

运行 这在 OnTick(){ ... } 处理程序代码段和 post 显示产品的 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();

OnInit() 中创建对象,然后仅在 OnTick() 中移动。另外 ObjectCreate returns 一个 bool 所以最好先检查那个函数 returns 是否为真,然后再移动到你的级别,而不是立即

@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();