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

 
Aleksey Vyazmikin :

Lütfen bir işlev oluşturmama yardım edin.

Mevcut bir zaman dilimim ve hesaplanmış bir zaman dilimim var, ölçüm çubuklar halindeyse, işlev herhangi bir kombinasyonda iki zaman dilimi arasındaki farkı döndürmelidir.

Tahmini TF on beş on beş on beş 60 60 60 240 240 240
Mevcut TF on beş 5 1 on beş 5 1 60 on beş 5
Nbar'daki Fark 1 3 on beş 4 12 60 4 on altı 48

Nasıl doğru bir şekilde uygulanır?


öyle mi

 int TFk()
{
   int K= 0 ;
   K=TF_transfer(TF)/TF_transfer( Period ());
//   Print(TF_transfer(TF),"   ",TF_transfer(Period()));
//Print (K);
   if    (K< 1 ) return ( 1 );
   else        return (K);
}


int TF_transfer( ENUM_TIMEFRAMES tf)
  {
   if (tf== PERIOD_CURRENT ) return ( 0 );
   if (tf== PERIOD_M1 ) return ( 1 );
   if (tf== PERIOD_M5 ) return ( 5 );
   if (tf== PERIOD_M15 ) return ( 15 );
   if (tf== PERIOD_M30 ) return ( 30 );
   if (tf== PERIOD_H1 ) return ( 60 );
   if (tf== PERIOD_H4 ) return ( 240 );
   if (tf== PERIOD_D1 ) return ( 1440 );
   if (tf== PERIOD_W1 ) return ( 10080 );
   if (tf== PERIOD_MN1 ) return ( 43200 );  
   if (tf== PERIOD_M2 ) return ( 2 );
   if (tf== PERIOD_M3 ) return ( 3 );
   if (tf== PERIOD_M4 ) return ( 4 );
   if (tf== PERIOD_M6 ) return ( 6 );
   if (tf== PERIOD_M10 ) return ( 10 );
   if (tf== PERIOD_M12 ) return ( 12 );
   if (tf== PERIOD_H2 ) return ( 120 );
   if (tf== PERIOD_H3 ) return ( 180 );  
   if (tf== PERIOD_M6 ) return ( 360 );
   if (tf== PERIOD_H8 ) return ( 480 );
   if (tf== PERIOD_H12 ) return ( 720 );
   return ( 1 );
  }

Sorun şu ki, gösterge için bu mutluluğa ihtiyacım var, ancak bu garip ve böyle bir koda doğru şekilde başlatılmak istemiyor.

 int OnInit()
  {
   Print ( "K=" ,TFk(), " Период=" , Period ());

return(INIT_SUCCEEDED); }

Şu şekilde tepki verir:

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 Dönem=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) Ölçek

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (Eu Splice,M15) K=1 Dönem=15

En anlaşılmaz şey, zaten OnCalculate'in gövdesinde bulunan testin yazdırılmış olmasıdır!

 if ( BarsCalculated (handle)< 0 ) { Print ( "test" ); return ( 0 );}

Zaman çerçevesinin ilk kez doğru tanımlandığı ve ikinci kez doğru tanımlanmadığı ortaya çıktı...

Ne mucizeler, bilmiyorum ...

Bilsem de, göstergeden gelen bu çağrı, bir daire içinde koşuyor...
 
Aleksey Vyazmikin :

öyle mi

Sorun şu ki, gösterge için bu mutluluğa ihtiyacım var, ancak bu garip ve böyle bir koda doğru şekilde başlatılmak istemiyor.

Şu şekilde tepki verir:

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 Dönem=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) Ölçek

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (Eu Splice,M15) K=1 Dönem=15

En anlaşılmaz şey, zaten OnCalculate'in gövdesinde bulunan testin yazdırılmış olmasıdır!

Zaman çerçevesinin ilk kez doğru tanımlandığı ve ikinci kez doğru tanımlanmadığı ortaya çıktı...

Ne mucizeler, bilmiyorum ...

Bilsem de, göstergeden gelen bu çağrı, bir daire içinde koşuyor...

Ve neden böyle sapkınlıklar???

