En Düşük ve En Yüksek Fonksiyonlar Ne Getirir? - sayfa 3

 
Candid, işin istikrarsızlığını anlatmaya çalışacağım.

Bir seçenek. Başkaları var.
İlk ışın bizde. Basitlik için - sıfır çubuğundan geliyor. Sıfır çubuğunun bir yüksek ve bir alçağı vardır. Fiyat, ekstremumlarını değiştirmeden çubuğun içinde hareket eder. Ekstrem değişmediği için, birinci ışın da hareketsiz durmalı ve hareket etmemelidir. Ama orada değildi. İlk ışın seğiriyor. Konumunu değiştirir. Bu sadece istikrarsızlığın dışa dönük tezahürünün bir açıklamasıdır. Algoritma kararlı bir şekilde çalışıyorsa, ZigZag'ın çalışmasının bağlı olduğu piyasa parametreleri (son çubuğun yüksek ve düşük) değişmez, o zaman ilk ışın da seğirmemelidir. Bu sorunla kendim mücadele ettim. Ancak arama fonksiyonlarının fark edilen özellikleri beni foruma gitmeye zorladı.
=========================
Göstergeyi hesaplama sürecinde pencereyi (shift,shift+ExtDepth) hareket ettirdiğimizde, yeni bir ekstremumun ortaya çıkması hem yeni fiyat hem de eski ekstremin pencereden çıkmış olması ile ilişkilendirilebilir. - açık bir şekilde hecelemek güzel olurdu. Açık olmak gerekirse. dilin açıklamasında. Dilin gizli olanaklarını keşfetmemek için.

Bunu yapmak için, eklememde if(highpos!=shift) val=0.0; . Bunun standart kodda nasıl yapıldığını anlamadım. Benim versiyonumdaki asılı ekstremin ortadan kalktığı gerçeğine bakılırsa, bu ya yanlış yapılır ya da hiç yapılmaz. - Bu anı farklı bir şekilde çözdüm: if (High[shift]==val) ZigZagBuffer[shift]=val; ve if (Low[shift]==val) ZigZagBuffer[shift]=val;
Ama anlamı aynı. Ancak bu, tüm sorunları çözmez. Bu nedenle, nedenle değil, sonuçla mücadele ediyoruz. Soruşturmayla aynı şekilde ilgilenmeye çalıştım. Ama ilk ışında çalışmıyor. Mesele şu ki, zikzak algoritması, diyelim ki bölünmüş değil. Bunu açıklayayım. Yanlış hesap tarih boyunca yapılır. Ve bir kısımdaki hataları düzeltirsek, sıfır çubuğu alanında işleme süreci diyelim ki eksik kalır. Doğru kelimeleri bulmakta zorlanıyorum. Dolayısıyla sıfır çubuğu alanındaki bu eksiklik, ekstremumların doğru aranması sorununu ortaya çıkarır.

Çok uzun zaman önce pencere parametrelerini (shift, shift + ExtDepth) seçmeye çalıştım. Geçen gün de bir pencere denedim. Ama şu ana kadar bir sonuç yok.
 
Mesele şu ki, zikzak algoritması, diyelim ki bölünmüş değil. Bunu açıklayayım. Yanlış hesap tarih boyunca yapılır. Ve bir kısımdaki hataları düzeltirsek, sıfır çubuğu alanında işleme süreci diyelim ki eksik kalır. Doğru kelimeleri bulmakta zorlanıyorum. Dolayısıyla sıfır çubuğu alanındaki bu eksiklik, ekstremumların doğru aranması sorununu ortaya çıkarır.


