Hatalar, hatalar, sorular - sayfa 310

 

Fark ne ?

 CHART_WIDTH_IN_BARS Ширина графика в барах
от
CHART_VISIBLE_BARS Количество баров на графике, доступных для отображения
 
Urain :

Fark ne ?

Girinti ayarlanmışsa sağda boş bir alan olabilir. Bu durumda CHART_VISIBLE_BARS, CHART_WIDTH_IN_BARS'tan daha küçük bir değer gösterecektir.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Urain :

Fark ne ?

kelimenin tam anlamıyla farklı


 
Rosh :
Soru nedir?

1. Komut dosyasını gönderiye bükülmüş olarak alıyoruz ve grafikte yürütüyoruz. Komut dosyası belirli sayıda çubuğu kopyalamalı ve en eski 20 çubuğu yazdırmalıdır.

Bu seçenek kullanılır (hatalar için herhangi bir kontrol ve tuzak olmadığını anlıyorum, ancak yine de)

 int    CopyRates (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   int               start_pos,         // откуда начнем 
   int               count,             // сколько копируем
   MqlRates          rates_array[]       // массив, куда будут скопированы данные
   ); 

Yani benim belirttiğim parametrelerle (çubuk sayısı ve M1) betik çalıştırılıyor ama bazen NORMAL çalışmayı reddediyor. Bu, belirli sayıda çubukla olur (368700'den fazla aldım).

368800'de çok daha az çubuk döndürür (ancak her zaman farklı bir sayı - 368732 / 368735 / 368736 veya o civarda bir şey).

Ancak 360.000'de bile her zaman doğru çalışmıyor, sadece 10.000 çubuğun aptalca kopyalandığı durumlar vardı.

2. İki tarihin belirtildiği seçenek beni tamamen şok etti. İlk tarih olarak 0'ı kabul etmek istememesine rağmen (bence mantıklı), ayrıca maksimum 10000 kopyalar.

0 int olarak başlangıç_zamanı olarak bu anlaşılabilir olsa da (deneyim vardır), tamamen işlevin aşırı yüklenmesi ve bazı şeylerin derleyicisi tarafından "yanlış anlaşılması" ile ilgilidir. Ama bu yüzden 10.000 bar ayrı bir konudur, buna "milyonda" denir.

10.000 dakikalık çubuklar anladığımız kadarıyla 2011'i geçmeyecek, her şeyi doğru anlarsam Şubat'tan öteye geçmeyecek (ve yukarıdan da anlaşılacağı gibi en az 360.000 yüklenmiş).

 int    CopyRates (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   datetime          start_time,         // с какой даты
   datetime          stop_time,         // по какую дату
   MqlRates          rates_array[]       // массив, куда будут скопированы данные
   ); 

not

Aynı zamanda, normal geçişin ve "buggy" geçişin hızı (komut dosyası yalnızca 10.000 çubuk kopyaladığında) önemli ölçüde farklılık gösterir.

PPS

Lütfen yardımın belirli bölümlerine (veya daha doğrusu onlar için örneklere) mantıksal sonlarına bakın, böylece belirsizlik ve diğer "aptalca" durumlar olmaz.

Ek kontroller vb. koymak arzu edilir. Bu durumda, parametrelerin açıklamasında (en azından zaman çerçevesinde ) çapraz referans yoktur ve start_time ve start_pos'un ne tür olduğu açık değildir . Bu tarih saatini anlıyorum (aksi takdirde, derleyici neden start_time olarak 0 kullansın )

//Код по третьему варианту, может я что-то упустил?
//Так ругается - 'CopyRates' - ambiguous call to overloaded function
Copied = CopyRates ( Symbol (), PERIOD_M1 , 0 , TimeCurrent (),Rates);
//Так нет, но копирует только 10000 баров
Copied = CopyRates ( Symbol (), PERIOD_M1 , ( datetime )0 , TimeCurrent (),Rates);
 

Şuna bir bak, bu bir böcek mi yoksa benim sopam mı?

 void OnStart ()
  {
//---
   long chart_id= ChartID ();
   ChartSetInteger (chart_id, CHART_AUTOSCROLL , false );   // отключаем автоскролл
   while (! IsStopped ())
     {
       //------------------      
       ChartNavigate (chart_id, CHART_END ,- 2410 ); // делаем навигацию , поставим константу
       //------------------
       Sleep ( 500 );
       ChartSetString (chart_id, CHART_COMMENT , ChartGetInteger (chart_id, CHART_FIRST_VISIBLE_BAR ));
       ChartRedraw (chart_id); // отображаем первый бар чарта после навигации
       Sleep ( 500 );
     }        
  }


Sıfır çubuğundan grafikte gezinirken, grafik seğirir. Sorunu daha net bir şekilde vurgulamak için gezinme ve güncelleme arasına kasıtlı olarak fişler ekledim. Ancak hata, fişler olmadan da var. ChartNavigate()'in önce grafiği sıfıra ve sonra geri taşıdığı ortaya çıktı. Üstelik bunu her seferinde yapmıyor.

Tehdit en azından ChartNavigate()'i her çağırdığınızda bug'ın olmaması , slipsiz başladığınızda izlenimi veriyor.

Документация по MQL5: Операции с графиками / ChartNavigate
Документация по MQL5: Операции с графиками / ChartNavigate
  • www.mql5.com
Операции с графиками / ChartNavigate - Документация по MQL5
 
Urain :

Şuna bir bak, bu bir böcek mi yoksa benim sopam mı?


Sıfır çubuğundan grafikte gezinirken, grafik seğirir. Sorunu daha net bir şekilde vurgulamak için gezinme ve güncelleme arasına kasıtlı olarak fişler ekledim. Ancak hata, fişler olmadan da var. ChartNavigate()'in önce grafiği sıfıra ve sonra geri taşıdığı ortaya çıktı. Üstelik bunu her seferinde yapmıyor.

Tehdit en azından ChartNavigate()'i her çağırdığınızda bug'ın olmaması , slipsiz başladığınızda izlenimi veriyor.


Konudaki örneği deneyin ChartNavigate işlevi çalışmıyor, lütfen yardım edin
 

Baktı ve ne? Bu örnekte benim kodumdan temel olarak farklı olan nedir?

Sadece kodunuzda gezinme bir kez çağrılırken, grafiği her zaman istenen çubukta tutmam gerekiyor (kullanıcı eylemlerinden bağımsız olarak).

Örneğinizi inceledikten sonra, grafiği güncellemeden kodumu çalıştırdım (program hala çok sayıda grafik dönüşümü kullandığından bu benim için önemli olsa da), ancak bu da yardımcı olmadı. Seğirme kalır. Her neyse, aynı noktaya yeniden navigasyon yapılırken, sıfır çubuğuna navigasyon gerçekleşir ve ancak o zaman istenen noktaya navigasyon yapılır.

ZY Geçerli çubuktan navigasyon kullanmak benim için de kabul edilemez, çünkü program çalışırken kullanıcı grafiği yanlışlıkla hareket ettirebilir.

 
Hemen net değilse, açıklayacağım: yukarıdaki kod, belirli bir çubukta otomatik kaydırmayı taklit etme girişimidir.
 
Interesting :
Hikaye tamamen berbat mı?
Elbette bir geçmişi vardır, ancak tüm solucanların yayılma geçmişi yoktur!
 
Urain :

Baktı ve ne? Bu örnekte benim kodumdan temel olarak farklı olan nedir?

Sadece kodunuzda gezinme bir kez çağrılırken, grafiği her zaman istenen çubukta tutmam gerekiyor (kullanıcı eylemlerinden bağımsız olarak).

Örneğinizi inceledikten sonra, grafiği güncellemeden kodumu çalıştırdım (bu benim için önemli olsa da, program hala çok sayıda grafik dönüşümü kullandığından), ancak bu da yardımcı olmadı. Seğirme kalır. Her neyse, aynı noktaya yeniden navigasyon yapılırken, sıfır çubuğuna navigasyon gerçekleşir ve ancak o zaman istenen noktaya navigasyon yapılır.

ZY Geçerli çubuktan navigasyon kullanmak benim için de kabul edilemez, çünkü program çalışırken kullanıcı grafiği yanlışlıkla hareket ettirebilir.

Hindimle bir sorunum var, sadece kene gelir gelmez yeniden çiziyor ve nasıl düzeltileceği belli değil mi?