MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1116

 
Roman :

Yardım, EnumToString() kullanılarak dönüştürülen kimliğin değil, zaman çerçevesinin değerinin döndürülmesi gerektiğini söylüyor.
_Period değişkeni bir int döndürür.
ENUM_TIMEFRAMES Period() ayrıca bir int döndürüldüğünü ima eder.

Sadece sen demek istiyorsun. Aslında, Period(), ENUM_TIMEFRAMES enum değerini döndürür.

Bu numaralandırmanın sabitlerinin değerlerini yazdırırsanız, zaten size tanıdık gelen sayıları göreceksiniz.

Ve böylece her zaman olmuştur. MQL5'in doğuşundan beri.

Ve yardımda tam olarak neyin döndürüldüğü açıkça yazılmıştır:

Değer , ENUM_TIMEFRAMES numaralandırma değerlerinden biri olabilir.

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin :

Sadece sen demek istiyorsun. Aslında, Period(), ENUM_TIMEFRAMES enum değerini döndürür.

Bu numaralandırmanın sabitlerinin değerlerini yazdırırsanız, zaten size tanıdık gelen sayıları göreceksiniz.

Ve böylece her zaman olmuştur. MQL5'in doğuşundan beri.

Ve yardımda tam olarak neyin döndürüldüğü açıkça yazılmıştır:

Ne tür bir ENUM numaralandırması döndürüyor? ))
Ve kılavuz açıkça belirtiyor
Geçerli grafiğin zaman çerçevesi değerini döndürür.

Kendiniz için yazdırın

 Print ( PERIOD_M30 );
Print ( PERIOD_H1 );
 
Roman :

Ne tür bir ENUM numaralandırması döndürüyor? ))
Ve kılavuz açıkça belirtiyor
Geçerli grafiğin zaman çerçevesi değerini döndürür.

Kendiniz için yazdırın

Bana neyi kanıtlamak istiyorsun?

Neyin yazdırıldığı ve hangi verilerin, ne zaman ve nereye döndürüldüğü konusunda çok bilgiliyim.

Mevcut dönemin dakika sayısına ihtiyacınız var mı?

onları böyle al:

 PeriodSeconds ( Period ())/ 60 ;

veya bunun gibi:

 PeriodSeconds ( PERIOD_CURRENT )/ 60 ;

veya bunun gibi:

 PeriodSeconds ()/ 60 ;
 
Artyom Trishkin :

Bana neyi kanıtlamak istiyorsun?

Hiçbir şeyiniz yok, size sorun hakkında değil, geliştiricilere yazdım.
M30'da ve H1'de tekrar yazdırın ve farkı görün.

 Print ( _Period );
 
Roman :

Hiçbir şeyiniz yok, size sorun hakkında değil, geliştiricilere yazdım.
M30'da ve H1'de tekrar yazdırın ve farkı görün.

Problem değil. Ve o asla olmadı.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Artyom Trishkin , 2020.04.09 22:11

Bana neyi kanıtlamak istiyorsun?

Neyin yazdırıldığı ve hangi verilerin, ne zaman ve nereye döndürüldüğü konusunda çok bilgiliyim.

Mevcut dönemin dakika sayısına ihtiyacınız var mı?

onları böyle al:

 PeriodSeconds ( Period ())/ 60 ;

veya bunun gibi:

 PeriodSeconds ( PERIOD_CURRENT )/ 60 ;

veya bunun gibi:

 PeriodSeconds ()/ 60 ;

 
Roman :

Hiçbir şeyiniz yok, size sorun hakkında değil, geliştiricilere yazdım.
M30'da ve H1'de tekrar yazdırın ve farkı görün.

MQL4'ten uzaklaşamıyor musunuz?

Bunu MQL4'te yapın:

 PeriodSeconds ( Period ())/ 60 ;

veya bunun gibi:

 PeriodSeconds ( PERIOD_CURRENT )/ 60 ;

veya bunun gibi:

 PeriodSeconds ()/ 60 ;

ve elde edilen değerleri yazdırın.

 
Artyom Trishkin :

MQL4'ten uzaklaşamıyor musunuz?

Bunu MQL4'te yapın:

veya bunun gibi:

veya bunun gibi:

ve elde edilen değerleri yazdırın.

