这是一个程序问题.
我试图显示一个调整后的出价线与每一个滴答。
在我的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();谢谢!
吉恩
发布于 2018-02-13 15:16:38
在OnInit()中创建对象,然后仅在OnTick()中移动。此外,ObjectCreate返回一个bool,所以最好检查该函数是否返回true,然后移动到您的级别,而不是立即。
发布于 2018-02-13 15:16:28
让我们检查一下螺母和螺栓:
在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();发布于 2018-02-13 17:19:14
@ self 3666197,此代码也适用于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();https://stackoverflow.com/questions/48769100
复制相似问题