"CopyTicks"in Test Edilmesi - sayfa 20

 

Sıfırdan farklı olarak CopyTicks'in içinden bir yer aranır (muhtemelen bir ikili arama ) nereden başlayacağı - dahili veritabanında bir dizin.

Lütfen veritabanındaki dizini zamana göre döndüren bir işlev ekleyin. O zaman bu problem en iyi şekilde çözülebilecek

fxsaber :
from_time'dan to_time'a keneler almak için en uygun (performans) algoritma nedir?
 

İyi bir nedenle, ""Tik" nedir?" konusu kaldırıldı. Hayatta kalan tarihten birkaç yanıtımı alıntılayacağım.

В парадигме MT тик - это то, что пришло от биржи. Единица стрима(-ов). Поэтому два подряд идущих тика могут полностью совпадать (MqlTick), но при этом не обозначать одно и то же событие. Помимо MqlTick-данных есть еще номер тика, который не показывается в MT. И есть MT-нюанс с тиками , когда сама история тиков переписывается задним числом из-за нескольких источников получения тиков.

iki ardışık onay (Tick/Calculate olaylarını çağıran) MqlTick yapısında tamamen çakışabilir (tüm fiyatlar ve hacimler, zamanlar ve bayraklar eşittir), ancak gerçekte farklı olabilir. Bid/Ask her zaman TickSize'ın bir katıdır. Last (bir borsada değil) TickSize'ın katı olamaz. TickSize, Point'ten birkaç kat daha büyük olabilir (örneğin RTS'ye bakın). Bu nedenle, bu durumda Point hakkında konuşmak tamamen doğru değildir.

Belki yararlıdır. SymbolInfoTick, senkronize edilmiş bir işlev değildir. Bu, OnTick'te farklı yerlerde farklı keneler döndürebileceği anlamına gelir. Ayrıca, OnTick'in en başında SymbolInfoTick çağrılsa bile, alınan onay, OnTick'in üzerinde çalıştığı Tick olayının başlatıcısı olmayacaktır. MqlTick yapısının alanları, borsadan alınan onay işaretine eşit olmayacaktır, çünkü bu alanlar terminalin kendisi tarafından sentezlenir ve Marketwatch değerlerine eşittir.

 
INFO keneleri neden test cihazında Forex'teki TÜM kenelerle eşleşmiyor?
 
Test cihazında Expert Advisor'ı çalıştırın
void OnTick ()
{
   static bool FirstRun = true ;
  
   if (FirstRun)
  {
     MqlTick Ticks[ 1 ];
    
     if ( SymbolInfoTick ( _Symbol , Ticks[ 0 ]))  
       Print ( CopyTicks ( _Symbol , Ticks, COPY_TICKS_ALL , Ticks[ 0 ].time_msc + 1 )); // Сколько тиков со временем больше последнего
    FirstRun = false ;
  }
}

Sonuç

2016.10 . 15 13 : 23 : 57.689 2016.10 . 12 00 : 00 : 16    1

Sıfır döndürmeli, ancak bir döndürmeli. Aynı zamanda, Keneler[] değişmez. Böcek!

 
fxsaber :
Test cihazında Expert Advisor'ı çalıştırın
void OnTick ()
{
   static bool FirstRun = true ;
  
   if (FirstRun)
  {
     MqlTick Ticks[ 1 ];
    
     if ( SymbolInfoTick ( _Symbol , Ticks[ 0 ]))  
       Print ( CopyTicks ( _Symbol , Ticks, COPY_TICKS_ALL , Ticks[ 0 ].time_msc + 1 )); // Сколько тиков со временем больше последнего
    FirstRun = false ;
  }
}

Sonuç

2016.10 . 15 13 : 23 : 57.689 2016.10 . 12 00 : 00 : 16    1

Sıfır döndürmeli, ancak bir döndürmeli. Aynı zamanda, Keneler[] değişmez. Böcek!

Hafta sonu olduğu için olabilir mi?

Yardımdan. CopyTicks İşlev, geçerli çalışma oturumu için uçbirim tarafından toplanan onay işaretlerini ticks_array dizisine alır.

 
Alexey Volchanskiy :

Hafta sonu olduğu için olabilir mi?

Yardımdan. CopyTicks İşlev, geçerli çalışma oturumu için uçbirim tarafından toplanan onay işaretlerini ticks_array dizisine alır.

Test cihazında bir hata var.
 

CopyTicks ile performans sorunu.

robot

Network 'xxx': authorized on RoboForexEU-MetaTrader 5 through Europe #1 (ping: 56.66 ms)

M.Ö.

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 45.53 ms)



Bu, kene göstergesi verileridir. Her iki durumda da 2-3 bin kene indirildi. Ancak robo'da bu, çok daha hızlı bir şekilde gerçekleşir.

Gün boyunca, Forex'te bir hız tesadüfü gördüm - o zaman piyasa daha hareketliydi. Kopitix aktif piyasa takibini yavaşlatıyor gibi görünüyor.

Her iki durumda da tek tablo ve tek gösterge. Ve KopiTix zaten kesinlikle alıntıları veritabanında/önbellekte indirmişti.

 

1) Her ikisinde de gözlük var mıydı?

2) orijinal akışlarında bir takas/bilgi kene bölünmesi var mıydı? Karmaşık akışlar yeniden hesaplama ve basit düzenleme gerektirir

3) Asıl istek neydi?

4) sonuçları kaç sorgu doğruladı? Testlerin kuralları ve tam olarak nasıl gözlemlendi: soğuk bir başlangıç, aykırı değerlerin atılması, sonuçların bir seride tekrarlanabilirliği, çoğaltma kodu.

Genel olarak, sayısal sonuçların önüne kesin bir kod gelmelidir, böylece herkes bunları tekrar edebilir. Aksi halde tartışmanın anlamı yok.

 
Renat Fatkhullin :

1) Her ikisinde de gözlük var mıydı?

2) orijinal akışlarında bir takas/bilgi kene bölünmesi var mıydı? Karmaşık akışlar yeniden hesaplama ve basit düzenleme gerektirir

3) Asıl istek neydi?

4) sonuçları kaç sorgu doğruladı? Test kuralları ve tam olarak nasıl gözlemlendi: soğuk başlangıç muhasebesi, aykırı değer reddi, sonuçların bir seride tekrarlanabilirliği, çoğaltma kodu.

Genel olarak, sayısal sonuçların önüne kesin bir kod gelmelidir, böylece herkes bunları tekrar edebilir. Aksi halde tartışmanın anlamı yok.

Tam kodun linkini verdim.

  1. Gözlük yoktu.
  2. Yalnızca INFO keneleri.
  3. > 0 ile COPY_TICKS_INFO.
  4. Çalışmadaki bağlantıdaki göstergeye bakın. Tekrarlanabilirlik tamamlandı. Soğuk çalıştırma hariçtir. Emisyonlar aynı.
 

Hadi kontrol edelim.

Ancak sunuculardan birinde bardağın olmadığı konusunda büyük şüpheler var. Camın çizilmemesi önemli değil. Bir sembol varsa, verileri her zaman mevcuttur ve onay işareti istendiğinde daha karmaşık bir düzenleme algoritması çalışır.