Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 159

 
hoz :

Bir fonksiyon var. İşte başlangıcı:

Mesele şu. Fonksiyonun ikinci resmi parametresi 0 varsayılan değerine sahiptir. Bu nedenle, ikinci parametre olmadan belgelere göre bu işlevi çağırabilirim, çünkü varsayılan olarak 0 olacaktır.

Ben buna şöyle sesleniyorum:

Derleyici şikayet ediyor:

Niye ya?

Onu kütüphaneden orada ne yapıyor koduna taşıyın. Hata ortadan kalkarsa, oradakilerin kodunda kitaplığın doğru bağlantısıyla ilgili sorunlar vardır. Öncelikli olarak.

Gitmezse, fonksiyona hangi parametreleri ilettiğinize bakın. Teoride, para birimi çiftinin adıyla bir dize türü parametresi olmalıdır. Sadece Symbol() iletin

 
artmedia70 :

Onu kütüphaneden orada ne yapıyor koduna taşıyın. Hata ortadan kalkarsa, oradakilerin kodunda kitaplığın doğru bağlantısıyla ilgili sorunlar vardır. Öncelikli olarak.

Gitmezse, fonksiyona hangi parametreleri ilettiğinize bakın. Teoride, para birimi çiftinin adıyla bir dize türü parametresi olmalıdır. Sadece Symbol() iletin



Ve gerçekten yardımcı oldu .. Bence ..

Çok garip. Ve parametre geçişi doğruysa kütüphaneye ne bakmalı? Hata açıkça yazılmıştır. Yoksa belirli bir şey yok mu? Burada neyin gerekli olduğunu bilmek istiyorum.

Bu işlev ödünç alındı, bu yüzden yazarın bağlantılarını kontrol ediyorum:

 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Получаем торговую информацию по символу                                    |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fGet_MarketInfo ( string fs_Symbol, int fi_Ticket = 0 )
{
//----
         if (fs_Symbol != bs_Symbol || fi_Ticket < 0 )
         {
                   if (fi_Ticket > 0 )
                  {
                     bs_Symbol = OrderSymbol();
                  }
                   else
                  {
                     bs_Symbol = fs_Symbol;
                  }
                   if (bs_Symbol == Symbol ())
                  {
                      bi_SymDigits = Digits ;
                      bd_SymPoint = Point ;
                  }
                   else
                  {
                      bi_SymDigits = MarketInfo (fs_Symbol, MODE_DIGITS);
                      bd_SymPoint = MarketInfo (fs_Symbol, MODE_POINT);
                  }
         if (bd_SymPoint == 0.0 )
        {
           bd_SymPoint = fGet_Point (fs_Symbol);
        }
                  bd_ProfitMIN = NDP (ProfitMIN_Pips);
         }
         if (fi_Ticket > 0 )
         {
            fGet_OrderDetails (fi_Ticket);
         }
     //---- Получаем текущие цены по инструменту
    RefreshRates();
    bda_Price[ 0 ] = NDD (fGet_TradePrice ( 0 , bb_RealTrade, bs_Symbol));
    bda_Price[ 1 ] = NDD (fGet_TradePrice ( 1 , bb_RealTrade, bs_Symbol));
    bd_Spread = NDD (bda_Price[ 1 ] - bda_Price[ 0 ]);
//----
}

Bunu şu şekilde içe aktardım:

 #import "hoz_Base@Library.ex4"
     double ND ( double v);
     string DToS ( double v);
     string DToSByLots ( double v);
     void fGet_MarketInfo ( string fs_Symbol, int fi_Ticket = 0 );
#import

Çağrı şöyle:

fGet_MarketInfo (fs_Symbol);

Bu tür görevler nasıl çözülür?

 
hoz : Bu tür görevler nasıl çözülür?

Belgeleri incelemek. Varsayılan olarak, parametreler derlenmiş kitaplıklara iletilmez - bir işlev çağrılırken TÜM parametreler iletilmelidir. Dikkatlice okuyun . Alıntı:

İçe aktarılan işlevler derlenmiş modülün dışında olduğundan, derleyici geçirilen parametrelerin doğruluğunu kontrol edemez. Bu nedenle, çalışma zamanı hatalarından kaçınmak için, içe aktarılan işlevlere iletilen parametrelerin bileşimini ve sırasını doğru bir şekilde tanımlamak gerekir. İçe aktarılan işlevlere (hem EX4 hem de DLL modüllerinden) geçirilen parametreler varsayılan değerlere sahip olamaz.
 
TarasBY :

Varsayılan olarak, parametreler derlenmiş kitaplıklara iletilmez - bir işlev çağrılırken TÜM parametreler iletilmelidir. Dikkatlice okuyun . Alıntı:

İçe aktarılan işlevler derlenmiş modülün dışında olduğundan, derleyici geçirilen parametrelerin doğruluğunu kontrol edemez. Bu nedenle, çalışma zamanı hatalarından kaçınmak için, içe aktarılan işlevlere iletilen parametrelerin bileşimini ve sırasını doğru bir şekilde tanımlamak gerekir. İçe aktarılan işlevlere (hem EX4 hem de DLL modüllerinden) geçirilen parametreler varsayılan değerlere sahip olamaz.

