[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 301

 
laveosa :

Her şeyi tam olarak böyle yaptım ve bir kereden fazla her şey tam olarak bu delik.
O zaman evinizde Cheburashka'yı arayın! Kesinlikle onun şakaları! ;)
 
laveosa., eurusdm1 indirmeyi düne kadar tırnak içinde içe aktarma yoluyla saklayın.
Dosyalar:
eurusd1.zip  548 kb
 
İşte ilginç bir durum..Zaman çerçevesini değiştirdiğinizde değerler değişiyor ama geriye gitmeye değer ve rakamlar aynı, lütfen bana bunun nasıl düzeltilebileceğini söyleyin.
Dosyalar:
 

Uzmanlara soru!

Uzmanlarımda sık sık arabalarım var. Kodu tekrarlanan anlarla "tıkamamak" için, örneğin:

 double maFast = iMA ( NULL , 0 , i_maFastPeriod, 0 , i_maMethod, i_maPrice, index);
double maSlow = iMA ( NULL , 0 , i_maSlowPeriod, 0 , i_maMethod, i_maPrice, index);

Yani tekrarlar sıralı olabilir. Ayrı işlevler yazarak bundan kurtulmayı düşündüm.

Başlangıç şöyle:

 //+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA( double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index)
{
   switch (typeOfMA)
   {
       case 1 :       return ( iMA ( NULL , i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
       case 2 :       return ( iMA ( NULL , i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
       case 3 :       return ( iMA ( NULL , i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
//+-------------------------------------------------------------------------------------+
//| Получаем сигнал от скользящих средних                                               |
//+-------------------------------------------------------------------------------------+
int GetStateOfMA()
{
   if (GetMA( 1 , i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex) > 
      GetMA( 2 , i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex))
       return (CROSS_UP);
}

Örneğin, fastMA ve slowMA gibi küresel düzeyde arabalar için değişkenler bildirerek daha ileri gidebilir ve bunları işlev aracılığıyla referans olarak döndürebilirsiniz:

GetMA( double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index)

Şu şekilde çıkacaktır:

 //+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA( double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index, double & fastMA, double & slowMA)
{
   switch (typeOfMA)
   {
       case 1 :       return ( iMA ( NULL , i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
       case 2 :       return ( iMA ( NULL , i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
       case 3 :       return ( iMA ( NULL , i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}
//+-------------------------------------------------------------------------------------+
//| Получаем сигнал от скользящих средних                                               |
//+-------------------------------------------------------------------------------------+
int GetStateOfMA()
{
   GetMA( double typeOfMA, int tf, int maPeriod, int maShift, int maMethod, int maApplied, int index, double & fastMA, double & slowMA);
   if (fastMA > slowMA)
       return (CROSS_UP);
   if (fastMA < slowMA)
       return (CROSS_DN);
   return (CROSS_NO);
}

Soru:

Bir yerde switch ifadesinin yavaş olduğunu duydum veya okudum, bu durumda bir bütün olarak EA'nın performansını etkilemez mi? Ve genel olarak ne kadar yavaş?

Ayrıca burada epeyce parametre var, bu uzmanın üzerinde bir fren olmayacak mı?

Yazıyorum ve aynı zamanda performansı düşünüyorum, bu yüzden soru ortaya çıkıyor, çünkü kendim eğitimle programcı değilim, kendim anlamak çok kolay değil ...

 

Victor, bir işlevi çağırmak , geçişten çok daha büyük bir sürüklemedir. Hızı kendiniz kontrol edebilirsiniz. Bir döngü ile test kodu yazın. Kodunuzu nerede kontrol edeceksiniz. Girişte saate dikkat edin. Ardından çıkış zamanı ile karşılaştırın.

Switch ifadesi en hızlı ifadelerden biridir. Koşullar arasında yineleme yapmaktan daha hızlı.

switch bir istisna durumunda varsayılan olarak kullanılmalıdır. Böylece yanlış bir koşul olması durumunda kodun neden çalışmadığını bileceksiniz.

 

hm. Ve anladığım kadarıyla, belgelere dayanarak case için bir sabit değişken olarak kullanılamaz. Bazı hedef sabit, sembolik sabit veya sembolik ifade olduğu yazılır.

Harf ess-ama dize tipine ayarlanmışsa akımı ortaya çıkarır, yani. 1 karakter (derleyici 1 karakterden fazla küfür ederse) veya bir sayı.

Başka hiçbir şey.
Ve bazı hedef sabitlerin, sembolik ifadelerin ve sembolik sabitlerin olduğu yazılmıştır.

 

Pratik örneklerle terminal global değişkenlerini kullanma hakkında nereden okuyabilirim? Daha spesifik olarak, her bir Uzman Danışmanın yalnızca mevduattaki payını alıp sattığından ve karı/çekişinin diğer Uzman Danışmanların MM'sini etkilemediğinden emin olmak istiyorum.

 
Ekburg :

Merhaba

Terminalde Expert Advisor'ı başlatırken "zaman aşımına göre kapanma" hatasının nedeninin ne olabileceğini ve bu sorunun nasıl çözülebileceğini söyleyin?

 
[quote=Roman.]Mutfağı değiştirin.[/quote]Meselenin gerçeği, mutfağın bununla hiçbir ilgisi yok gibi görünüyor: EA'nın günlüğünde bir satış emri var. Elbette, komisyoncunun indirilen MT4 dağıtımının kodunda değişiklik yaptığını ve işlemin yönünü düzelttiğini varsayabilirsiniz, ancak bu çok yüzsüz olur, kmk.
 
Program kodlarını ekleyebilir ve tüm kodu buraya kopyalayamaz mıyım? Yöneticiler nereye bakıyor?
Neden: