2017-05-23 17 views
0

は、私は次のような戦略テスターチャート上のいくつかのオブジェクトを置くことをどうにか:のCreateObject OnTick

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

} 

ただし、作成したオブジェクトは、現在の時刻と入札価格を移動しません。見ての通り、私は現在の時間と入札価格も印刷し、バックテストを開始すると、現在時刻と入札価格の両方がプリントアウトで変更されていることがわかります。オブジェクトが現在の時間と入札価格で動いていない理由は何ですか?

答えて

2

ObjectCreate()戻り値。新しいオブジェクトを作成することができる場合のみ、オブジェクトが描画され、そのプロパティがパラメータとして設定されます。新しいオブジェクトを作成できない場合(その名前が許可されていない場合、オブジェクトはすでに存在しています)、falseを返します。

OnInit()にオブジェクトを作成し、のOBJPROP_TIME1 and OBJPROP_PRICE1を変更する必要があると思います。または、ブール値のパラメータで他の方法でオブジェクトが存在することを制御します。

ObjectSetInteger(0,"test9999",OBJPROP_TIME1,TimeCurrent());を使用して時間パラメータを移動しますが、各ティックを更新するのはあまり意味がありません。少なくとも、1つのバーで十分であれば、オブジェクトを移動させることはありません。 ObjectSetDouble(0,"test9999",OBJPROP_PRICE1,Bid-0.03); - オブジェクトを価格スケールに沿って移動する場合。

OBJ_HLINE - そのパラメータOBJPROP_TIME1はあまり意味がありませんが、価格のみが重要です。 2つの価格パラメータまたは時間パラメータを持つオブジェクトがある場合は、OBJ_TREND(トレンドライン) - 両方を更新するOBJPROP_PRICE1 & OBJPROP_PRICE2

関連する問題