Bu sorun biliniyor ve teorik olarak düzeltildi (algoritma uzun zamandır kafamdaydı). Her durumda, başka bir çözüm görünmezse, ZigZag algoritmasını optimize edeceğim. Bu şu şekilde yapılır:
1) ilk çalıştırma, mevcut algoritmada olduğu gibi tüm geçmişinde yapılır
2) tarihin derinliklerinde sıfır çubuğundan her tikte , iki ZigZag ekstremumu aranır, son ekstremum zorla öldürülür.
3) sondan bir öncekinden (şimdi sonuncusu), standart ZigZag hesaplama prosedürü tekrar gerçekleştirilir.
4) eğer mevcut uç (ZigZag'ın kuyruğu) teorik olarak bir ekstremum olabilir (son düşükten en yükseğe sahibiz veya tam tersi), o zaman o da bir ekstremum olur.
5) yeni bir onay işaretiyle, 2) noktasından yeniden
 
nen :
Ama orada değildi. İlk ışın seğiriyor. Konumunu değiştirir.

Bunu henüz görmedim. Kirişin bir ucu sabit mi kalıyor? Ve hangisi. Sıfır çubuğundaysa, double türündeki değişkenlerin karşılaştırıldığı koşullara daha yakından bakmaya değer olabilir mi?

Göstergeyi hesaplama sürecinde pencereyi (shift,shift+ExtDepth) hareket ettirdiğimizde, yeni bir ekstremumun ortaya çıkması hem yeni fiyat hem de eski ekstremin pencereden çıkmış olması ile ilişkilendirilebilir. - açık bir şekilde hecelemek güzel olurdu. Açık olmak gerekirse. dilin açıklamasında.

Bana öyle geliyor ki bu dil için değil, algoritma için geçerli. Yani, tartışılan fonksiyonların aslında bir ekstremum değil, aralıktaki fiyatın maksimum (minimum) değerini aradığını hatırlatmak, bir kitapta veya bazı yorumlarda daha uygundur.
Bunu yapmak için, eklememde if(highpos!=shift) val=0.0; . Bunun standart kodda nasıl yapıldığını anlamadım. Benim versiyonumdaki asılı ekstremin ortadan kalktığı gerçeğine bakılırsa, bu ya yanlış yapılır ya da hiç yapılmaz. - Bu anı farklı şekilde çözdüm: if (High[shift]==val) ZigZagBuffer[shift]=val; ve if (Low[shift]==val) ZigZagBuffer[shift]=val;
Kendi versiyonumu daha çok seviyorum :). Tamsayılarla çalışır. Böyle bir ikili karşılaştırmayla (Low[shift]==val türünden) vuruşlar görünebilir.
 
Rosh , bende de aynı seçenek var. Kafamın içinde Uygulamadan bazı belirsiz anları durdurun. Tabiri caizse. Madde 4) algoritmanın biraz dışında. Bu farklı bir algoritma. Ve 4. maddeye göre işlenen kısım tarih olduğunda, 1. noktadan başlayarak algoritma tarafından işlenmesi diğer ekstremleri çizebilir. Yani, gerçek zamanlı ve tarih farklı olacaktır. Bu bence kabul edilemez.
 
Rosh , bende de aynı seçenek var. Kafamın içinde Uygulamadan bazı belirsiz anları durdurun. Tabiri caizse. Madde 4) algoritmanın biraz dışında. Bu farklı bir algoritma. Ve 4. maddeye göre işlenen kısım tarih olduğunda, 1. noktadan başlayarak algoritma tarafından işlenmesi diğer ekstremleri çizebilir. Yani, gerçek zamanlı ve tarih farklı olacaktır. Bu bence kabul edilemez.


nokta 4) sonraki kene üzerinde nokta 2) üzerinden bir dosya ile işlenir
 
Дело в том, что алгоритм зигзага, скажем так, не расчленяется. Поясню это. Просчет проводится по всей истории. И если мы в какой-то части исправим ошибки, то в районе нулевого бара процесс обработки остается, скажем так, незавершенным. Затрудняюсь подобрать правильные слова. Так вот эта незавершенность в районе нулевого бара и вытаскивает на свет проблему правильного поиска экстремумов.


Bu sorun biliniyor ve teorik olarak düzeltildi (algoritma uzun zamandır kafamdaydı).
Bir zikzakın ne yapması gerektiğine dair sözlü bir açıklama var mı? Bir nevi taslak gibi.
 
