Ekonomik takvim. Sorular, tartışmalar.

 

MQL5 ekonomik takviminin nasıl çalıştığını anlamak istiyorum, ancak bir şeyler pek iyi gitmiyor. Dünün neredeyse tamamını ve bugünün başlangıcını geçirdim, ancak CalendarValueHistory'nin neden tüm olayları döndürmediğini anlamadım. Yoksa ben mi bu olayları biraz karıştırıyorum...

Dün takvimde yazılı olarak xx:45'te 4 etkinlik aldım. Etkinlik saatlerini "xx" olarak yazıyorum çünkü alınan saat tablodaki ile aynı değil. Ancak en azından bunun, belirtilen zaman ile bu verilerin alındığı terminal veya sunucunun zamanı arasındaki farktan kaynaklandığı anlaşılabilir. Ve bugün dakikalarla sadece 3 olay alıyorum: 45 ve nedenini anlayamıyorum.

Ve geliştiricilere bir soru: Dizide neden 2019.07.25 00:00 tarihi ilk sırada ve aşağıdaki satırlar artan düzende sıralanıyor. Sonuç listesine bakın.

 2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1)        [id] [event_id]              [time]            [period] [revision]       [actual_value]         [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 0 ]   96782    76020005 2019.07 . 25 00 : 00 : 00 1970.01 . 01 00 : 00 : 00            0 - 9223372036854775808 - 9223372036854775808 - 9223372036854775808 - 9223372036854775808              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 1 ]   96840    76030003 2019.07 . 24 11 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808              88500000 - 9223372036854775808              91600000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 2 ] 100501    484020006 2019.07 . 24 11 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                  10000 - 9223372036854775808                110000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 3 ] 100502    484020007 2019.07 . 24 11 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                160000 - 9223372036854775808                130000              0            0
// Пропущено, удалено вручную.
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 59 ]   93627    410010001 2019.07 . 25 21 : 00 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808              97500000 - 9223372036854775808              97000000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 60 ]   87322    392030006 2019.07 . 25 23 : 30 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                900000 - 9223372036854775808                900000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 61 ]   87323    392030004 2019.07 . 25 23 : 30 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                1100000 - 9223372036854775808                1100000              0            0
2019.07 . 24 10 : 12 : 22.297 ! 00 (EURUSD,H1) [ 62 ]   87324    392030005 2019.07 . 25 23 : 30 : 00 2019.07 . 01 00 : 00 : 00            0 - 9223372036854775808                800000 - 9223372036854775808                800000              0            0
 

Bazı sorular kaldırıldı. Zamanla anlaşıldı. Her şeyin basit olduğu ortaya çıktı. GMT saati alıyoruz ve GMT+3 sitede sunuldu bu yüzden tüm yanlış anlamalarım oluştu.

İşte ilk sonuç: Olayın açıklaması alındı, anlık görüntüdeki ilk satır


 2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) время и дата события - 2019.07 . 24 13 : 45 : 00
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) идентификатор события - 840500001
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) тип события из перечисления ENUM_CALENDAR_EVENT_TYPE - CALENDAR_TYPE_INDICATOR
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) сектор, к которому относится событие - CALENDAR_SECTOR_BUSINESS
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) частота (периодичность) события - CALENDAR_FREQUENCY_MONTH
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) режим времени события - CALENDAR_TIMEMODE_DATETIME
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) идентификатор страны - 840
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) текстовое имя страны (в текущей кодировке терминала) - Соединенные Штаты
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) единица измерения значения экономического индикатора - CALENDAR_UNIT_NONE
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) важность события - CALENDAR_IMPORTANCE_MODERATE
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) множитель значения экономического индикатора - CALENDAR_MULTIPLIER_NONE
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) количество знаков после запятой - 1
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) URL источника, где публикуется событие - https: //www.markiteconomics.com
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) код события - markit-manufacturing-pmi
2019.07 . 24 11 : 29 : 03.972 ! 00 (EURUSD,H1) текстовое имя события на языке терминала (в текущей кодировке терминала) - Индекс менеджеров по закупкам в производственном секторе от Markit
 

Geliştiriciler için soru:

Bu kod neden küçük değişikliklerle birlikte belgelerden alınmıştır?

 void OnStart ()
{
   MqlCalendarValue values[]; 

//--- запросим историю событий от текущего времени до конца сегодняшнего дня.
   if ( CalendarValueHistory (values, TimeCurrent (), iTime ( _Symbol , PERIOD_D1 , 0 )+ PeriodSeconds ( PERIOD_D1 ))) 
     { 
       PrintFormat ( "Получены значения событий по country_code=%s: %d" , ArraySize (values) ); 
//--- выведем значения событий в Журнал 
       ArrayPrint (values);
      
     } 
   else 
     { 
       PrintFormat ( "Ошибка! Не удалось получить события по стране country_code=%s" ); 
       PrintFormat ( "Код ошибки: %d" , GetLastError ()); 
     } 
//---
}

değerler dizisinin boyutunun sıfır olduğunu döndürür, ancak yine de takvimdeki her şeyi yazdırır. Yani, tüm olaylar alındı.

 2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) Получены значения событий по country_code=(non- string passed): 0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1)      [id] [event_id]              [time]            [period] [revision]       [actual_value] [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 0 ] 97265    76020013 2019.07 . 24 15 : 30 : 00 1970.01 . 01 00 : 00 : 00            0 - 9223372036854775808      - 1227000 - 9223372036854775808              - 2405000              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 1 ] 87842    840220012 2019.07 . 24 17 : 00 : 00 1970.01 . 01 00 : 00 : 00            0 - 9223372036854775808        1791000 - 9223372036854775808 - 9223372036854775808              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 2 ] 93625    410010011 2019.07 . 24 23 : 00 : 00 2019.04 . 01 00 : 00 : 00            1 - 9223372036854775808       - 400000 - 9223372036854775808                400000              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 3 ] 93626    410010012 2019.07 . 24 23 : 00 : 00 2019.04 . 01 00 : 00 : 00            1 - 9223372036854775808        1700000 - 9223372036854775808                2900000              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 4 ] 87394    392060016 2019.07 . 24 23 : 50 : 00 2019.06 . 01 00 : 00 : 00            0 - 9223372036854775808        800000 - 9223372036854775808                      0              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 5 ] 97012    392070003 2019.07 . 24 23 : 50 : 00 2019.07 . 20 00 : 00 : 00            0 - 9223372036854775808      950000000 - 9223372036854775808 - 9223372036854775808              0            0
2019.07 . 24 15 : 20 : 33.131 ! 00 (EURUSD,H1) [ 6 ] 97013    392070004 2019.07 . 24 23 : 50 : 00 2019.07 . 20 00 : 00 : 00            0 - 9223372036854775808     - 93100000 - 9223372036854775808 - 9223372036854775808              0            0

Nerede, çalışmak için zamanı olmayan nedir?

 
Biçim dizesinde fazladan %s
 
Renat Fatkhullin :
Biçim dizesinde fazladan %s

Evet teşekkür ederim. Bununla zaten ilgilendim. Dağıtılan belgelerden örnekte düzeltmeler yapmak.

 

@Renat Fatkhullin Renat, bir gün TimeGMTOffset() gibi bir işlevin yerel saate göre değil, yalnızca sunucu saatine göre yapılacağını ummak mümkün mü? Sonuçta, ekonomik takvimin işlevleri GMT saatini kullanır ve yerel saat genellikle sunucu saatiyle eşleşmez. Haberin zamanını aldıktan sonra, terminal sırasında çevirerek onunla dalga geçmeniz gerektiği ortaya çıktı. Hafta sonu böyle bir işlevi çağırırken sorunlar olabileceğini anlıyorum, ancak işlevin şu anda kullanılamadığı bir tür hata veya başka bir şey tanımlayabilirsiniz.

Şimdiye kadar şunu yaptım: OnInit()'te zaman farkı düşünülür ve global düzeydeki bir değişkene yazılır. Ama onda sevmediğim bir şey var. Bence yerleşik işlevi çağırıp haber saatini sunucu saatine ayarlamak daha iyi olur. Ayrıca, terminal muhtemelen sunucu saatinde ve hafta sonları kullanılabilir.

 
Alexey Viktorov :

@Renat Fatkhullin Renat, bir gün TimeGMTOffset() gibi bir işlevin yerel saate göre değil, yalnızca sunucu saatine göre yapılacağını ummak mümkün mü? Sonuçta, ekonomik takvimin işlevleri GMT saatini kullanır ve yerel saat genellikle sunucu saatiyle eşleşmez. Haberin zamanını aldıktan sonra, terminal sırasında çevirerek onunla dalga geçmeniz gerektiği ortaya çıktı. Hafta sonu böyle bir işlevi çağırırken sorunlar olabileceğini anlıyorum, ancak işlevin şu anda kullanılamadığı bir tür hata veya başka bir şey tanımlayabilirsiniz.

Şimdiye kadar şunu yaptım: OnInit()'te zaman farkı düşünülür ve global düzeydeki bir değişkene yazılır. Ama onda sevmediğim bir şey var. Bence yerleşik işlevi çağırıp haber saatini sunucu saatine ayarlamak daha iyi olur. Ayrıca, terminal muhtemelen sunucu saatinde ve hafta sonları kullanılabilir .

Tabii ki mevcut, bu zaten talep edildi.

 
Vitaly Muzichenko :

Tabii ki mevcut, bu zaten talep edildi.

Vitaly, herhangi bir talep tartışılmalı. Umarım böyle bir işlevin gerekliliğini yeterince tartışabilmişimdir. Artık sadece şirket programcılarının iş yüküne ve argümanların nasıl anlaşıldığına ve kabul edildiğine bağlı. Ümit etmek.

 

Takvimden hangi bilgiler alınabilir: (Programın kullandığı ve bir kişi için çok bilgilendirici olmayan değerler burada listelenmiyor)

  • ülkenin adı
  • Ülke para birimleri
  • etkinlik tipi

