"CopyTicks"in Test Edilmesi - sayfa 39

 
 
fxsaber :

Yavaşlamamalı ve ticaret sunucusuna bağımlı olmamalısınız.

Düzenleme hızı: terminal, hızlı erişim için önbellekteki her sembol için son 4096 onay işaretini (çalışan camlı semboller için - 65536 işaret) saklar, bu verilere yönelik talepler en hızlı şekilde yürütülür. Mevcut ticaret oturumunun önbellek dışında keneler talep ederken, CopyTicks() zaten terminalin hafızasında saklanan tiklere atıfta bulunur, bu isteklerin tamamlanması daha fazla zaman gerektirir. En yavaşı, diğer günler için kene istekleridir, çünkü bu durumda veriler zaten diskten okunur.

Terminaller aynı diskteyse, teoride haklısınız.

Birden fazla test yaptınız mı? Belirli bir sunucuda sabit gecikme? Sadece disk, test sırasında aniden başka bir işlemle meşgul oldu ...

 
Alexey Kozitsyn :

Terminaller aynı diskteyse, teoride haklısınız.

Birden fazla test yaptınız mı? Belirli bir sunucuda sabit gecikme? Sadece disk, test sırasında aniden başka bir işlemle meşgul oldu ...

%100 tekrarlanabilir. Terminal aynı.

 

Göstergenin OnDeinit'inde keneler nasıl alınır? Zaten tkc dosyalarında bulunan ve neredeyse anında verilen keneler almak istiyorum. Fakat hangi tiklerin olduğu ve hangilerinin olmadığı nasıl belirlenir?

CopyTicks'in sadeliğinin tüm dış çekiciliğinin arkasında, aslında bu dış çekicilik uğruna sınırlı işlevsellik nedeniyle atlanamayan gizli tuzaklar vardır.

 
fxsaber :

Göstergenin OnDeinit'inde keneler nasıl alınır? Zaten tkc dosyalarında bulunan ve neredeyse anında verilen keneler almak istiyorum. Fakat hangi tiklerin olduğu ve hangilerinin olmadığı nasıl belirlenir?

CopyTicks'in sadeliğinin tüm dış çekiciliğinin arkasında, aslında bu dış çekicilik uğruna sınırlı işlevsellik nedeniyle atlanamayan gizli tuzaklar vardır.

OnDeinit()'te neden keneler alıyorsunuz?
 
Alexey Kozitsyn :
OnDeinit()'te neden keneler alıyorsunuz?

Özel bir sembol oluşturmanız ve içine , halihazırda tkc dosyalarında bulunan dönüştürülmüş tüm onay geçmişini (belirli bir tarihten itibaren) yazmanız gerekir. Arabada olmayan tikler ilgi çekici değildir. Bu nedenle, gösterge böyle bir görevle hiçbir şekilde yavaşlamamalıdır. Ancak CopyTicks bu şekilde kene almanıza izin vermez.

 
OnInit'te başka birinin sembolüne işaret koymaya çalışıyorum
 #include <Trade\Trade.mqh>

bool OpenPos( const string Symb )
{
   static CTrade Trade;
  
   return (Trade.Buy( 1 , Symb));
}

void OnInit ()
{
   Sleep ( 3600 * 1000 );    
  
  OpenPos( "NZDUSD" ); // Заставляем Агент получить тики по чужому символу

   MqlTick Ticks[];
  
   Print ( CopyTicks ( "NZDUSD" , Ticks, COPY_TICKS_INFO , 0 , 5 )); // 0
  
   ArrayPrint (Ticks);
}


Sonuç

