Objectgetとobjectgetvaluebyshiftに関する質問

 

HI can anyone help with this.私は水平線 またはトレンドラインから価格値を取得するEAを持っています。しかし、私は次のようなコードを持っていますが、それはどちらの値も拾うことはできません。もし私がObjectgetvaluebyshiftを削除したら、水平線の価格を拾いますし、その逆も同様です。しかし、両方の値を認識し、チャート上のどのライン(trandまたはh_line)からでも値を取得する必要があります。多分、誰かが何をすべきか理解できるように、ちょっとしたコードを投稿してくれるでしょう。

ありがとうございます。

tp =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1)) =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1))|| (ObjectGet( TP_P, OBJPROP_PRICE1));

 

ObjectGetValueByShift() 文字列名, int シフト)

OBJPROP_PRICE1 は "シフト" ではありません...シフトは値を取得したいバー番号です -- トレンドラインや類似のオブジェクトに適用できます。

double tp = ObjectGetValueByShift( TP_P, 0); // TP_P はオブジェクトの名前を含む文字列変数で、現在のバーでのラインの値が必要であると仮定しています。

 
phy:

ObjectGetValueByShift() 文字列名, int シフト)

OBJPROP_PRICE1 は "シフト" ではありません...シフトは値を取得したいバー番号です -- トレンドラインや類似のオブジェクトに適用できます。

double tp = ObjectGetValueByShift( TP_P, 0); // TP_P はオブジェクトの名前を含む文字列変数で、現在のバーでのラインの値が必要であると仮定しています。


私はあなたが説明したことを試してみました。それは動作するように見えません。他の情報は素晴らしいだろう。
 

gavin:

I have tried what you have explianed. It doesnt seen to work. Any other info would be great.

トレンドラインとh_lineの両方から値を得ることができるのでしょうか?

 

あなたが何をしたのか、私たちにはわかりません。

 

これは私が持っていたものです。

--------------------------------------------------------

文字列TP_P;
もし(OrderType()==OP_BUY)TP_P = BTP。
if (OrderType()==OP_SELL) TP_P = STP; if (OrderType()==OP_SELL) TP_P = STP;

double tp;

tp =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1)) || (ObjectGet( TP_P, OBJPROP_PRICE1))|| (ObjectGet( TP_P, OBJPROP_PRICE1));

-----------------------------------------------------------------------------------------------------------------

その後、私は代わりにこれを入れて、あなたが言ったことyeah?

----------------------------------------------------------

tp = ObjectGetValueByShift( TP_P,0);

 

助っ人は?

 
if (ObjectType(TP_P) == OBJ_TREND) tp = ObjectGetValueByShift(TP_P, shift);
else                               tp = ObjectGEt(TP_P, OBJPROP_PRICE1)
 
WHRoeder:


今見ると、とてもシンプルですね。助けてくれて本当にありがとう。私が望んでいたとおりになりました。ありがとうございます。
 

こんにちは。

トレンドラインから価格を取得するために以下のようなコードを持っています。これは動作しません。何か手助けがあればお願いします。

int obj_total = ObjectsTotal();
文字列名
for(int j = 0; j<obj_total; j++)
{
name = ObjectName(j);
Print(j, "オブジェクト - ", 名前);

if(ObjectType(name) ==OBJ_TREND&& name == "Trendline1-m30")
{
価格1 = ObjectGetValueByShift(name, 0);
}

if(ObjectType(name) == OBJ_TREND && name == "トレンドライン2-m30")
{
価格2 = ObjectGetValueByShift(name, 0);
}

 

こんにちは、コードを投稿するときはSRC ボタンを使ってください。

黄色で 示したコードはすべて「for」ループの外側にあります。

そのため、'name'の値は常に最終的なオブジェクトの名前になります。

int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
   {
   name = ObjectName(j);
   Print(j, "Object - ", name);
   }
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
      {
       price1 = ObjectGetValueByShift(name, 0);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
      {
       price2 = ObjectGetValueByShift(name, 0);
      }


おそらく、これを試してみてください(price1 と price2 はすでにどこかで宣言されていると仮定します)。

   int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
        }
     }
理由: