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

 
Сергей Таболин :

İlk yol yardımcı oldu)))) Teşekkürler.

Bir soru daha: Farklı zaman dilimlerinden veri almak için göstergede göstergenin 3 örneğini açıyorum. Ancak grafiğe eklediğimde aşağıdaki çıktıyı alıyorum:

Bu ne anlama geliyor?

Kesin olarak söyleyemem ama belki de 2. arabellek geç başlatıldı.

Sebebin ne olduğunu daha kesin olarak öğrenmek için aşağıdaki satırları yaklaşık olarak bu şekilde düzeltmeniz gerekir.

 if ( CopyBuffer (handle_MA, 0 , 0 ,ma_values_to_copy,buffer_MA) < 0 ) // копируем данные из индикаторного массива в массив buffer_MA
   {                                                                                 // если не скопировалось
       Print ( "Не удалось скопировать данные из индикаторного буфера в buffer_MA, код ошибки " + IntegerToString ( GetLastError ()));   // то выводим сообщение об ошибке
       return ( 0 );                                                                     // и выходим из функции
   }

O zaman neler olup bittiği konusunda daha emin olabilirsiniz.

 
Oleg Peiko :

Kesin olarak söyleyemem ama belki de 2. arabellek geç başlatıldı.

Sebebin ne olduğunu daha kesin olarak öğrenmek için aşağıdaki satırları yaklaşık olarak bu şekilde düzeltmeniz gerekir.

O zaman neler olup bittiği konusunda daha emin olabilirsiniz.

 2019.03 . 23 22 : 58 : 11.410 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA
2019.03 . 23 22 : 58 : 11.410 my_HMA5_123 (GBPUSD,M30)        Не удалось скопировать данные из индикаторного буфера в buffer_MA2
2019.03 . 23 22 : 58 : 11.410 my_HMA5_123 (GBPUSD,M30)         4806
2019.03 . 23 22 : 58 : 11.637 my_HMA5_123.ex5::my_HMA5 (GBPUSD,M15)   BarsCalculated () вернул - 1 , код ошибки 4806
2019.03 . 23 22 : 58 : 11.648 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA
2019.03 . 23 22 : 58 : 11.648 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA2
2019.03 . 23 22 : 58 : 11.648 my_HMA5_123 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA3
ERR_INDICATOR_DATA_NOT_FOUND      4806     Запрошенные данные не найдены

Bu konuda bir şey yapılabilir mi?

Bu arada, bu kopya M15'te açılıyor.

Ancak, diğer TF'ler ile aynı ...

 
Сергей Таболин :

Bu konuda bir şey yapılabilir mi?

Bu arada, bu kopya M15'te açılıyor.

Ancak, diğer TF'ler ile aynı ...

Zamanlayıcıda, her iki dakikada bir, gerekli zaman çerçevesi için herhangi bir veri isteyin. Böylece tf ile ilgili her zaman güncel verilere sahip olursunuz.

Ek olarak: OnCalculate() içinde en başta soruyorsunuz, örneğin:

   if ( iTime ( NULL , PERIOD_M15 , 1 )== 0 )
       return 0 ;

Böylece, on beş dakikalık zaman diliminin verileri hazır olana kadar gösterge bir sonraki tik için bekleyecektir.
CopyXXX işlevini kullanarak hesaplama için gerekli miktarda veri talep edebilirsiniz:

   datetime array[];
   if ( CopyTime ( NULL , PERIOD_M15 , 0 ,number_of_datas,array)!=number_of_datas)
       return 0 ;

Bu durumda, veri_sayısında gerekli veri miktarı mevcut olana kadar, gösterge bir sonraki onay işaretini bekleyecektir.

Fonksiyonu kullanmaya karar verirseniz

 Bars ( NULL , PERIOD_M15 );

.., o zaman hesaplama için oranların toplamından daha fazla olmayan veri miktarını almanız gerektiğini dikkate almalısınız, aksi takdirde dizi sınırların ötesine geçecektir . Başka bir deyişle, mevcut TF'de M15'ten daha az çubuk varsa, o zaman mevcut TF'deki sayılarına eşit çubuk sayısını almanız gerekir = oranları_toplam

 
Artyom Trishkin :

