"CopyTicks"in Test Edilmesi - sayfa 25

 
Ya da belki ona işkence ettin? :)
 
prostotrader :
Ya da belki ona işkence ettin? :)

Ve orada. Onu çok vuruyor. Haraç ödemeliyiz - bir sersemliğe düşmesine rağmen, bu nadirdir.

Güzel kene göstergesi yazdı. Nadir görülen çökmelerde hata ayıklamak için çok tembel.

 
fxsaber :

Ve orada. Onu çok vuruyor. Haraç ödemeliyiz - bir sersemliğe düşmesine rağmen, bu nadirdir.

Güzelkene göstergesi yazdı. Nadir görülen çökmelerde hata ayıklamak için çok tembel.

Her seferinde gerçek zamanlı olarak tüm keneleri bir muma tam olarak koymayı başarıyor musunuz?

Katma:

Hacimlere göre kontrol ile COPY_TICKS_TRADE modunda.

 
Alexey Kozitsyn :

Her seferinde gerçek zamanlı olarak tüm keneleri bir muma tam olarak koymayı başarıyor musunuz?

Katma:

Hacimlere göre kontrol ile COPY_TICKS_TRADE modunda.

Birkaç tane daha var. "Analogları yok" ve falan falan filan gibi.

Performans açısından, sanmıyorum. önemli bir gelişme bir sonraki yapıda vaat ediliyor.

 
fxsaber :

Birkaç tane daha var. "Analogları yok" ve falan falan filan gibi.

Performans açısından, sanmıyorum. önemli bir gelişme bir sonraki yapıda vaat ediliyor.

Evet, performansla ilgili değil ... böyle durumlar var, örneğin şimdi:

Gösterge, keneleri toplar ve bunlara göre hacmi hesaplar. Daha sonra bu hacmi birimden [] gelen hacimle karşılaştırır.

Ve birkaç hata oluşur:

1. Bazen günün ilk mumunun hacmi yanlış hesaplanır (kontrolle eşleşmez);

2. Bazen tiklere göre hacim doğru hesaplanır ve hacim yanlış bir değer döndürür;

3. Bazen tiklere göre hacim yanlış hesaplanır ve hacim yanlış bir değer döndürür;

En ilginç şey, geçmişte 1,2 veya 3 numaralı hatalar meydana gelirse, gösterge yeniden derlendikten sonra hatanın kaybolmamasıdır. Ve başka bir sunucuya bağlantı durumunda - kaybolur.

Kısacası, mucizeler henüz bitmedi.

Geliştiriciler bu gönderiyi okursa ve çözmek isterse, servis masasına hoş geldiniz, tüm kaynakları sağlayacağım.

 
Renat Fatkhullin :

CopyTicks'i şu şekilde test edebilirsiniz:

MqlTick ExtArr[ 2048 ];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
   ulong from   =( TimeTradeServer ()- 1200 )* 1000 ;
   ulong ticks  = GetMicrosecondCount ();
   int    records= CopyTicks ( _Symbol ,ExtArr, COPY_TICKS_INFO ,from, 2048 );

   ticks= GetMicrosecondCount ()-ticks;
   Print ( "Time: " ,ticks, " msc for " ,records, " records" );
  }

İşte mikrosaniye cinsinden çıktı: Son 20 dakikada 2048 INFO işaretinin numunesi başına 95 mikrosaniye

2016.10 . 18 14 : 15 : 38.673 TEST (USDCHF,M1)         Time : 95 msc for 1206 records
Sizin tarafınızdan beyan edilen on milisaniyeden önemli ölçüde farklıdır. Çünkü CopyTicks'i ölçmediniz.

Piyasa kapandıktan sonra frenler

MqlTick ExtArr[ 2048 ];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart ()
  {
   ulong from   =( TimeCurrent ()- 1200 )* 1000 ;
   ulong ticks  = GetMicrosecondCount ();
   int    records= CopyTicks ( _Symbol ,ExtArr, COPY_TICKS_INFO ,from, 2048 );

   ticks= GetMicrosecondCount ()-ticks;
   Print ( "Time: " ,ticks, " msc for " ,records, " records" );
  }

Sonuç

2016.10 . 29 00 : 31 : 10.952 Test (GBPUSD,M1)         Time : 85 msc for 1333 records
2016.10 . 29 00 : 31 : 05.435 Test (EURCHF,M1)         Time : 15283 msc for 874 records
2016.10 . 29 00 : 31 : 03.960 Test (EURCHF,M1)         Time : 11629 msc for 874 records
2016.10 . 29 00 : 31 : 02.128 Test (EURCHF,M1)         Time : 10127 msc for 874 records
2016.10 . 29 00 : 31 : 00.332 Test (EURCHF,M1)         Time : 7318 msc for 874 records