MetaTester 5 started on 127.0 . 0.1 : 3000
initialization finished
login (build 1653 )
template file tester.tpl added. 2398 bytes loaded
38520 bytes of account info loaded
1482 bytes of tester parameters loaded
188 bytes of input parameters loaded
3456 bytes of symbols list loaded
expert file added: Experts\Test4.ex5. 44667 bytes loaded
initial deposit 10000000.00 USD, leverage 1 : 500
successfully initialized
48 Kb of total initialization data received
Intel Core i7- 2700 K  @ 3.50 GHz, 16301 MB
EURUSD: symbol to be synchronized
EURUSD: symbol synchronized, 3464 bytes of symbol info received
EURUSD: history synchronization started
EURUSD: load 27 bytes of history data to synchronize in 0 : 00 : 00.000
EURUSD: history synchronized from 2016.01 . 04 to 2017.10 . 11
EURUSD: ticks synchronization started
EURUSD: load 34 bytes of tick data to synchronize in 0 : 00 : 00.000
EURUSD: history ticks synchronized from 2017.04 . 03 to 2017.10 . 10
EURUSD,M1: history cache allocated for 667542 bars and contains 651824 bars from 2016.01 . 04 00 : 00 to 2017.09 . 29 23 : 59
EURUSD,M1: history begins from 2016.01 . 04 00 : 00
EURUSD,M1 (MetaQuotes-Demo): generating based on real ticks
EURUSD,M1: testing of Experts\Test4.ex5 from 2017.10 . 01 00 : 00 to 2017.10 . 11 00 : 00 started
EURUSD : real ticks begin from 2017.04 . 03 00 : 00 : 00
EURUSD : 2017.10 . 01 00 : 00 - 2017.10 . 11 00 : 00   last prices absent for 7 whole days, bars built by bid prices
NZDUSD: symbol to be synchronized
NZDUSD: symbol synchronized, 3464 bytes of symbol info received
NZDUSD: history synchronization started
NZDUSD: load 27 bytes of history data to synchronize in 0 : 00 : 00.000
NZDUSD: history synchronized from 2016.01 . 04 to 2017.10 . 11
NZDUSD: ticks synchronization started
NZDUSD: load 34 bytes of tick data to synchronize in 0 : 00 : 00.000
NZDUSD: history ticks synchronized from 2017.10 . 02 to 2017.10 . 10
2017.10 . 01 01 : 00 : 00    instant buy 1.00 NZDUSD at 0.72043 ( 0.72017 / 0.72043 )
2017.10 . 01 01 : 00 : 00    deal # 2 buy 1.00 NZDUSD at 0.72043 done (based on order # 2 )
2017.10 . 01 01 : 00 : 00    deal performed [# 2 buy 1.00 NZDUSD at 0.72043 ]
2017.10 . 01 01 : 00 : 00    order performed buy 1.00 at 0.72043 [# 2 buy 1.00 NZDUSD at 0.72043 ]
2017.10 . 01 01 : 00 : 00    CTrade::OrderSend: instant buy 1.00 NZDUSD at 0.72043 [done at 0.72043 ]
2017.10 . 01 01 : 00 : 00    true
2017.10 . 01 01 : 00 : 00    0
NZDUSD : real ticks begin from 2017.10 . 02 00 : 00 : 00
NZDUSD : 2017.10 . 01 00 : 00 - 2017.10 . 11 00 : 00   last prices absent for 7 whole days, bars built by bid prices


Onlar. başka bir sembolün başında kene verisi yok. Ve veritabanındaki keneler, OnTick göründüğü gibi oluşturulur. Amaçlanan yol bu mu, yoksa ana test sembolünün yanı sıra yabancı sembollerdeki işaretler hala mevcut mu olmalı?

 
Dokümantasyondan bu alıntı ile ne kastedilmektedir?

Примечание

CopyTicksRange() işlevi, örneğin tarihte belirli bir gün için, kesin olarak belirtilen bir aralıktan keneler istemek için tasarlanmıştır. CopyTicks() yalnızca başlangıç tarihini belirlemenize izin verirken, örneğin, ayın başından şu anki ana kadar tüm onayları almak için .

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
  • www.mql5.com
[out]  Cтатический или динамический массив MqlTick для приема тиков. Если в статический массив не вмещаются все тики из запрошенного интервала времени, то будет получено столько тиков, сколько помещается в массив. При этом функция сгенерирует ошибку ERR_HISTORY_SMALL_BUFFER (4407) . ERR_NOT_ENOUGH_MEMORY – не хватает памяти для получения...
 

CopyTicks yalnızca Market Watch'a dahil olan sembollerle çalışır. Ve özel sembollerin ortaya çıkmasından önce her zaman mantıklıydı.

Gümrüklerin çok geniş bir uygulama alanı vardır ve bu semboller Market Watch'ta her zaman gerekli değildir. Ancak, CopyTicks aracılığıyla kene geçmişinin bir kısmını onlardan almak gerekebilir.

Bu nedenle, Piyasa İzleme'de özel seçilmemişse, lütfen özel semboller için CopyTicks hatasının dönüşünü devre dışı bırakın.

 
Özel semboller için toplam işaret sayısını bulmak için CopyTicksRange(Symb, Ticks) ( artı this ) kullanmanız ve dizinin boyutuna bakmanız gerekir. Ama bu çok israf!