Etkinlik (miting, konuşma vb.)

Gösterge

Tatil


  • etkinliğin ait olduğu sektör

pazar, takas

Gayri Safi Yurtiçi Hasıla (GSYİH)

İşgücü piyasası

Fiyat:% s

Para

Ticaret

Devlet

İşletme

Tüketim

Konut

vergiler

Bayram


  • olayın terminal dilindeki metin adı (geçerli terminal kodlamasında)
  • etkinliğin saati ve tarihi
  • olay raporlama dönemi
  • göstergenin gerçek değeri
  • önceki gösterge değeri
  • revize edilmiş önceki gösterge değeri
  • göstergenin tahmin değeri
  • döviz kuru üzerindeki potansiyel etki

Etkisi belirtilmedi

Olumlu etki

Negatif etki


Ne yazık ki şu ana kadar haberlerin yayınlanmasından önce pozisyon açma yasağı dışında başka bir çözüme rastlamadım. Listelenenlerin hangi değerlerinin kullanılabileceğini ve bunlara nasıl yanıt verileceğini öğrenmek istiyorum.

Anladığım kadarıyla vurgulanan değerler, haberlere nasıl tepki verileceğine karar vermek için çok önemli ama nasıl olduğunu anlamıyorum. tartışmaya davet ediyorum.

 
Alexey Viktorov :

Takvimden hangi bilgiler alınabilir: (Programın kullandığı ve bir kişi için çok bilgilendirici olmayan değerler burada listelenmiyor)

  • ülkenin adı
  • Ülke para birimleri
  • etkinlik tipi

Etkinlik (miting, konuşma vb.)

Gösterge

Tatil


  • etkinliğin ait olduğu sektör

pazar, takas

Gayri Safi Yurtiçi Hasıla (GSYİH)

İşgücü piyasası

Fiyat:% s

Para

Ticaret

Devlet

İşletme

Tüketim

Konut

vergiler

Bayram


  • olayın terminal dilindeki metin adı (geçerli terminal kodlamasında)
  • etkinliğin saati ve tarihi
  • olay raporlama dönemi
  • göstergenin gerçek değeri
  • önceki gösterge değeri
  • revize edilmiş önceki gösterge değeri
  • göstergenin tahmin değeri
  • döviz kuru üzerindeki potansiyel etki

Etkisi belirtilmedi

Olumlu etki

Negatif etki


Ne yazık ki şu ana kadar haberlerin yayınlanmasından önce pozisyon açma yasağı dışında başka bir çözüme rastlamadım. Listelenenlerin hangi değerlerinin kullanılabileceğini ve bunlara nasıl yanıt verileceğini öğrenmek istiyorum.

Anladığım kadarıyla vurgulanan değerler, haberlere nasıl tepki verileceğine karar vermek için çok önemli ama nasıl olduğunu anlamıyorum. tartışmaya davet ediyorum.

İşte haber göstergesinin benim versiyonum. Terminal, seçim için para birimlerine göre haberlerin yayınlanma zamanı hakkında bilgi sağlar, ayrıca önem derecesi de seçilir. Bilgi, fiyat grafiğinde dikey bir çizgi olarak görüntülenir. Alt pencerede, önemli olarak sınıflandırılan haberler için verileri tahmin etmek için güncel verilerin en son değerlerinin bir histogramını kronolojik sırayla oluşturuyoruz. Haberin türüne göre (Faiz oranları, İşsizlik oranı, Tüketici fiyat endeksi, GSYİH vb. ) farklı renklerle renklendiriyoruz. Ortaya çıkan çizelge, zaman dilimleri değiştirilirken fiyat tablosu ile zaman ve ölçekte senkronize edilmelidir. Ayrıca ilgili verileri elde etme hızıyla da ilgilenir.

 
Vladimir Kononenko :

İşte haber göstergesinin benim versiyonum. Terminal, seçim için para birimlerine göre haberlerin yayınlanma zamanı hakkında bilgi sağlar, ayrıca önem derecesi de seçilir. Bilgi, fiyat grafiğinde dikey bir çizgi olarak görüntülenir. Alt pencerede, önemli olarak sınıflandırılan haberler için verileri tahmin etmek için güncel verilerin en son değerlerinin bir histogramını kronolojik sırayla oluşturuyoruz. Zaman dilimleri değiştirilirken ortaya çıkan grafik, fiyat grafiği ile zaman içinde senkronize edilmelidir. Ayrıca ilgili verileri elde etme hızıyla da ilgilenir.

Grafikte mevcut olan tüm geçmiş derinliği için histogramları mı kastediyorsunuz?

Ama bu gerçek kullanım içindir, gerçek zamanlı olarak herhangi bir bilgi vermez. Yoksa ben mi hiçbir şey anlamadım? Tahmini ve mevcut değeri aldık, peki, bir histogram koyduk ve sonra? Sadece manuel olarak mı karar veriyorsunuz?

Takvimde veri güncelleme hızına bakmadım ve hazır veri alma hızı ölçülmeli ama hız oldukça yüksek olduğu için böyle bir istek yok.