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

 
ascerdfg :
Mümkün mü:

ile ikame edilmiş:

Neden? Tabi ki yapabilirsin

 
double Open [ 3 ];

int Ind_Handle;

int OnInit ()
  {
      Ind_Handle= iCustom ( _Symbol , _Period , "Pop" ); // Pop.ex5
       if (Ind_Handle== INVALID_HANDLE )
        {
         Print ( " Не удалось получить хендл индикатора" );
         return ( INIT_FAILED );
        }
   
   return ( INIT_SUCCEEDED );
  }


void OnTick ()
  {
 
      CopyBuffer (Ind_Handle, 0 , 1 , 1 , Open );
       Print ( "Open0 " , Open [ 0 ]);
  }

Baskılar: "Open0 1.797693134862316e+308"

Hem gösterge arabelleğinin hücre numarasını hem de dizinini değiştirmeme rağmen.

Göstergenin bir tamsayı içerdiğinden eminim. Neden yazdırıyor?

 
ascerdfg :

Baskılar: "Open0 1.797693134862316e+308"

Hem gösterge arabelleğinin hücre numarasını hem de dizinini değiştirmeme rağmen.

Göstergenin bir tamsayı içerdiğinden eminim. Neden yazdırıyor?

Veya diziyi bildirdikten sonra, ArraySetAsSeries dizisini doğru yapın veya 1 boyutunda bir dizi bildirin
 
void OnTick ()
  {
     int i;
     double price=. 5 ;
     double Open [];
       ArraySetAsSeries ( Open , true );

       Print ( "Кол-во " , BarsCalculated (Ind_Handle));
       Print ( "хэндл " ,Ind_Handle);
       CopyBuffer (Ind_Handle, 0 , 0 , 100 , Open );
                 
      
     for (i= 0 ; i< 100 ; i++)
    {
         if ( Open [i]!= EMPTY_VALUE )
        {
            price= Open [i];
             break ;
        }
    }
           
       Print (price);
  }
Yardımcı olmuyor, her zaman 0,5 yazıyor. Tamponu her zaman maksimum sayı ile ortaya çıkarır.
 
ascerdfg :
Yardımcı olmuyor, her zaman 0,5 yazıyor. Tamponu her zaman maksimum sayı ile ortaya çıkarır.

Kesin bir cevap istiyorsanız - doğru soruyu sorun: gösterge kodunu ve danışman kodunu sağlayın. Şimdi NE, KİM ve NEREDE belli değil :)

 

Pop - gösterge

prr - danışman

Dosyalar:
Pop.mq5  38 kb
ppp.mq5  4 kb
 
ascerdfg :

Pop - gösterge

prr - danışman

Göstergeyi yeniden yazın - ilk olarak, DUR KELİMELERİ kontrol edin, ikinci olarak, mümkün olduğunca basitleştirin - örneğin, gösterge arabelleğine mevcut çubuğun sayısına eşit bir sayı girin.

Ne elde ederiz: dizi[0]=0.0, dizi[1]=1.0 vb. Bu, göstergeden veri alma işini anlama sürecini ÇOK, ÇOK basitleştirecektir. Üçüncüsü, yalnızca bir gösterge arabelleği bırakın.

 

Lütfen bana bu fonksiyonda güncellenmiş sembolü nasıl açıkça belirteceğimi söyler misiniz? Örneğin EURUSD.m

 //+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates ( void )
  {
//--- refresh rates
   if (!m_symbol. RefreshRates ())
     {
       Print ( "RefreshRates error" );
       return ( false );
     }
//--- protection against the return value of "zero"
   if (m_symbol. Ask ()== 0 || m_symbol. Bid ()== 0 )
       return ( false );
//---
   return ( true );
  }
//+------------------------------------------------------------------+
 

Güzel gün!

Piyasa için bir göstergeyi nasıl doğru bir şekilde monte edeceğimi söyleyebilir misiniz?

.mq5 uzantılı bir c dosyası var ve .mqh uzantılı birkaç dahil dosya var, ancak piyasada yalnızca bir dosyanız olması gerekiyor.

Anladığım kadarıyla kaynaklar aracılığıyla .mqh eklemek imkansız, gerçekten her şeyi manuel olarak tek bir dosyaya aktarmanız gerekiyor mu:?

Ve eğer yeni sürüm:? Gitmek delilik +))

Teşekkür ederim.

 
EgorKim :

Lütfen bana bu fonksiyonda güncellenmiş sembolü nasıl açıkça belirteceğimi söyler misiniz? Örneğin EURUSD.m

Karşı soru: "Neden burada sembolü açıkça ayarlayın"?.

Bu işlevi kullanırsanız, OnInit'te m_symbol öğesine bir sembol atamanız gerekir:

   if (!m_symbol.Name( Symbol ())) // sets symbol name
       return ( INIT_FAILED );
   RefreshRates ();

Bu durumda Expert Advisor'ı "EURUSD.m" sembolü üzerinde çalıştırırsanız, m_symbol otomatik olarak "EURUSD.m" olarak ayarlanacaktır.