Zamanlayıcıda, her iki dakikada bir, gerekli zaman çerçevesi için herhangi bir veri isteyin. Böylece tf ile ilgili her zaman güncel verilere sahip olursunuz.

Ek olarak: OnCalculate() içinde en başta soruyorsunuz, örneğin:

Böylece, on beş dakikalık zaman diliminin verileri hazır olana kadar gösterge bir sonraki tik için bekleyecektir.
CopyXXX işlevini kullanarak hesaplama için gerekli miktarda veri talep edebilirsiniz:

Bu durumda, veri_sayısında gerekli veri miktarı mevcut olana kadar, gösterge bir sonraki onay işaretini bekleyecektir.

Fonksiyonu kullanmaya karar verirseniz

.., o zaman hesaplama için oranların toplamından daha fazla olmayan veri miktarını almanız gerektiğini dikkate almalısınız, aksi takdirde dizi sınırların ötesine geçecektir . Başka bir deyişle, mevcut TF'de M15'ten daha az çubuk varsa, o zaman mevcut TF'deki sayılarına eşit çubuk sayısını almanız gerekir = oranları_toplam

Teşekkür ederim.

Böyle mi yaptı:

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   
   if ( iTime ( NULL , PERIOD_CURRENT , 1 )== 0 )   return ( 0 ); 
   if ( iTime ( NULL ,periodTF1, 1 )== 0 )       return ( 0 ); 
   if ( iTime ( NULL ,periodTF2, 1 )== 0 )       return ( 0 ); 
   
   int ma_values_to_copy; 
   int ma_calculated = 0 ;
   if ( PeriodSeconds ( PERIOD_CURRENT ) < PeriodSeconds (periodTF1) && PeriodSeconds ( PERIOD_CURRENT ) < PeriodSeconds (periodTF2))   ma_calculated = BarsCalculated (handle_MA);
   else
   if ( PeriodSeconds (periodTF1) < PeriodSeconds ( PERIOD_CURRENT ) && PeriodSeconds (periodTF1) < PeriodSeconds (periodTF2))        ma_calculated = BarsCalculated (handle_MA2);
   else
   if ( PeriodSeconds (periodTF2) < PeriodSeconds ( PERIOD_CURRENT ) && PeriodSeconds (periodTF2) < PeriodSeconds (periodTF1))        ma_calculated = BarsCalculated (handle_MA3);
   
   if (ma_calculated <= 0 ){ 
       PrintFormat (" BarsCalculated () вернул %d, код ошибки %d",ma_calculated, GetLastError ()); 
       return ( 0 ); 
     }  
   if (prev_calculated == 0 || ma_calculated != ma_bars_calculated || rates_total > prev_calculated + 1 ){ 
       if (ma_calculated > rates_total) ma_values_to_copy = rates_total; 
       else ma_values_to_copy = ma_calculated; 
     } else { 
      ma_values_to_copy = (rates_total - prev_calculated) + 1 ; 
     } 

sonuç:

 2019.03 . 24 00 : 56 : 38.056 my_HMA5_125 (GBPUSD,M30)         BarsCalculated () вернул - 1 , код ошибки 4806
2019.03 . 24 00 : 56 : 38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA
2019.03 . 24 00 : 56 : 38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA_c
2019.03 . 24 00 : 56 : 38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA2
2019.03 . 24 00 : 56 : 38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA_c2
2019.03 . 24 00 : 56 : 38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA3
2019.03 . 24 00 : 56 : 38.226 my_HMA5_125 (GBPUSD,M30)        Скопирован индикаторный буфер в buffer_MA_c3

göstergeler benim için zor)))

 

Merhaba!
Lütfen bana CopyHigh işlevinden bahsedin.
" İlgili sembol ve dönem için çubukların maksimum fiyatına ilişkin tarihsel verileri bir diziye alır " işlevinin tanımında okudum.

Bir dizi Alış veya Satış fiyatına ne dersiniz? Veya bir şekilde ihtiyacınız olan fiyat türünü belirleyebilirsiniz?

 
renatmt5 :

