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

 

Tünaydın.

MT5'teki test cihazı hakkında birkaç soru:

1) MT5'te, EA'nın görsel testi modunda, EA kodunda iCustom aracılığıyla hesaplanan tüm göstergeler, grafiğin üzerinde çizilir. Bir şekilde devre dışı mı / yapılandırılmış mı?

2) "Grafiklerin, göstergelerin ve ticaretin görüntülendiği görsel mod" onay kutusu etkinken test cihazında tek bir çalıştırma yapıyorum ve ardından onay kutusu kapalıyken (görselleştirme olmadan) aynı çalıştırmayı yapıyorum. Aynı zamanda, ilk durumda, denge grafiği oldukça normal bir şekilde çizilir, ikinci durumda, birkaç hücre için sadece düz bir çizgidir ve bu kadar. Ne ile bağlanabilir?

 
satorifx :

Tünaydın.

MT5'teki test cihazı hakkında birkaç soru:

1) MT5'te, EA'nın görsel testi modunda, EA kodunda iCustom aracılığıyla hesaplanan tüm göstergeler, grafiğin üzerinde çizilir. Bir şekilde devre dışı mı / yapılandırılmış mı?


1. TesterHideIndicators() .

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
Bir grafik nesnesinin silinmesi ile bir grafik nesnesinin yeniden adlandırılması arasında nasıl ayrım yapılır? Her iki durumda da bir silme olayı oluşturulur. Biri diğerinden nasıl ayırt edilir?
 
leonerd :
Bir grafik nesnesinin silinmesi ile bir grafik nesnesinin yeniden adlandırılması arasında nasıl ayrım yapılır? Her iki durumda da bir silme olayı oluşturulur. Biri diğerinden nasıl ayırt edilir?

Mümkün değil. Yeniden adlandırmak, silmek ve yeni bir tane oluşturmaktır. Burada da çıkardıktan sonra oluşturmayı yakalamaya çalışın.

 
Bu konuyla ilgili olmayan yorumlar " MQL4 MT4 MetaTrader 4 Yeni Başlayanlardan Sorular " bölümüne taşındı.
 

Rastgele 6 basamaklı sayılar elde etmek için neyi kaydetmem gerektiğini söyle?

 int Random() {
 int r= MathRand (); // 100000 -> 999999
   return (r);
 }
 
Vitaly Muzichenko :

Rastgele 6 basamaklı sayılar elde etmek için neyi kaydetmem gerektiğini söyle?

Bu çözümü buldum

 int Random( int min, int max) {
   int v= 0 ;
   MathSrand ( GetTickCount ());
   while ( true ) {
      v= MathRand ()*2* MathRand ();
       if (v>=min && v<=max)
         break ;
     }
   return (v);
  }
 
Vitaly Muzichenko :

Bu çözümü buldum

Vitaly, bu en iyi seçenek değil.

İlk olarak, bu durumda bir do while döngüsü kullanmak daha iyidir.

İkincisi, bence, bir güce yükseltirken 6 basamaktan fazla bir sayı elde etmek, çarpma işleminden daha güvenilirdir. Ancak bu durumda INF almak mümkündür. Ama derecenin değerini sınırlayabilirsiniz... Benim örneğimde derece 16'dan fazla değil.

 /********************Script program start function*******************/
void OnStart ()
 {
   double dr = 0 ,
         df = 0 ;
   srand ( GetTickCount ());
   do
   {
    dr = fabs ( rand ());
    df = fabs ( rand ());
   }
   while ((dr == 1 || df == 1 ) && ! IsStopped ());
   double dp = pow (dr, fmod (df, 16 ));
   Print ( DoubleToString ( fmod (dp, 1000000 ), 8 ));
 } /*******************************************************************/

Ve altı basamaklı bir sayı elde etmek için bölümün kalanını alın.

 
Alexey Viktorov :

Vitaly, bu en iyi seçenek değil.

İlk olarak, bu durumda bir do while döngüsü kullanmak daha iyidir.

İkincisi, bence, bir güce yükseltirken 6 basamaktan fazla bir sayı elde etmek, çarpma işleminden daha güvenilirdir. Ancak bu durumda INF almak mümkündür. Ama derecenin değerini sınırlayabilirsiniz... Benim örneğimde derece 16'dan fazla değil.

Ve altı basamaklı bir sayı elde etmek için bölümün kalanını alın.

Teşekkürler, koddaki kısmı değiştirdim.

 
Vitaly Muzichenko :

Teşekkürler, koddaki kısmı değiştirdim.

Ve sonuç ne oldu? Ben yanılmaz olduğumu iddia etmiyorum...