X ekseni boyunca doğrusal olmayan çarpıtmalara sahip iki fiyat grafiğinin karşılaştırılması - sayfa 7
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Bu sorun DTW aracılığıyla nasıl çözülür (örnek):
O(N^2) karmaşıklığına sahip DTW algoritması kullanılarak toplamda 50.000.000 karşılaştırma yapılmıştır. Onlar. çok kabaca 5 * 10^11 (500 milyar) temel hesaplama işlemi gerçekleştirdi.
Şimdi yeni bir çıta geldi - yeniden 500 milyar hesaplama yapıldı.
Son elementin 200.000'i ile başlayarak tarih üzerinde koşmaya karar verdik. Kabaca, bir koşu için 200.000 kez, her biri 500 milyar hesaplama yapmanız gerekir. Toplam 10^17 hesaplama.
Kurnaz bir optimizasyon olsa bile, iki kattan fazla bir kazanç sağlamayacaktır. Onlar. en iyi ihtimalle, yaklaşık 10 ^ 15 hesaplama yapmak gerekecektir.
Bu tür saçmalıkları taşımadan önce algoritmanın prensibini anlayın. Algoritmanın karmaşıklığı O(n*m)'dir, burada n ve m iki giriş vektörünün uzunluklarıdır.
ps Herhangi bir "50 bar, her biri 55 bar" yapmanıza gerek yoktur, çünkü olası üç çarpıtmadan biri kaçırılmış bir gözlemdir.
pps DTW yolu ile ilgili kısıtlamalar da mevcuttur, sizin "ve orada durabilirsiniz" de tamamen gereksizdir.
ppps Yönteminiz "zikzak + korelasyon hesaplaması" saçmalık gösterecek çünkü. zikzak, çok az şey söyleyen gürültülü bir rastgele değişkenin maksimumu üzerine inşa edilecektir.
pppps Büyük bir ses akışında arama yapmak için tamamen farklı yöntemler kullanılır.
Habrahabr'da DTW hakkında bir makale var http://habrahabr.ru/blogs/algorithm/135087/ , her şey anlaşılır bir şekilde yazılmış gibi görünüyor, ancak DTW'nin OHLC için nasıl kullanılacağını hayal bile edemiyorum, biri bunu anlaşılır bir şekilde açıklayabilir mi?
OHLC için, çubuklar arasındaki mesafe için bir fonksiyon bulmanız gerekir. Örneğin:
1. verilen iki çubuk
2. çubukların her birini üçüncü dereceden bir polinomla yaklaştırın (bir C>O çubuğu için noktalarla: {(t[0];Açık), (t[1];Düşük), (t[2];Yüksek ), (t[3 ];Kapat)}, O>C noktaları için {(t[0];Açık), (t[1];Yüksek), (t[2];Düşük), (t[ 3];Kapat)} , burada t[i]=i/3)
3. 0..1 aralığındaki iki polinomun farkının karesinin integralinin karekökü olarak mesafeyi hesaplayın.
(Benim tarafımdan icat edilmedi, yöntem bilinen ve ilgilenen herkes tarafından erişilebilir görünüyor)
Konunun yazarının karşılaştığı görev ve cevaplarıyla başlamak için okursunuz.
Katılıyorum, görev benzerlik kriteri arayışı üzerine formüle edildi. Yazarın, Spearman'ın QC'si aracılığıyla benzerlik kriteriyle ilk çalışmasına dayanarak uygulayacağı daha mantıklı bir adım attım. Belki de yanılıyordu ve yazar, bir başkası için yeni bir benzerlik ölçütü uygulamayı düşünüyor.
Son elementin 200.000'i ile başlayarak tarih üzerinde koşmaya karar verdik. Kabaca, bir koşu için 200.000 kez, her biri 500 milyar hesaplama yapmanız gerekir. Toplam 10^17 hesaplama.
Kurnaz bir optimizasyon olsa bile, iki kattan fazla bir kazanç sağlamayacaktır. Onlar. en iyi durumda, yaklaşık 10 ^ 15 hesaplama yapmak gerekecektir.
Bu tür saçmalıkları taşımadan önce algoritmanın prensibini anlayın. Algoritmanın karmaşıklığı O(n*m)'dir, burada n ve m iki giriş vektörünün uzunluklarıdır.
Neden bu kadar düşmanlık ve saldırganlık? Algoritma karmaşıklığı tahminlerini öğrenin. O(N^2) yazdıklarınızla çelişmiyor. Bu karmaşıklığa sahip algoritmalar, az miktarda veri içeren problemler için uygundur.
ps Herhangi bir "50 bar, her biri 55 bar" yapmanıza gerek yoktur, çünkü olası üç çarpıtmadan biri kaçırılmış bir gözlemdir.
pps DTW yolu ile ilgili kısıtlamalar da mevcuttur, sizin "ve orada durabilirsiniz" de tamamen gereksizdir.
Yukarıdaki örnekte birkaç kez geçen "kaba" kelimesine dikkat edin. Tüm nüansları hesaba katarsanız, gönderi çok büyük, algılanamaz bir boyuta ulaşacaktır. FastDTW algoritmasından ve diğer ek algoritmik optimizasyonlardan bahsedebiliriz. Pratikte zeka ve bilgi ile parlamak daha iyidir.
ppps Yönteminiz "zikzak + korelasyon hesaplaması" saçmalık gösterecek çünkü. zikzak, çok az şey söyleyen gürültülü bir rastgele değişkenin maksimumu üzerine inşa edilecektir.
Sizin dilinizde - "saçmalık". Bunu bir örnekle yapıcı bir şekilde gösterebilir misiniz?
pppps Büyük bir ses akışında arama yapmak için tamamen farklı yöntemler kullanılır.
Görev çok daha mütevazı.
Sonra abarttım. Bu kadar basit bir görev için muhtemelen DTW'den daha kolay bir şey yoktur. Ancak bu kadar küçük veri dizilerini karşılaştırmak şüpheli bir alıştırmadır.
Hipoteziniz işe yarıyor gibi göründüğünde hayattan bir örnek verebilir misiniz?
Sonra abarttım. Bu kadar basit bir görev için muhtemelen DTW'den daha kolay bir şey yoktur. Ancak bu kadar küçük veri dizilerini karşılaştırmak şüpheli bir alıştırmadır.
Hipoteziniz işe yarıyor gibi göründüğünde hayattan bir örnek verebilir misiniz?
Yaşamdan gidiyor gibi görünüyor - Bugünün grafiğini zihinsel olarak dünkü EURUSD grafiğine kaydırdığımı fark ettim. Günün en azından ilk yarısı görsel olarak çakıştıysa, bir tahmin yapabilirsiniz (Cuma değilse ve haber değilse). "Görsel olarak" yükseliş ve inişlerin değişimidir, seviyeler uyuşmuyor. Eh, bu bir evrim örneğine bakmak gibi - komşu resimler benzer, uzak olanlar artık orada değil. Eh, bugünün ve dünün resimleri uyuşmuyorsa, bu yöntem işe yaramaz.
Görev çok daha mütevazı - bugün olanları önceki günün başlangıcıyla karşılaştırmak (desen boyutları farklıdır!) ve benzerliği değerlendirmek. Varsa, bugünün geri kalanı için yaklaşık bir rota çizin. H1 alırsak bu 24 bardır. Her durumda, en fazla 24 karşılaştırma. M15'te - 96 karşılaştırma maksimum. Benim gözlemlerime göre benzerlik en fazla 2 gün uzar, sonra piyasa her şeyi "unutur". Aylar ve yıllar aralığında optimizasyon kendini aldatmadır.
Bir şey ortaya çıktı ... sadece fark etmedi. Mistik bir coşku hissediyorum :)