0

我设法将一些对象放在策略测试图表上,如下所示:

void OnTick() {

ObjectCreate(0,"test9999",OBJ_ARROW_LEFT_PRICE,0,TimeCurrent(),SymbolInfoDouble(_Symbol,SYMBOL_BID)-0,03);
ObjectCreate(0,"test9991",OBJ_ARROW_RIGHT_PRICE,0,TimeCurrent(),SymbolInfoDouble(_Symbol,SYMBOL_BID)-0,03);
ObjectCreate(0,"test9992",OBJ_ARROW_SELL,0,TimeCurrent(),SymbolInfoDouble(_Symbol,SYMBOL_BID)+0,1);
ObjectCreate(0,"test9993",OBJ_VLINE,0,TimeCurrent(),SymbolInfoDouble(_Symbol,SYMBOL_BID)+0,1);

Print(TimeCurrent());
Print(SymbolInfoDouble(_Symbol,SYMBOL_BID));

}

但是,创建的对象不会随着当前时间和投标价格移动。可以看出,我还打印了当前时间和出价,当我开始回测时,我看到打印出的当前时间和出价都发生了变化。任何想法为什么对象没有随着当前时间和投标价格移动?

4

1 回答 1

2

ObjectCreate()仅当可以创建新对象时才返回.True TRUE,然后绘制对象并将其属性设置为参数。FALSE如果无法创建新对象(如果不允许其名称、对象已存在等),则返回 false。

我认为您应该在 中创建对象,OnInit()并更改功能。或者使用布尔参数控制对象以其他方式存在。OBJPROP_TIME1 and OBJPROP_PRICE1OnTick()

用于ObjectSetInteger(0,"test9999",OBJPROP_TIME1,TimeCurrent());移动其时间参数,但请记住,更新每个刻度并没有多大意义,至少这不会导致移动对象,每个柱一次就足够了。 ObjectSetDouble(0,"test9999",OBJPROP_PRICE1,Bid-0.03);- 用于沿价格范围移动对象。

如果你有OBJ_HLINE- 它的参数OBJPROP_TIME1没有多大意义,只有价格很重要。如果您有一个具有两个价格或时间参数的对象,例如OBJ_TREND(趋势线)- 更新两者OBJPROP_PRICE1 & OBJPROP_PRICE2

于 2017-05-23T20:44:19.413 回答