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

 
kashi_ann :

Neyi yanlış yapıyorum?

Bu göstergenin giriş parametresi yok mu? (iCustom(...)) işlevinden bahsediyorum

(Umarım sadece burada eksik olan kapanış paranteziniz vardır)

Ve yalnızca 2 öğeyi kopyaladığınız için bunları statik olarak ayrılmış bir arabelleğe mi kopyalıyorsunuz?

 
Sayın,

NT7 için açık gösterge kodu
Görüyorum eğer ( v>=a && v<b)
ve başka bir koşul eklemem gerekiyor: 25 sayısına eşit değil

aşağıdakiler doğru olur mu?
if ( v>=a && v<b && v<25 && v>25)
 

Artyom Trishkin
:

1. iMaOnArray() yapabilirsiniz
2. Belki de yanlış momentumu izlediniz? Göstergeler --> Osilatörler --> Momentum
3. Alt pencerede garip Mashki var. Bütün bunları nereden buluyorsun? Göstergeler --> Trend Göstergeleri --> Hareketli Ortalama

Artyom, cevap için teşekkürler, menüde olduğu ortaya çıktı... Göstergeleri yanlış yerden aldım :) "Gezgin" penceresinde Göstergeler \ Momentum'a tıkladım, gösterge her seferinde yeni bir alt pencereye ekleniyor ve bir tür kısırlaştırılmış.
Lütfen prosedür sık sık tekrarlanırsa işlemciyi neyin daha az yükleyeceğini söyleyin:
1) (Karmaşık) göstergemi bir alt pencereye yerleştirin ve buradan değerleri alın
veya
2) (MQL4) iCustom kullanarak OnTime() ile gösterge değerini okuyun.
Doğru anladıysam 2) durumunda gösterge pencerede çizilmiyor, talep üzerine hesaplanıyor. Doğru, anlamadım, göstergenin yürütülebilir kodu bir kez veya her çağrıldığında yükleniyor ...
PS Menü aracılığıyla, ikinci gösterge hala yeni bir alt pencereye eklenir.. Bunu bir alt pencerede mevcut bir göstergeye nasıl ekleyebilirim?

 

Александр :
Уважаемые,

открыл код индикатора к NT7
вижу в нём if ( v>=a && v<b)
а мне надо добавить ещё условие: неравно числу 25

правильно ли будет следующее?
if ( v>=a && v<b && v<25 && v>25)

Asla çalışmayacak çünkü: " v<25 && v>25" her zaman yanlıştır.

Bunun gibi bir şeye ihtiyacınız var:

v!=25

 
Yury Kirillov :

Asla çalışmayacak çünkü: " v<25 && v>25" her zaman yanlıştır.

Bunun gibi bir şeye ihtiyacınız var:

v!=25

teşekkür etmek! Evet:

if ( v>=a && v<b && (v <25 || v>25)) veya if ( v>=a && v<b && v!=25)

 
Александр :
teşekkür etmek! başka bir forum önerdi: if ( v>=a && v<b && (v <25 || v>25))

Kendim için şunu yazayım:

{ if ((v>=a)&&(v<b)&&(v!= 25 )) 
{
         //разные действия 
}} //if((v>=a)&&(v<b)&&(v!=25)) 

 
 
Oksana Berenko :

Bu göstergenin giriş parametresi yok mu? (iCustom(...)) işlevinden bahsediyorum

(Umarım sadece burada eksik olan kapanış paranteziniz vardır)

Ve yalnızca 2 öğeyi kopyaladığınız için bunları statik olarak ayrılmış bir arabelleğe mi kopyalıyorsunuz?

Göstergenin birçok giriş parametresi vardır.

Parantezleri nerede kaçırdığımı anlamadım.

Korkarım statik bir arabelleğin ne anlama geldiğini anlamıyorum. Zor değilse lütfen açıklayınız.

 
Mike :

Artyom, cevap için teşekkürler, menüde olduğu ortaya çıktı... Göstergeleri yanlış yerden aldım :) "Gezgin" penceresinde Göstergeler \ Momentum'a tıkladım, gösterge her seferinde yeni bir alt pencereye ekleniyor ve bir tür kısırlaştırılmış.
Lütfen prosedür sık sık tekrarlanırsa işlemciyi neyin daha az yükleyeceğini söyleyin:
1) (Karmaşık) göstergemi bir alt pencereye yerleştirin ve buradan değerleri alın
veya
2) (MQL4) iCustom kullanarak OnTime() ile gösterge değerini okuyun.
Doğru anladıysam 2) durumunda gösterge pencerede çizilmiyor, talep üzerine hesaplanıyor. Doğru, anlamadım, göstergenin yürütülebilir kodu bir kez veya her çağrıldığında yükleniyor ...
PS Menü aracılığıyla, ikinci gösterge hala yeni bir alt pencereye eklenir.. Bunu bir alt pencerede mevcut bir göstergeye nasıl ekleyebilirim?