2016.10 . 29 00 : 30 : 52.049 Test (EURUSD,M1)         Time : 51 msc for 862 records

Bunun sadece EURCHF'de olduğu görünebilir. Ancak EURUSD almaya ve teklifleri yüklemeye değer. Komut dosyasının onlarca milisaniye boyunca EURSD'de nasıl başladığı ve çalıştığı. Bu frenler piyasa kapandıktan sonra başladı. Kapatmadan önce, her şey daha hızlı büyüklük emirleriydi.

 

Sevgili geliştiriciler! CopyTicks() sorunu ve özellikle, bir mum üzerindeki hacimlerin senkronizasyonu (bir mumun tüm tik hacimlerini bir muma paketlemek ve onu bu mumun hacmi[] ile karşılaştırmak). Devam ediyor.

Şimdi yine 2 hata var:

1. Açılış mumunda (10.00) sabit ses kontrol hatası oluşuyor. RTS, SBRF, Si (tümü -12.16) üzerinde test ediyorum. Bu araçların her birinde hata!

2. Herhangi bir nedenle mum üzerinde gerçek zamanlı olarak 10.00'dan sonra bir ses kontrol hatası varsa, aynı hata geçmiş üzerinde de oluşur. Yine de! Sunucuyu değiştirirseniz - geçmişteki hata kaybolur.

 

Önceki gönderiye örnek (yanlışlıkla 2):

2016.10 . 31 12 : 13 : 43.699 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 05 пройден! Контрольная сумма = 3480 ( 1353 + 2127 )
2016.10 . 31 12 : 13 : 43.699 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 06 пройден! Контрольная сумма = 4103 ( 2236 + 1867 )
2016.10 . 31 12 : 13 : 43.699 (Si- 12.16 ,M1)   VolumeControl: ОШИБКА на свече 2016.10 . 31 10 : 07 ! Сумма объемов на покупку = 1074 , сумма объемов на продажу = 3917 , контрольная сумма (покупки+продажи) = 5009
2016.10 . 31 12 : 13 : 43.699 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 08 пройден! Контрольная сумма = 3121 ( 1479 + 1642 )
2016.10 . 31 12 : 13 : 43.699 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 09 пройден! Контрольная сумма = 3760 ( 1046 + 2714 )

Bu, sunucu değişikliğinden önce. Ve sunucuyu değiştirdikten sonraki günlük:

2016.10 . 31 12 : 18 : 12.109 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 05 пройден! Контрольная сумма = 3480 ( 1353 + 2127 )
2016.10 . 31 12 : 18 : 12.109 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 06 пройден! Контрольная сумма = 4103 ( 2236 + 1867 )
2016.10 . 31 12 : 18 : 12.109 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 07 пройден! Контрольная сумма = 5009 ( 1082 + 3927 )
2016.10 . 31 12 : 18 : 12.109 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 08 пройден! Контрольная сумма = 3121 ( 1479 + 1642 )
2016.10 . 31 12 : 18 : 12.110 (Si- 12.16 ,M1)   VolumeControl: Контроль свечи 2016.10 . 31 10 : 09 пройден! Контрольная сумма = 3760 ( 1046 + 2714 )

İşte burada, yerelleştirilmiş "İŞ"! Ben kendim burada kontroller çizmiyorum, parantez içindeki değerleri ayarlamıyorum, buna ihtiyacım yok. Ama bir hata var ve sunucu değiştirilerek düzeltiliyor!

Bu, geçmiş kontrolünden bir günlüktür (gösterge başlatıldığında / "güncelleme" düğmesine basıldığında).

 

Ve şimdi 1 numaralı hata için.

Pazarın açılmasından bir süre sonra (şimdi yaklaşık 40 dakika geçti). Göstergenin tam olarak yeniden hesaplanmasıyla, mumu 10.00'da kontrol ederken artık hata yok! Sunucuyu değiştirmeden bile. Sanki biri hikayeyi sunucuya yüklemiş gibi.

 

# 2 numaralı hatayla ilgili başka bir gözlem:

Если по какой-то причине возникает ошибка контроля объемов на свече после 10.00 в реальном времени, то эта же ошибка возникает и на истории. Однако! Если изменить сервер - ошибка на истории пропадает. 

Daha önce alınan onay işaretlerinin yerel olarak makinede önbelleğe alındığı ve yalnızca bir sunucu değişikliğinden sonra bunların üzerine yazıldığı görülüyor. İyi olurdu, ama tam olarak alınmaları durumunda! Ve böylece tarihteki hataların biriktiği ortaya çıkıyor. Ve onlardan sadece ticaret sunucusunu değiştirerek kurtulabilirsiniz (en azından ben sadece bu şekilde biliyorum).
Neden: