答案 0 :(得分:0)
鉴于上述情况,
矩形放置&格式化应该明确编程,最好使用一个主要的,可重用的GUI对象处理函数模板的想法,如下所示:
void UpdateRECTANGLE( int const anObjIdNUM,
datetime const fromTIME,
datetime const toTIME,
double const fromPRICE,
double const toPRICE,
color const aCOLOR = clrDarkBlue,
int const aLineTHICKNESS = 2,
int const aLineTYPE = STYLE_SOLID,
){
#define aMainWINDOW 0
string anInterimObjNAME = StringFormat( "GUI_RECTANGLE[%6d]", anObjIdNUM );
if ( ObjectFind( anInterimObjNAME ) == aMainWINDOW )
ObjectDelete( anInterimObjNAME );
else: ObjectCreate( ChartID(), anInterimObjNAME, OBJ_RECTANGLE, 0, fromTIME, fromPRICE,
toTIME, toPRICE
);
ObjectSet( anInterimObjNAME, OBJPROP_COLOR, aCOLOR );
ObjectSet( anInterimObjNAME, OBJPROP_BACK, True );
ObjectSet( anInterimObjNAME, OBJPROP_WIDTH, aLineTHICKNESS );
ObjectSet( anInterimObjNAME, OBJPROP_STYLE, aLineTYPE );
ObjectSet( anInterimObjNAME, OBJPROP_SELECTABLE, GUI_SELECTABLE ); // ----------------------------------------- AVOIDS GUI interactions
ObjectSet( anInterimObjNAME, OBJPROP_SELECTED, False );
return;
}
<强>尾声:强>
人们也可能知道,自定义指标是一个有点危险的代码片段,用于放置任何繁重的处理,复杂的TimeSeries重新计数,外部AI / ML代码事务处理,因为,所有,是全部< / strong> MetaTrader终端图表全部共享,是,确实,所有SHARE 单个线程(可以想象,阻塞/长时间挂起处理可能会导致所有依赖进程,如果全部(再次, YES,ALL )必须等待,直到一个共享的阻塞线程获得足够的CPU时钟来完成所有其他图形专家及其相关的自定义指标调用的所有请求队列的处理我们的电话请求已经放在我们面前了。
听起来不是很危险吗?相信我,它是...... 很多!