Bu daha kolay değil mi?

K = PeriodSeconds (TF)/ PeriodSeconds ( Period ());
 
Alexey Viktorov :

Ve neden böyle sapkınlıklar???

Bu daha kolay değil mi?


Yani yeni başlayanlar için bir dal, bu yüzden bu olasılığı bilmiyordum, uyardığınız için teşekkürler.

 

Söyleyin lütfen, şimdi iki TF'li iBarShift'in en güvenilir işlevi nedir?

Benim görevim, örneğin dakika çubuğunda üst zaman dilimindeki göstergenin değerini, örneğin М15'i bulmaktır. Zaman çerçeveleri, kararı zorlaştıran herhangi biri olabilir.

TF saati için, yapı üzerinden yaptım, ama eğer M15 ise, o zaman kafam karıştı...

 
Aleksey Vyazmikin :

Söyleyin lütfen, şimdi iki TF'li iBarShift'in en güvenilir işlevi nedir?

Benim görevim, örneğin dakika çubuğunda üst zaman dilimindeki göstergenin değerini, örneğin М15'i bulmaktır. Zaman çerçeveleri, kararı zorlaştıran herhangi biri olabilir.

TF saati için, yapı üzerinden yaptım, ama eğer M15 ise, o zaman kafam karıştı...

Bu komut dosyasını döndürün: En Yakın Çubuğu Arama

 
Vladimir Karputov :

Bu komut dosyasını döndürün: En Yakın Çubuğu Arama


Teşekkür ederim.

 
Aleksey Vyazmikin :

Yani yeni başlayanlar için bir dal, bu yüzden bu olasılığı bilmiyordum, uyardığınız için teşekkürler.

Alexey, bu uzun zamandır mql4'te.


Alexey Vyazmikin :

Söyleyin lütfen, şimdi iki TF'li iBarShift'in en güvenilir işlevi nedir?

Benim görevim, örneğin, dakika çubuğunda, üst zaman dilimindeki göstergenin değerini, örneğin M15'i bulmaktır. Zaman çerçeveleri, kararı zorlaştıran herhangi biri olabilir.

TF saati için, yapı üzerinden yaptım, ama eğer M15 ise, o zaman kafam karıştı...

Ve bu durumda, mql4'te olduğu gibi çubuk numaralandırmayı unutmaya çalışın. Mql5'te hemen hemen her şeye bar zamanı karar verir. Peki, son çare olarak Bars() işlevini kullanın.

 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :
Alexey, bu uzun zamandır mql4'te.

Görünüşe göre bu, asla iddia etmediğim mql4'ü iyi bilmediğim anlamına geliyor ...

Alexey Viktorov :

Ve bu durumda, mql4'te olduğu gibi çubuk numaralandırmayı unutmaya çalışın. Mql5'te hemen hemen her şeye bar zamanı karar verir. Peki, son çare olarak Bars() işlevini kullanın.

Yuvarlamadan emin misin?

Diyelim ki m1'deki saat 14:44 ve benim saat 14:30'u almam gerekiyor (ilk çubuk M15).

 
Aleksey Vyazmikin :

Görünüşe göre bu, asla iddia etmediğim mql4'ü iyi bilmediğim anlamına geliyor ...

Yuvarlamadan emin misin?

Diyelim ki m1'deki saat 14:44 ve benim saat 14:30'u almam gerekiyor (ilk çubuk M15).

Farklı bir seriden. 14:30 barın M15 periyodundan 14:44'te ne alınmalıdır? Kopyala**** işlevini alın, içine PERIOD_M15 koyun ve saat 14:44, bakın ne olacak. Ve beklediğiniz gibi olmadığında, sorular farklı olacaktır.

 
Alexey Viktorov :

Farklı bir seriden. 14:30 barın M15 periyodundan 14:44'te ne alınmalıdır? Kopyala**** işlevini alın, içine PERIOD_M15 koyun ve saat 14:44, bakın ne olacak. Ve beklediğiniz gibi olmadığında, sorular farklı olacaktır.


Evet, bu yönde çalıştım. Genel olarak bana yardımcı oldular. Sana da teşekkürler.