Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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
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.
{
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ç
Sıfır döndürmeli, ancak bir döndürmeli. Aynı zamanda, Keneler[] değişmez. Böcek!
Test cihazında Expert Advisor'ı çalıştırın
{
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ç
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.
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.
CopyTicks ile performans sorunu.
robot
M.Ö.
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.
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.
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.