Bunu henüz görmedim. Kirişin bir ucu sabit mi kalıyor? Ve hangisi. Sıfır çubuğundaysa, double türündeki değişkenlerin karşılaştırıldığı koşullara daha yakından bakmaya değer olabilir mi?
Mesele şu ki ZigZag göstergesini çok zorlu koşullar altında test ediyorum. Dakikada ve 2-1-1 parametreleriyle. Bu test ne için? Bu tür testler, tüm gizli kusurları yeterince hızlı bir şekilde ortaya çıkarır. Ayrıca, göstergenin istisnasız tüm zaman dilimlerinde çalışması arzusu vardır. Piyasa fraktal bir şeydir. Dakikada işlem yapan birçok insan var. Neden onları küçük zaman dilimlerinde tanıdık bir enstrümanla çalışma fırsatından mahrum bırakasınız ki?

Kendi versiyonumu daha çok seviyorum :). Tamsayılarla çalışır. Böyle bir ikili karşılaştırmayla (Low[shift]==val türünden) vuruşlar görünebilir.
Double ile çalışmak şimdiye kadar herhangi bir zorluk yaratmadı. Bellekte, bu numaralar değişmeden saklanır. Ve karşılaştırmam bir hafıza hücresinden değerler alıyor. Bu yerde bir sorun ortaya çıkarsa, bu zaten donanım - bilgisayar için bir sorudur. Demirle bir şeyler yapılmalı.

Bana öyle geliyor ki bu dil için değil, algoritma için geçerli. Yani, tartışılan fonksiyonların aslında bir ekstremum değil, aralıktaki fiyatın maksimum (minimum) değerini aradığını hatırlatmak, bir kitapta veya bazı yorumlarda daha uygundur.

Ben sadece buna dedim - aşırı. Aslında, seçilen alandaki en büyük maksimum ve en küçük minimum. Söylemesi uzun zaman oldu. Ama anlamı aynı.
 
Bir zikzakın ne yapması gerektiğine dair sözlü bir açıklama var mı? Spesifikasyon gibi nedir?
Uzun süredir CodeBase.mql4.com'dayım. Ama bu açıklamayı anlamak çok zor. Ve çelişkili. Görünüşe göre yaz aylarında Slava zikzak kodunu düzeltti. Bundan sonra, sitede önceki açıklamanın sadece bir kısmı kaldı.
 
nen :
Double ile çalışmak şimdiye kadar herhangi bir zorluk yaratmadı. Bellekte, bu numaralar değişmeden saklanır. Ve karşılaştırmam bir hafıza hücresinden değerler alıyor. Bu yerde bir sorun ortaya çıkarsa, bu zaten donanım - bilgisayar için bir sorudur. Demirle bir şeyler yapılmalı.
Peki, şubedeki koddan başlıyorum. Ve içinde val her seferinde hesaplanır. Ve çifti karşılaştırırken == kullanmamak daha güvenli
 
Peki, şubedeki koddan başlıyorum. Ve içinde val her seferinde hesaplanır. Bu doğru, sayılır. Hücre numarası bulunur. Bu hücreden (zaman serisi) çubuğun maksimum veya minimum değeri alınır. Örneğin, bu çubukta bir maksimum bulunduğuna inanılmaktadır. Bu değer daha sonra bulunan sayı ile gösterge arabelleğine yerleştirilir. Göstergenin maksimumu, çubuktaki maksimuma karşılık gelmelidir. Ve kodumda, aynı bulunan sayı ile diziden (zaman serisi) maksimum alınır ve val değeriyle karşılaştırılır. Bu sayı ile tampona val sayısını koyarak doğru olanı yapıp yapmadığımız kontrol edilir. Ayrıca çubuğun maksimum değerine eşit olmalıdır. Aynı yerden alınan sayıları karşılaştırmak oldukça doğru.
Neden: