这里只是一个编程问题......
我试图在每个刻度线上显示调整后的出价线。
在我的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();
谢谢!
让
答案 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();