チャート上に注文の種類(Sell/Buy)を表示するには? - ページ 3

 
pro_:

それがあなたにとって有効であるなら--結構なことです。嬉しいことです。しかし、私の考えでは、どんなインジケータもできる限り普遍的であるべきで、ある特定の状況だけに通用するものであってはならない。もし、何かを変更する必要があったり、ポジションの状況が変わったりしても、正しく機能するように、一度やったことはきちんとやるのです。

いずれにせよ、どういたしまして。

オブジェクトを作成し、次のティックで再び作成しようとすると、これは失敗します。最初の注文が買い、2回目の注文が売りの場合、テキストは買いから売りに更新されません。
 
前にも言いましたが、コードにたくさんの間違いがあります。私は、質問者が自分で作業して、もう少しコーディングを理解することを望んでいました。それは彼の意図ではないようです。そして残念ながら、私は彼のためにコードを書く時間がありません。私は彼に作業を開始するためのものを与えただけで、完成品では ありません。
 
RaptorUK:
オブジェクトを作成し、次のティックで再度作成しようとすると、これは失敗します。最初の注文が買い、2回目の注文が売りの場合、テキストは買いから売りに更新されません。


これは動作しますが、最後の注文を表示するだけです。現在の注文に変更する方法がわかりません。
 

良い方法かどうかわかりませんが、init()とObjectSetTextで ラベルを作成するときは、". "だけにして います。

まだ、完全に空のテキストでラベルを配置する方法がわかっていません。試してみると、"Label" というテキストが表示されます。

もちろん、必要なラベルの枚数がわかっていればそれでいいのですが。

余分なラベルを削除して、必要なときに新しいラベルを本体に追加するのは、それほど難しいことではないと思うんだ。

これは init() の中でラベルを作成するために使っているコードだ。

int y=20;
for(int x=1;x<=10;x++)
{
ObjectCreate("Message"+x, OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Message"+x, OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Message"+x, OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Message"+x, OBJPROP_YDISTANCE, y);// Y coordinate
   ObjectSetText("Message"+x,".",8,"Arial",CLR_NONE);  // Empty Labels
   y=y+15;
 

あ、あとdeinit()で

for(int x=1;x<=10;x++)
 {
 ObjectDelete("Message"+x) ;   
 }
 
Konnj:

動作はするのですが、前回の注文が表示されるだけです。現在の注文を表示するように変更する方法がわかりません。
あなたの最新のコードを投稿してください。. .
 
{
   int    counted_bars=IndicatorCounted();
   int pos;
   string OrderTip = "OT";
   string ottt;
   color LabelColor3;

       for(int i=0;i<OrdersTotal();i++)
                    {
                     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
                     if(OrderSymbol()==Symbol() )
                       {
                        if(OrderType()==OP_BUY)  pos++;
                        if(OrderType()==OP_SELL) pos++;
                       }
                    }            
                    
      if (OrderType()==OP_BUY) { ottt="Buy";  LabelColor3 = DodgerBlue; } 
      if (OrderType()==OP_SELL){ ottt="Sell"; LabelColor3 = Red; }
      else ottt="";
     
      ObjectCreate(OrderTip, OBJ_LABEL, 0 , 0, 0, 0);
      ObjectSet(OrderTip, OBJPROP_CORNER, 1);
      ObjectSet(OrderTip, OBJPROP_XDISTANCE, 10);
      ObjectSet(OrderTip, OBJPROP_YDISTANCE, 15);
      ObjectSetText(OrderTip, "Order Type: "+ottt, 8, "Tahoma",LabelColor3);
}
 
Konnj:

私は、コード全体を意味します。しかし、気にしないでください......これらの変更を試してみてください。

{
   int    counted_bars=IndicatorCounted();
   int pos;
   string OrderTip = "OT";
   string ottt = " ";
   color LabelColor3 = Black;

   for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() )
         {
         if (OrderType() == OP_BUY) { ottt = "Buy";  LabelColor3 = DodgerBlue; } 
         if (OrderType() == OP_SELL){ ottt = "Sell"; LabelColor3 = Red; }
         }
      }            
     
   if (ObjectFind(OrderTip) < 0) ObjectCreate(OrderTip, OBJ_LABEL, 0 , 0, 0, 0);

   ObjectSet(OrderTip, OBJPROP_CORNER, 1);
   ObjectSet(OrderTip, OBJPROP_XDISTANCE, 10);
   ObjectSet(OrderTip, OBJPROP_YDISTANCE, 15);
   ObjectSetText(OrderTip, "Order Type: "+ottt, 8, "Tahoma",LabelColor3);
}
 
今、動いています、ありがとうございました。
 

この非常に古いスレッドと関係のない問い合わせの投稿はご遠慮ください。

あなたのクエリを再投稿しました。

https://forum.mql4.com/72256