mql4 kullanmadı)) ve buna alışmadı.
Neden başka bir 60'a bölmen gerekiyor ???
Kılavuzda bundan nerede bahsediliyor?
Bunlar zaten hatayı atlayan koltuk değnekleriniz.
Ve şimdi tüm zaman dilimlerinde koltuk değneğinizi kontrol edin

 Print ( _Period / 60 );
 
Roman :

mql4 kullanmadı)) ve buna alışmadı.
Neden başka bir 60'a bölmen gerekiyor ???
Kılavuzda bundan nerede bahsediliyor?
Bunlar zaten hatayı atlayan koltuk değnekleriniz.

...
 
Roman :

_Period değişkeni ve M30'a kadar olan ve dahil olan Period() işlevi , değeri dakika cinsinden verir.
Periyot M1 ise 1
Periyot M2 ise 2
...
Dönem M30 ise 30

Saat periyodunun 60 olması mantıklı
iki saat 120
üç saat 180
vb.

Ancak H1'den başlayarak yanlış değerleri gösteriyor.

program "yanlış değerler" gösteriyorsa, programın orada "ne düşündüğüne" bakmanız gerekir, ancak yalnızca ikili biçimde düşünebilir.

Kontrol ettim ve işe yaradı:

 void OnStart ()
{

   ENUM_TIMEFRAMES allperiod[] = { PERIOD_CURRENT , PERIOD_M1 , PERIOD_M2 , PERIOD_M3 , PERIOD_M4 , PERIOD_M5 , PERIOD_M6 , PERIOD_M10 , PERIOD_M12 , PERIOD_M15 , PERIOD_M20 , PERIOD_M30 , PERIOD_H1 , PERIOD_H2 ,
                                   PERIOD_H3 , PERIOD_H4 , PERIOD_H6 , PERIOD_H8 , PERIOD_H12 , PERIOD_D1 , PERIOD_W1 , PERIOD_MN1
                                 };
   for ( int i = 0 ; i < ArraySize (allperiod); i++)
       Print (UintToBinary(( uint )allperiod[i]));

}
//+------------------------------------------------------------------+
string UintToBinary( uint n)
{
   string r = "" ;
   if (n == 0 ) return ( "0" );
   while (n != 0 )
   {
      r = (n % 2 == 0 ? "0" : "1" ) + r;
      n /= 2 ;
   }
   return (r);
}
//+------------------------------------------------------------------

2020.04.10 00:38:57.118 tst (EURUSD,H1) 0

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1

2020.04.10 00:38:57.118 tst (EURUSD,H1) on

2020.04.10 00:38:57.118 tst (EURUSD,H1) on bir

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 101

2020.04.10 00:38:57.118 tst (EURUSD,H1) 110

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1010

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1111

2020.04.10 00:38:57.118 tst (EURUSD,H1) 10100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 11110

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000001

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000010

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000011

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000110

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000001000

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000001100

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000011000

2020.04.10 00:38:57.118 tst (EURUSD,H1) 100000000000001

2020.04.10 00:38:57.118 tst (EURUSD,H1) 1100000000000001


 
Artyom Trishkin :
...

Gerçekten el...

Farklı zaman dilimlerinde yazdırın.

 Print ( _Period );
 2020.04 . 09 23 : 39 : 49.963 VP (EPM20,M1)   1
2020.04 . 09 23 : 39 : 53.135 VP (EPM20,M3)   3
2020.04 . 09 23 : 39 : 53.758 VP (EPM20,M5)   5
2020.04 . 09 23 : 39 : 54.377 VP (EPM20,M10)   10
2020.04 . 09 23 : 39 : 55.094 VP (EPM20,M15)   15
2020.04 . 09 23 : 39 : 55.679 VP (EPM20,M30)   30
2020.04 . 09 23 : 39 : 56.384 VP (EPM20,H1)   16385  //Почему не 60 ?
2020.04 . 09 23 : 39 : 57.071 VP (EPM20,H4)   16388  //Почему не 240 ?
2020.04 . 09 23 : 39 : 57.641 VP (EPM20,D1)   16408  //Почему не 1440 ?
2020.04 . 09 23 : 39 : 58.181 VP (EPM20,W1)   32769  и т.д.
2020.04 . 09 23 : 39 : 58.768 VP (EPM20,MN1)   49153