"CopyTicks"in Test Edilmesi - sayfa 12

 
Dmitriy Skub :

Bir yıl sonra, işte özet:

- CopyTicks işlevi doğru çalışıyor (açıklamaya karşılık geliyor);

- Belirtilen fonksiyon kullanılarak elde edilen türev piyasasının mevcut kene verileri, borsa verileriyle örtüşür;

- 28/07/2016 tarihinden itibaren en likit enstrümanlar için türev piyasası için tick verilerinin geçmişi doğrudur (tabii ki, sunucu bölümünün en son sürümü başlatılmıştır);

Yukarıdakilerin tümü, MT5 1395 terminalinin sürümü ve Open-Broker'daki vadeli işlem piyasasının gerçek hesapları için geçerlidir. Prensip olarak, konu kapanmıştır.

Fırsatların yönünü de kontrol ettiniz mi?
 

CopyBuffer hakkında bir sorum vardı

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

mql5, farklı pencerelerde çizelgeler çizen bir gösterge yazmanıza veya diğer pencerelerde gösterge arabelleklerine erişmenize izin veriyor mu?

fxsaber , 2016.09.09 10:20

Bir sorum var. Değiştirilen değerlerin sayısına arabellek eklemek ( giriş parametresi sayısı sıfır değil ) veya her zaman arabelleğin tam bir kopyasını oluşturmak için CopyBuffer kullanırken (performans açısından) uygun mu?

ancak CopyTicks için neredeyse aynı soru.

CopyTicks'i önceden toplanmış kenelere yeni değerler eklemek veya kenelerin gerekli olduğu yerden her zaman tam bir istekte bulunmak ve toplanan değerleri daha önce saklamamak için kullanırken (performans açısından) uygun mudur?

 
Bir dinamik diziye keneler eklerken, ArrayResize'da rezerv_boyutu ayarlamak en iyi ne kadardır?
 
fxsaber :
Bir dinamik diziye keneler eklerken, ArrayResize'da rezerv_boyutu ayarlamak en iyi ne kadardır?
Dinamik bir dizi INT_MAX boyutuyla sınırlıdır, bu nedenle diziyi hemen bu boyuta ayarlamak daha iyidir.
 
prostotrader :
Dinamik bir dizi INT_MAX boyutuyla sınırlıdır, bu nedenle diziyi hemen bu boyuta ayarlamak daha iyidir.
Hatırlamak üzücü .
 
prostotrader :
Dinamik bir dizi INT_MAX boyutuyla sınırlıdır, bu nedenle diziyi hemen bu boyuta ayarlamak daha iyidir.
Mikalas, sen misin? :-)
 
Dennis Kirichenko :
Mikalas, sen misin? :-)
Примечание

Функция может быть применена только к динамическим массивам. При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, 
назначенных в качестве индикаторных буферов функцией SetIndexBuffer (). Для индикаторных буферов все операции по изменению размера производит 
исполняющая подсистема терминала.

Общее число элементов в массиве не может превышать 2147483647 .
 
prostotrader :
El yazınızdan görebiliyorum ;-)
 

Komut dosyası, aynı milisaniyede en iyi çeteler değiştiğinde onay işaretlerini görüntüler.

 #property script_show_inputs

sinput int Count = 10000 ; // Количество тиков на проверку

#define TOSTRING(A) " " + #A + " = " + ( string )Tick.A

string TickToString( const MqlTick &Tick )
{
   static int i = 0 ;
  
  i++;
  
   return ( "Tick" + ( string )i + ":" + TOSTRING(time) + "." + ( string )(Tick.time_msc % 1000 ) +
         TOSTRING(bid) + TOSTRING(ask) + TOSTRING(last)+ TOSTRING(volume));
}

void OnStart ()
{
   MqlTick Ticks[];
  
   const int Amount = CopyTicks ( _Symbol , Ticks, COPY_TICKS_INFO , 0 , Count);
  
   for ( int i = 1 ; i < Amount; i++)
     if (Ticks[i].time_msc == Ticks[i - 1 ].time_msc) // ищем соседние тики с одним временем (с точностью до мс)
//      if ((Ticks[i].bid > Ticks[i - 1].bid) ||(Ticks[i].ask < Ticks[i - 1].ask)) // ищем выставление лимитной заявки внутрь спреда
         Print (TickToString(Ticks[i - 1 ]) + "\n" + TickToString(Ticks[i]) + "\n" );
}

Sonucun bir kısmı:

 2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      Tick14: time = 2016.09 . 13 10 : 12 : 55.819 bid = 98220 .0 ask = 98240.0 last = 98240.0 volume = 2
2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      Tick13: time = 2016.09 . 13 10 : 12 : 55.819 bid = 98230 .0 ask = 98240.0 last = 98240.0 volume = 2

Burada, bir milisaniye içinde birisi BuyLimit = 98230'u kaldırmayı başardı. Kaldırıldı ve pazarla eşleşmedi.

Kontrol, bir milisaniye içindeki tüm bu tür eylemlerin, sipariş defterinden en iyi limit emrinin kaldırılması (yürütülmesi değil) olduğunu gösterdi.

Sonucun başka bir kısmı:

 2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      Tick4: time = 2016.09 . 13 10 : 00 : 00.235 bid = 98490.0 ask = 99040 .0 last = 98500.0 volume = 8
2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      Tick3: time = 2016.09 . 13 10 : 00 : 00.235 bid = 98490.0 ask = 98600 .0 last = 98500.0 volume = 8
2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      
2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      Tick2: time = 2016.09 . 13 10 : 00 : 00.235 bid = 98490 .0 ask = 98600.0 last = 98500.0 volume = 8
2016.09 . 13 11 : 58 : 46.861 Test (RTS- 9.16 ,M1)      Tick1: time = 2016.09 . 13 10 : 00 : 00.235 bid = 98500 .0 ask = 98600.0 last = 98500.0 volume = 8

Burada, bir şekilde, oturumun açılışında, birisi bir milisaniyede hem SellLimit'i hem de BuyLimit'i kaldırmayı başardı. Onlar. bir milisaniyede iki eylem!

Bu nasıl olabilir? Sonuçta, HFT bile 1 ms'den daha kısa bir limit emrini iptal edemez.

Veya OrderSendAsync yoluyla spread içinde iki limit emri (BuyLimit1_price < BuyLimit2_price) gönderilirse, borsa aynı anda teklif fiyatının artmasıyla (1ms doğrulukla) iki ardışık tik oluşturacak mı?

 
fxsaber :


Bu nasıl olabilir? Sonuçta, HFT bile 1 ms'den daha kısa bir limit emrini iptal edemez.


Böyle bir bilgiyi nereden edindin?

Plaza II'ye ek olarak FAST / FIX protokolü de bulunmaktadır.

1 ms'de yüzlerce işlem gerçekleştirilir