Merhaba!
Lütfen bana CopyHigh işlevinden bahsedin.
" İlgili sembol ve dönem için çubukların maksimum fiyatına ilişkin tarihsel verileri bir diziye alır " işlevinin tanımında okudum.

Bir dizi Alış veya Satış fiyatına ne dersiniz? Veya bir şekilde ihtiyacınız olan fiyat türünü belirleyebilirsiniz?

Yardım : Grafik Özellikleri

Çizim çizelgelerinin özellikleri

Grafiklerin temel alındığı tarihsel veriler sabit diskte depolanır. Bir grafik açıldığında, veriler diskten yüklenir ve son eksik veriler ticaret sunucusundan indirilir. Sabit diskte bir finansal araca ilişkin geçmiş veriler yoksa, geçmişin son 512 çubuğu yüklenir.

Daha eski verileri indirmek için grafiği gerekli alana taşıyın. Grafiği açtıktan sonra platform, güncel kotasyonlar hakkında bilgi almaya başlayacaktır. Böylece gerçek zamanlı olarak daha fazla fiyat dinamiği oluşur. Bu bilgi otomatik olarak geçmiş dosyasına kaydedilir ve gelecekte grafik yeniden açıldığında kullanılır.

  • AT   platform ayarları   "Grafikteki maksimum çubuklar" parametresi ayarlanır. Bu seçenek, grafikte görüntülenen geçmiş veri miktarını kontrol etmenizi sağlar.
  • Grafikler Teklif fiyatlarına dayanmaktadır . Sembol için Piyasa Derinliği mevcutsa, grafikler Son fiyatları (son tamamlanan işlemin fiyatı) temel alır.
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Просмотр и настройка графиков - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Графики в торговой платформе отображают изменение котировок финансовых инструментов во времени. Они необходимы для проведения технического анализа и работы советников. Они позволяют трейдерам наглядно следить за котировками валют и акций в режиме реального времени и моментально реагировать на любое изменение ситуации на финансовых рынках...
 
Vladimir Karputov :

Yardım : Grafik Özellikleri

Çizim çizelgelerinin özellikleri

Grafiklerin temel alındığı tarihsel veriler sabit diskte depolanır. Bir grafik açıldığında, veriler diskten yüklenir ve son eksik veriler ticaret sunucusundan indirilir. Sabit diskte bir finansal araca ilişkin geçmiş veriler yoksa, geçmişin son 512 çubuğu yüklenir.

Daha eski verileri indirmek için grafiği gerekli alana taşıyın. Grafiği açtıktan sonra platform, güncel kotasyonlar hakkında bilgi almaya başlayacaktır. Böylece gerçek zamanlı olarak daha fazla fiyat dinamiği oluşur. Bu bilgi otomatik olarak geçmiş dosyasına kaydedilir ve gelecekte grafik yeniden açıldığında kullanılır.

  • AT   platform ayarları   "Grafikteki maksimum çubuklar" parametresi ayarlanır. Bu seçenek, grafikte görüntülenen geçmiş veri miktarını kontrol etmenizi sağlar.
  • Grafikler Teklif fiyatlarına dayanmaktadır . Sembol için Piyasa Derinliği mevcutsa, grafikler Son fiyatları (son tamamlanan işlemin fiyatı) temel alır.

Vladimir, iyi günler! Her zaman olduğu gibi, yardım edin :) Teşekkürler!

 
Hepinize iyi günler. Lütfen işlem için tahsis edilen fonlara dayalı olarak pozisyonun doğru hacmini nasıl hesaplayacağımı söyleyin.
 

Mql5'te N'den en küçük mum nasıl bulunur?

mql4'te

   min= 99999 ;
   N= 5 ;
   for ( int i= 1 ;i<=N;i++)
     {
       if ( High [i]- Low [i]<min) min= High [i]- Low [i];
     }
 
yiduwi :

Mql5'te N'den minimum mum nasıl bulunur?

mql4'te

Bir danışmanda mı yoksa bir göstergede mi? Mevcut zaman dilimi için mi yoksa başka birinin mi?