İşte bu. Yaşa ve öğren! Teşekkürler, bileceğim.
 

MT4'te optimizasyon başlatılırken, "Rapor" sekmesinde tek bir geçiş sırasında oluşturulana benzer şekilde " Optimizasyon Sonuçları " sekmesinde geçiş hakkında bilgi almaya ihtiyaç vardır.

Bu nasıl uygulanabilir?

 

Kütüphaneye göz atmaya karar verdim. Kodun bir kısmını göstergemden çekip bir fonksiyona yapıştırdım ve fonksiyonu çoğaltıp iki kitaplık dosyasına ekledim.

İlkini "indi.mqh" olarak adlandırdım ve ikincisini basitçe - "djo.mq4".

 int countbars( int & hist, int obrax, bool tikk)
{ 
 int z= 0 ;
 static int PreBars= 0 ; 
 static datetime BarTime= 0 ;
 if ( Bars == PreBars && tikk== false ) return (- 1 );
 if ( Bars < hist+obrax)  
 {
   if ( Bars -obrax<= 1 ) { Alert ( " Недостатьньо історії" ); return (- 1 );}
  hist= Bars -obrax;
 }
 
 if ( Bars -PreBars == 0 && BarTime==Time[ 0 ] && tikk== true ) return ( 0 );
 else   
 {
   if ( Bars -PreBars == 1 && BarTime==Time[ 1 ]) z= 1 ;
   else   z=hist;
 }
 PreBars = Bars ;  
 BarTime=Time[ 0 ];
 return (z);
}

İşin özü: ilk temas kurulduğunda, tüm kurallar planlandığı gibi çalışır;

 include <indi.mqh>

birinciyi ikinciyle değiştirirken ve ikinci yönteme atıfta bulunurken:

#import "djo.ex4"    int countbars( int & hist, int obrax, bool tikk);  #import

Ancak hiçbir şey çalışmıyor, uyarılar bile - başlangıçtan sonra hiçbir yerde. Ve terminal kendini kapattı))

İçe aktarılan işleve yapılan başvuruda her seferinde tüm sabitlerin yeniden başlatılması olduğunu nasıl tahmin ediyorum?

Düzeltilmiş veya düzeltilmemiş hataları mql4'e aktarma hakkında ayrıntılı olarak nereden okuyabilirim?

teşekkür ederim ben yatıyorum....

 
ALXIMIKS :

Kütüphaneye göz atmaya karar verdim. Kodun bir kısmını göstergemden çekip işleve yapıştırdım ve işlevi çoğaltıp iki kitaplık dosyasına ekledim.

İlkini "indi.mqh" olarak adlandırdım ve ikincisini basitçe - "djo.mq4".

Konuya gelince: ilkiyle iletişime geçtiğinizde, tüm kurallar planlandığı gibi çalışır;

birinciyi ikinciyle değiştirirken ve ikinci yönteme atıfta bulunurken:

Ancak hiçbir şey çalışmıyor, uyarılar bile - başlangıçtan sonra hiçbir yerde. Ve terminal kendini kapattı))

İçe aktarılan işleve yapılan itirazda her seferinde tüm sabitlerin yeniden başlatılması olduğunu nasıl tahmin ediyorum?

Düzeltilmiş veya düzeltilmemiş hataları mql4'e aktarma hakkında ayrıntılı olarak nereden okuyabilirim?

teşekkür ederim ben yatıyorum....

Parametreleri referans olarak geçmek mümkündür. Bu durumda, bu tür parametrelerin modifikasyonu, çağrılan fonksiyondaki karşılık gelen değişkenlere referansla aktarılacaktır. Dizi öğeleri başvuru yoluyla iletilemez. Referansa göre parametreler sadece tek bir modül içinde geçirilebilir; bu olasılık kütüphane fonksiyonları için sağlanmamıştır . Bir parametrenin referans olarak iletildiğini belirtmek için & değiştiricisi veri türünden sonra yerleştirilmelidir. Ve işte birkaç deney daha.
 
Söyle bana, burada iki ortalama kesiştiğinde sesli bir mesajım var. Açıldığında, bu sesli mesaj tarihteki kavşak sayısı kadar tekrarlanır. Soru. Yalnızca şu anda üretilen sinyallerin mesajlarını vermeye nasıl zorlanır. Yani, sadece o sırada ve şu anda tam anlamıyla alınan sinyal ...
 
Zolotai :
Söyle bana, burada iki ortalama kesiştiğinde sesli bir mesajım var. Açıldığında, bu sesli mesaj tarihteki kavşak sayısı kadar tekrarlanır. Soru. Yalnızca şu anda üretilen sinyallerin mesajlarını vermeye nasıl zorlanır. Yani, sadece o sırada ve şu anda tam anlamıyla alınan sinyal ...
Neyi açarken? Bir gösterge gibi görünüyor. Birçok çözüm var. Her şey koda bağlıdır.
 
artmedia70 :
Neyi açarken? Bir gösterge gibi görünüyor. Birçok çözüm var. Her şey koda bağlıdır.


Evet, burada kod yok. Sadece doğru duruma ihtiyacım var. Soru, mevcut çubuğun zamanını bulmanın mümkün olup olmadığıdır? Bar saatini nereden biliyorsun?