Bir gösterge iCustom() kullanılarak çağrıldığında, arabellekleri pencerede görüntülenmez, ancak bildiğim kadarıyla (MT'nin eski sürümlerinde öyleydi), gösterge tarafından görüntülenen tüm grafik nesneleri grafik penceresinde görüntülenir. .

Bir göstergeyi başka bir göstergenin penceresine yerleştirmek için, fareyi gezgin penceresinden gerekli göstergenin penceresine sürükleyin.

İşlemci süresinin daha düşük maliyetine gelince - kontrol etmedim, bilmiyorum.

 

koşulları oluşturmaya yardımcı olun, fikri bitirin, duruma göre grafiğe bir etiket koymak ne kadar kolay?

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
     
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
   //+------------------------------------------------------------------+
void OnTick ()
{
         // скорость тиков
         int nTicksSpeed = TicksSpeed();
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int TicksSpeed()
{
         MqlTick oTicks[ 5 ];
         ZeroMemory (oTicks);
        
         int nTicksCopied = CopyTicks( _Symbol , oTicks, COPY_TICKS_TRADE, 0 , 5 );
        
         int nSpeed = 0 ;

         if (nTicksCopied > 0 )
        {
                 // скорость роста
                 if (oTicks[ 0 ].bid > oTicks[ 1 ].bid)
                {
                         if (oTicks[ 4 ].bid > 0 && oTicks[ 0 ].bid > oTicks[ 1 ].bid && oTicks[ 1 ].bid > oTicks[ 2 ].bid && oTicks[ 2 ].bid > oTicks[ 3 ].bid && oTicks[ 3 ].bid > oTicks[ 4 ].bid)
                                nSpeed = 4 ;
                         else if (oTicks[ 3 ].bid > 0 && oTicks[ 0 ].bid > oTicks[ 1 ].bid && oTicks[ 1 ].bid > oTicks[ 2 ].bid && oTicks[ 2 ].bid > oTicks[ 3 ].bid)
                                nSpeed = 3 ;
                         else if (oTicks[ 2 ].bid > 0 && oTicks[ 0 ].bid > oTicks[ 1 ].bid && oTicks[ 1 ].bid > oTicks[ 2 ].bid)
                                nSpeed = 2 ;
                                
                         else if (oTicks[ 1 ].bid > 0 && oTicks[ 0 ].bid > oTicks[ 1 ].bid)
                                nSpeed = 1 ;
                        
                }
        
                 // скорость снижения
                 if (oTicks[ 0 ].bid < oTicks[ 1 ].bid)
                {
                         if (oTicks[ 4 ].bid > 0 && oTicks[ 0 ].bid < oTicks[ 1 ].bid && oTicks[ 1 ].bid < oTicks[ 2 ].bid && oTicks[ 2 ].bid < oTicks[ 3 ].bid && oTicks[ 3 ].bid < oTicks[ 4 ].bid)
                                nSpeed = - 4 ;
                         else if (oTicks[ 3 ].bid > 0 && oTicks[ 0 ].bid < oTicks[ 1 ].bid && oTicks[ 1 ].bid < oTicks[ 2 ].bid && oTicks[ 2 ].bid < oTicks[ 3 ].bid)
                                nSpeed = - 3 ;
                         else if (oTicks[ 2 ].bid > 0 && oTicks[ 0 ].bid < oTicks[ 1 ].bid && oTicks[ 1 ].bid < oTicks[ 2 ].bid)
                                nSpeed = - 2 ; 
                         else if (oTicks[ 1 ].bid > 0 && oTicks[ 0 ].bid < oTicks[ 1 ].bid)
                                nSpeed = - 1 ; 
                }
        }
        
         return (nSpeed);
}

//+------------------------------------------------------------------+

if ( nTickSpeed==- 1 )  отмечаем это место на графике g_Label.Text( "-1 " )

if ( nTickSpeed==- 2 )  отмечаем это место на графике g_Label.Text( "-2 " )

if (nTickSpeed==- 3 )  отмечаем это место на графике g_Label.Text( "-3 " )

if ( nTickSpeed==- 4 )  отмечаем это место на графике g_Label.Text( "-4 " )




if ( nTickSpeed== 1 )  отмечаем это место на графике g_Label.Text( "1 " )

if ( nTickSpeed== 2 )  отмечаем это место на графике g_Label.Text( "2 " )

if ( nTickSpeed== 3 )  отмечаем это место на графике g_Label.Text( "3 " )

if ( nTickSpeed== 4 )  отмечаем это место на графике g_Label.Text( "4 " )
 

Sonundaki if'leri şu şekilde değiştirebilirsiniz:

   switch (nTickSpeed)
     {
       case - 4 :
         g_Label.Text( "-4" );
         break ;
       case - 3 :
         g_Label.Text( "-3" );
         break ;
       case - 2 :
         g_Label.Text( "-2" );
         break ;
       case - 1 :
         g_Label.Text( "-1" );
         break ;
       case 1 :
         g_Label.Text( "1" );
         break ;
       case 2 :
         g_Label.Text( "2" );
         break ;
       case 3 :
         g_Label.Text( "3" );
         break ;
       case 4 :
         g_Label.Text( "4" );
         break ;
     }