차트에 주문 유형(판매/구매)을 표시하는 방법은 무엇입니까? - 페이지 3

 
pro_ :

그것이 당신을 위해 작동한다면 - 좋습니다. 나는 기쁘다. 그러나 내 견해는 모든 지표가 가능한 한 보편적이어야 하며 특정 상황에만 적합하지 않아야 한다는 것입니다. 한 번만 하면 되지만 제대로 하면 위치를 변경해야 하거나 상황이 바뀌면 올바르게 작동합니다.

어쨌든, 당신은 환영합니다.

작동하지 않습니다. 개체를 만든 다음 다음 틱에서 다시 만들려고 하면 실패합니다. . . 따라서 첫 번째 주문이 매수이고 두 번째 주문이 매도인 경우 텍스트는 매수에서 매도로 업데이트되지 않습니다.
 
앞서 말했듯이 코드에는 많은 오류가 있습니다. 나는 질문자가 스스로 작업하고 코딩을 조금 더 이해하기를 바랐습니다. 그것은 그의 의도가 아닌 것 같습니다. 불행히도 나는 그를 위한 코드를 작성할 시간이 없습니다. 나는 그에게 완성품 이 아니라 일을 시작할 수 있는 무언가를 주었다.
 
RaptorUK :
작동하지 않습니다. 개체를 만든 다음 다음 틱에서 다시 만들려고 하면 실패합니다. . . 따라서 첫 번째 주문이 매수이고 두 번째 주문이 매도인 경우 텍스트는 매수에서 매도로 업데이트되지 않습니다.


작동하지만 마지막 주문만 표시합니다. 현재 주문으로 변경하는 방법을 모르겠습니다!
 

좋은 습관인지 아닌지는 모르겠지만 "."로 init() 및 ObjectSetText 에 레이블을 만듭니다.

나는 아직 완전히 빈 텍스트로 레이블을 배치하는 방법을 찾지 못했습니다. 시도하면 "레이블"이라는 텍스트가 나타납니다.

물론 필요한 레이블 수를 알고 있는 한 괜찮습니다.

본문에서 필요에 따라 초과 라벨을 삭제하고 새 라벨을 추가하는 것은 그리 어렵지 않을 것이라고 생각합니다.

이것은 레이블을 생성하기 위해 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

사유: