MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 80

 

Hatalar var, bu nedenle kod, yazarın istediği gibi çalışmayacak. Çözmek gerekiyor. Kod sizde, siz ve kartlar elinizde.


Gösterdiğiniz parçadan, ya 60'tan az mum olduğunu ya da göstergelerden birinin tutacağının GEÇERSİZ olduğunu görüyorum, bu da ona yanlış parametreler gönderdiğiniz anlamına geliyor. Veya göremediğim kodun başka bir bölümündeki hatalar.

Saygılarımla, Vladimir.

Ah Alex ;)

 
MrBrooklin # :

Sorunun nerede olduğunu bulmayı başardım, ancak soru başka bir şey hakkında soruldu: Bu hatalar neyi etkileyebilir ve bunları ortadan kaldırmak için kodda nelerin değiştirilmesi gerekiyor?

Saygılarımla, Vladimir.

Bir hata oluşursa, danışman tabloya eklenmez.

Yapacak bir şey yok. Halihazırda yapılması gerekenler - bir hata olması durumunda, danışmanın çizelgeden bağlantısı kesilir.

ve kullanıcıyı bilgilendirir.

Bu hata, bilgisayarda tam bir karışıklık olduğu durumlar dışında pratik olarak gerçekleşmez.

==

Ancak .. geliştirme sürecinde sürekli oluyorsa ...

Bu, göstergenin yanlış çağrıldığı anlamına gelir - gösterge parametrelerini düzeltin.

 
Dmitry Fedoseev # :

Bir hata oluşursa, danışman tabloya eklenmez.

Yapacak bir şey yok. Halihazırda yapılması gerekenler - bir hata olması durumunda, danışmanın çizelgeden bağlantısı kesilir.

ve kullanıcıyı bilgilendirir.

Bu hata, bilgisayarda tam bir karışıklık olduğu durumlar dışında pratik olarak gerçekleşmez.

==

Ancak .. geliştirme sürecinde sürekli oluyorsa ...

Bu, göstergenin yanlış çağrıldığı anlamına gelir - gösterge parametrelerini düzeltin.

Ayrıntılı ve anlaşılır bir cevap için teşekkür ederim Dmitry!

Saygılarımla, Vladimir.

 
SanAlex # :

burada çalışıyor - süre doğru ayarlanmamış olabilir

Bahşiş için teşekkürler!!! Aslında sorun, test ayarlarında her iki gösterge için "sıfır" ve daha yüksek periyotlar ayarlamanın imkansız olmasıydı. En azından "bir" ve üstünden ayarlamak gerekiyordu.

Hepinize katılımınız için teşekkür ederim!

Saygılarımla, Vladimir.

 
MrBrooklin # :

Not: "Ayak örtüsünü" danışmanın koduyla kaldırırsınız, aksi takdirde bu "ayak bezleri" birçok kişiyi rahatsız eder. Benimki zaten kaldırıldı.

Kim şiddetle rahatsız olursa, periyodik olarak ana otu veya sinek mantarı tentürü alarak ormandan geçmelerine izin verin.

Ben de bu ayak örtülerini sevmiyorum, ama onları izlemiyorum.

 
Öğrenmek için dile bakmak isteyen bir kaç, şube öldü. Bu ne için
 
Vladimir Baskakov # :
Öğrenmek için dile bakmak isteyen bir kaç kişi, dalı tükendi. Bu ne için

Vladimir, çok basit. Çalışmam gereken şey - çalıştım. Şimdi farklı danışmanlar alıyorum ve onları kendim için yapıyorum. En önemlisi artık MQL5 programlama diline Çince karakterler olarak değil, normal bir yazılım ürünü olarak bakıyorum. Kendi kendine eğitimde bana yardımcı olan tüm uzmanlara çok teşekkürler!

Saygılarımla, Vladimir.

 
MrBrooklin # :


Benim için, bir dosyayı indirip sanal alanınıza koymaktansa bir ayak örtüsüne izin vermek daha iyidir. )

 

Herkese günaydın ve iyi bir ruh hali!

MQL5 programlama dilini kendi kendime incelemeye devam ediyorum. Dizilerle uğraşmak zorunda kaldığım bir zaman geldi. 10 döviz çifti üzerine çoklu döviz Expert Advisor için kod yazdım ve Expert Advisor'ın giriş parametrelerinde belirtilen riske göre lot büyüklüğünü hesaplamaya karar verdim. Derlemeden sonra herhangi bir hata veya uyarı yok, ancak fonksiyon kodunun kendisi çalışmıyor. Söyle bana, lütfen, hata nerede?

Saygılarımla, Vladimir.

 input double    Risk0= 1.0 ;           //Риск (% от баланса)
.
.
.
.
input double    Risk9= 1.0 ;           //Риск (% от баланса)

//+------------------------------------------------------------------+
//| Функция Money_Management рассчитывает размер лота в зависимости  |
//|  от риска, заданного во входных параметрах советника.            |
//+------------------------------------------------------------------+
double Money_Management()
  {
   static int Risk[];
   int Number= 0 ;
//----+ Объвляем переменную для хранения размеров массивов переменных
   static int Size_ = 0 ;
//----+ Изменяем размер массивов переменных
   if (Number + 1 > Size_)
     {
       uint size = Number + 1 ;
       //---- Предварительно обнуляем ячейки массива
      Risk[Number] = false ;
     }
   if (Risk[ 0 ] != Risk[Number])
     {
      Risk[Number] = Risk[ 0 ];
     }
   double Lots= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )*Risk[Number]/ 100000 * 10 ;
   Lots= MathMin ( 5 , MathMax ( 0.1 ,Lots));
   if (Lots< 0.1 )
      Lots= NormalizeDouble (Lots, 2 );
   else
     {
       if (Lots< 1 )
         Lots= NormalizeDouble (Lots, 1 );
       else
         Lots= NormalizeDouble (Lots, 0 );
     }
   return (Lots);
  }
//+------------------------------------------------------------------+
 
MrBrooklin MQL5 programlama dilini kendi kendime incelemeye devam ediyorum. Dizilerle uğraşmak zorunda kaldığım bir zaman geldi. 10 döviz çifti üzerine çoklu döviz Expert Advisor için kod yazdım ve Expert Advisor'ın giriş parametrelerinde belirtilen riske göre lot büyüklüğünü hesaplamaya karar verdim. Derlemeden sonra herhangi bir hata veya uyarı yok, ancak fonksiyon kodunun kendisi çalışmıyor. Söyle bana, lütfen, hata nerede?

Saygılarımla, Vladimir.

Bunu gerçekten yazmamışsınızdır umarım...

İşte çalışma fonksiyonu

 /********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
double contractSize( double Lot)
 {
   double volume = Lot > 0.0 ? Lot : AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/ 10000 ,
         v = volume,
         volumeStep = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP ),
         minLot = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ),
         maxLot = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
  v = round (volume/volumeStep)*volumeStep;
   return ( fmin (maxLot, fmax (minLot, v)));
 } /******************************************************************/

Tam serbest marjdan hesaplamamak için sadece risk miktarını girmek yeterlidir ...