Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1377

 
Fast235 # :

katılımcılardan birinin dediği gibi fabrikaya.

anlaşılmazlık nedeniyle

Nesneye benzersiz bir numara atamanız gerekiyor, bu numara parametrelerden toplanmalıdır:

-   Açılış zamanı   nesne

- Nesne dönemi

- nesnenin zaman çerçevesi

Örneğin:

 int Num= TimeOpen+ Period * 0.0001

Bu sayının özel olacağından emin değilim ve int için veri türü uygun değil, tercihen int

 
Mikhail Toptunov # :

Nesneye benzersiz bir numara atamanız gerekiyor, bu numara parametrelerden toplanmalıdır:

-   Açılış zamanı   nesne

- Nesne dönemi

- nesnenin zaman çerçevesi

Örneğin:

Bu sayının özel olacağından emin değilim ve int için veri türü uygun değil, tercihen int

otomatik olarak benzersiz bir numara atanır - tr_Deal73772984

sorunun ne olduğu belli değil

 

bu basit kodu görün

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

Merhaba.

Fibonacci seviyeleri nasıl görünür/görünmez yapılır? Genel olarak, bazı seviyelerin kaldırılması gerekir. OBJPROP_LEVELS özelliğini kullanırsanız, yalnızca ilk N düzeyini kullanılabilir hale getirir. Her bir seviye için görünürlük özelliği nasıl ayarlanır veya tamamen kaldırılır?

 
leonerd # :

Merhaba.

Fibonacci seviyeleri nasıl görünür/görünmez yapılır? Genel olarak, bazı seviyelerin kaldırılması gerekir. OBJPROP_LEVELS özelliğini kullanırsanız, yalnızca ilk N düzeyini kullanılabilir hale getirir. Her bir seviye için görünürlük özelliği nasıl ayarlanır veya tamamen kaldırılır?

Aşağı yukarı böyle.

 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 ();
 } /******************************************************************/

Bu EA'dan alınmıştır, bazı değişkenler burada tanımlanmamıştır. Bu kod derlenmeyecek.

 

Merhaba, standart araçları kullanarak bir dizi elemanını yapıdan ofset ile çıkarmak mümkün müdür?


 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 ]... 
 

Ben yaptım, daha profesyonelce yapabilir miyim?

 //+----------Удаляем старый сигнал-----------------------------------+
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 # :

Ben yaptım, daha profesyonelce yapabilir miyim?

Merhaba, bir dizinin öğelerini kaldırmak için dizinin sonundan yinelemeye başlayın, ardından dizini değiştirmeniz gerekmez. Sırayla gidiyor.

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

Merhaba, bir dizinin öğelerini kaldırmak için dizinin sonundan yinelemeye başlayın, ardından dizini değiştirmeniz gerekmez. Sırayla gidiyor.

Kesinlikle, harika, teşekkürler!

 
Mikhail Toptunov # :

Nesneye benzersiz bir numara atamanız gerekiyor, bu numara parametrelerden toplanmalıdır:

-   Açılış zamanı   nesne

- Nesne dönemi

- nesnenin zaman çerçevesi

Örneğin:

Bu sayının özel olacağından emin değilim ve int için veri türü uygun değil, tercihen int

Şifreyi daha sonra çözmeniz gerekirse, numarayı değil, nesnenin adını şifrelemek daha iyidir. Onlar. adı sayılardan ve sayılardan bir dizeye ve ardından dize numaralarını int'ye topluyoruz. Tek şey, alanları sınırlayıcılarla bölmek veya her alandaki karakter sayısını dikkate almaktır.

Neden: