초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1377

 
Fast235 # :

참가자 중 한 명이 말했듯이 공장으로.

이해할 수 없기 때문에

개체에 고유 번호를 할당해야 하며 이 번호는 매개변수에서 수집해야 합니다.

-   영업시간   물체

- 대상 기간

- 개체의 시간 프레임

예를 들어:

 int Num= TimeOpen+ Period * 0.0001

글쎄, 나는 이 숫자가 배타적일지 확신하지 못하며 int의 데이터 유형은 적합하지 않지만 바람직하게는 int

 
Mikhail Toptunov # :

개체에 고유 번호를 할당해야 하며 이 번호는 매개변수에서 수집해야 합니다.

-   영업시간   물체

- 대상 기간

- 개체의 시간 프레임

예를 들어:

글쎄, 나는 이 숫자가 배타적일지 확신하지 못하며 int의 데이터 유형은 적합하지 않지만 바람직하게는 int

고유 번호가 자동으로 할당됩니다 - tr_Deal73772984

질문이 무엇인지 명확하지 않습니다

 

이 간단한 코드를 참조하십시오

   for ( uint i= 0 ; i<total; i++)
     {
       //--- try to get deals ticket
       if ((ticket= HistoryDealGetTicket (i))> 0 )
        {
         symbol= HistoryDealGetString (ticket, DEAL_SYMBOL );
         if (symbol!= Symbol ())
             continue ;
         //--- get deals properties
         price = HistoryDealGetDouble (ticket, DEAL_PRICE );
         time  =( datetime ) HistoryDealGetInteger (ticket, DEAL_TIME );
         type  = HistoryDealGetInteger (ticket, DEAL_TYPE );
         entry = HistoryDealGetInteger (ticket, DEAL_ENTRY );
         profit= HistoryDealGetDouble (ticket, DEAL_PROFIT );
         id    = HistoryDealGetInteger (ticket, DEAL_POSITION_ID );
         //---
         text  = DoubleToString (profit, 2 );
         //---
         //+------------------------------------------------------------------+
         //|                                                                  |
         //+------------------------------------------------------------------+
         if (price && time && symbol== Symbol ())
           {
             //--- create price object
            name=prefix+ "Deal" + string (ticket);
            name2=prefix+ "Price" + string (ticket);
             if (entry== DEAL_ENTRY_IN )
              {
               ObjectCreate ( 0 ,name, OBJ_ARROW_LEFT_PRICE , 0 ,time,price, 0 , 0 );
                 {
                  timeOpen=time;
                  priceOpen=price;
                 }
              }
             if (entry== DEAL_ENTRY_OUT )
              {
               // if(ShowRightTabTab)
               //---создадим метку на закрытии
               ObjectCreate ( 0 ,name, OBJ_ARROW_RIGHT_PRICE , 0 ,time,price, 0 , 0 );
               //--- нарисуем линию  сделки
               ObjectCreate ( 0 ,name+ "_trend" , OBJ_TREND , 0 ,timeOpen,priceOpen,time,price);
               //--- добавим на график результат сделки
               ObjectCreate ( 0 ,name2, OBJ_TEXT , 0 ,time,price+offset* _Point );
               if (profit> 0.0 )
                  clr=inpColorTP;
               else
                  clr=inpColorSL;
              }
 

안녕하세요.

피보나치 수준 을 보이거나 보이지 않게 만드는 방법은 무엇입니까? 일반적으로 일부 수준을 제거해야 합니다. OBJPROP_LEVELS 속성을 사용하면 처음 N 레벨을 사용할 수 있게 됩니다. 각 수준에 대한 가시성 속성을 설정하거나 완전히 제거하는 방법은 무엇입니까?

 
leonerd # :

안녕하세요.

피보나치 수준 을 보이거나 보이지 않게 만드는 방법은 무엇입니까? 일반적으로 일부 수준을 제거해야 합니다. OBJPROP_LEVELS 속성을 사용하면 처음 N 레벨을 사용할 수 있게 됩니다. 각 수준에 대한 가시성 속성을 설정하거나 완전히 제거하는 방법은 무엇입니까?

다소 이렇습니다.

 double fiboLev[] = { 0.0 , 0.236 , 0.382 , 0.5 , 0.618 , 0.764 , 0.882 , 1.0 , 1.236 , 1.382 , 1.618 , 2.0 , 2.236 , 2.618 , 3.236 , 3.618 , 4.236 };
/************************fiboCreate function*************************/
void fiboCreate( datetime t0, double p0, datetime t1, double p1)
 {
   long chartID = ChartID ();
   if ( ObjectFind (chartID, fiboName) < 0 )
   {
     ObjectCreate (chartID, fiboName, OBJ_FIBO , 0 , t1, p1, t0, p0);
     ObjectSetInteger (chartID, fiboName, OBJPROP_WIDTH , 2 );
     ObjectSetInteger (chartID, fiboName, OBJPROP_COLOR , clrFibo);
     ObjectSetInteger (chartID, fiboName, OBJPROP_LEVELS , 23 );
     ObjectSetInteger (chartID, fiboName, OBJPROP_LEVELCOLOR , clrFibo);
     for ( int i = 0 ; i < 17 ; i++)
     {
       ObjectSetDouble (chartID, fiboName, OBJPROP_LEVELVALUE , i, fiboLev[i]);
       ObjectSetString (chartID, fiboName, OBJPROP_LEVELTEXT , i, "%$ (" + DoubleToString (fiboLev[i]* 100 , 1 )+ ")" );
     }
   }
   else
     if ( ObjectFind (chartID, fiboName) == 0 )
     {
       ObjectSetInteger (chartID, fiboName, OBJPROP_TIME , 0 , t0);
       ObjectSetDouble (chartID, fiboName, OBJPROP_PRICE , 0 , p0);
       ObjectSetInteger (chartID, fiboName, OBJPROP_TIME , 1 , t1);
       ObjectSetDouble (chartID, fiboName, OBJPROP_PRICE , 1 , p1);
     }
   ChartRedraw ();
 } /******************************************************************/

이것은 EA에서 발췌한 것이며 일부 변수는 여기에 정의되어 있지 않습니다. 이 코드는 컴파일되지 않습니다.

 

안녕하세요, 표준 수단을 사용하여 구조에서 오프셋이 있는 배열 요소 를 제거할 수 있습니까?


 struct OrderFib
  {
   double             id;
   double             Price[Umax];            
   int                type;
   int                PeriodUr50;   // № Периода
  } trade_buff[];

1 ) trade_buff[ 0 ]...
   trade_buff[ 1 ]... deleted
   trade_buff[ 2 ]...

2 ) trade_buff[ 0 ]...
   trade_buff[ 1 ]... 
 

내가 했어, 더 전문적으로 할 수 있습니까?

 //+----------Удаляем старый сигнал-----------------------------------+
void filterDeal_1( int tf)
  {
   for ( int i= 0 ; i<CountTrade; i++)
       if (trade_buff[i].tf == tf)
        {
         ArrayRemove (trade_buff,i, 1 );
         CountTrade--;
         i= 0 ;
        }
  }
 
Mikhail Toptunov # :

내가 했어, 더 전문적으로 할 수 있습니까?

안녕하세요, 배열의 요소를 제거하려면 배열의 끝에서 반복을 시작하십시오. 그러면 인덱스를 변경할 필요가 없습니다. 그는 순서대로 간다.

 for ( int i=CountTrade- 1 ; i>= 0 ; i--)
   {
   if (trade_buff[i].tf == tf)
      {
       ArrayRemove (trade_buff,i, 1 );
      }
   }
 
Aleksei Stepanenko # :

안녕하세요, 배열의 요소를 제거하려면 배열의 끝에서 반복을 시작하십시오. 그러면 인덱스를 변경할 필요가 없습니다. 그는 순서대로 간다.

정확합니다. 감사합니다!

 
Mikhail Toptunov # :

개체에 고유 번호를 할당해야 하며 이 번호는 매개변수에서 수집해야 합니다.

-   영업시간   물체

- 대상 기간

- 개체의 시간 프레임

예를 들어:

글쎄, 나는 이 숫자가 배타적일지 확신하지 못하며 int의 데이터 유형은 적합하지 않지만 바람직하게는 int

나중에 암호를 해독해야 하는 경우 번호가 아닌 개체의 이름을 암호화하는 것이 좋습니다. 저것들. 숫자와 숫자에서 이름을 수집하여 문자열로 만든 다음 문자열 숫자를 int로 수집합니다. 유일한 방법은 구분 기호로 필드를 나누거나 각 필드의 문자 수를 고려하는 것입니다.

사유: