Gerçek Zamanlı Tahmin Sistemlerinin Test Edilmesi - sayfa 52

 
grasn >> :

hala 1.55'ten az :o) Bakalım

Buna çok benzer ^_^, en azından seçeneklere bakarsanız

Görsel CME Seçenekleri

 
grasn писал(а) >>

(1) Çok boyutlu bir dizi (tüm boyutları) doğru şekilde nasıl başlatılır. İşte kod, anladığım kadarıyla, tek boyutlu bir dizi ve çok boyutlu bir dizide bulunan ilk boyutlar için doğru olacak:

double memRow[];

ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);

Peki ya çok sayıda ölçüm?

(2) Tek boyutlu ve çok boyutlu diziler dinamik olarak nasıl genişletilir?

Bu durumda memRow[] dizisi, ne olursa olsun, her yinelemede bir miktar artmalıdır, basitlik için 1 olsun.Benzer şekilde, 2B bir dizi için, i ve j - memRow[i'de iki yönde büyümelidir. ] [j]

(1) Her şey doğru ve birkaç boyut için tamamen aynı. Başlatma, boyuttan bağımsız olarak dizinin tüm öğelerine bir değer atar.

(2) Ne yazık ki, ondan hiçbir şey çıkmayacak. MKL4'te çok boyutlu bir dizinin yalnızca ilk boyutunun boyutunu değiştirebilirsiniz. Belki bu MKL5'te düzeltilecektir.

 
NEKSUS_ >> :

Buna çok benzer ^_^, en azından seçeneklere bakarsanız

Görsel CME Seçenekleri

Bu kadar güzel veriler nereden geliyor?

 
dentraf >> :

Bu kadar güzel veriler nereden geliyor?

Veriler en sıradan ve güzel ya da değil, yazara bağlı ^_^

 

grasn , eğer MQL4'te programlama kendi başına bir son değilse, o zaman projenin en önemli kısımları, özellikle normal uygulama için çok boyutlu diziler gerektiriyorsa, C'ye yazılmamalı ve DLL olarak eklenmemeli mi? Hata ayıklamak için daha hızlı ve daha uygun çalışacak ve kaynak kodu daha okunabilir hale gelecektir (bir dizi dizi, dolaylı indeksleme ve sınırlamalarını atlamak için MQL'de icat etmeniz gereken diğer çöpler olmadan) ).

 
grasn >> :

Gerçekleşmeleri (yörüngeleri) tahmin ediyorum, ancak ticaret kararları verirken "frekans" özelliklerine, örneğin tahmin ufkunda en olası traktörlerin ortalama değeri +/- hızına odaklanıyorum. Hedeflere ulaşma açısından daha güvenilirler, ancak bu seviyelere giden fiyat yolu oldukça zor olabilir. Tabii ki, yerel geri dönüş bölgelerini değerlendirmek için ikinci yaklaşım üzerinde çalışıyorum. MM'ye gelince, burada her şey o kadar basit değil, ayrı, ciddi bir görev gibi görünüyor.

tam da bu nedenle, yani sohbetin konusu, şimdi kodu MathCAD'den MT'ye aktarıyorum. İstatistiksel anlam, en az 6 aylık bir test süresine sahip olacaktır (gözle). O yüzden durumu biraz sonra yazacağım.


Bu arada, programlama ile ilgili bir soru var, yoksa takıldım (hala o programcıyım):

(1) Çok boyutlu bir dizi (tüm boyutları) doğru şekilde nasıl başlatılır. İşte kod, anladığım kadarıyla, tek boyutlu bir dizi ve çok boyutlu bir dizide bulunan ilk boyutlar için doğru olacak:

double memRow[];

ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);


Peki ya çok sayıda boyut?


(2) Tek boyutlu ve çok boyutlu diziler dinamik olarak nasıl genişletilir?



for(i=0; i<=N-1; i++)

{

...

memRow[];

...

}


Bu durumda memRow[] dizisi, ne olursa olsun, her yinelemede bir miktar artmalıdır, basitlik için 1 olsun.Benzer şekilde, 2B bir dizi için, i ve j - memRow[i'de iki yönde büyümelidir. ] [j]


Görünüşe göre, çok boyutlu bir diziye erişimin bir işlev olarak uygulanması gerekecek.


Örneğin, tek boyutlu bir diziniz var a[n]


o zaman, onu bir 3B dizi i,k,j olarak kullanmak istediğimizi varsayalım.


o zaman (i,k,j) elemanı a dizisinde a[i*3+k*2+j] olarak adreslenecektir


Ve benzeri...

 

Yurixx'e

(1) Все правильно и для нескольких измерений точно так же. Инициализация прописывает одно значение во все элементы массива независимо от размерности.

(2) Ne yazık ki, ondan hiçbir şey çıkmayacak. MKL4'te çok boyutlu bir dizinin yalnızca ilk boyutunun boyutunu değiştirebilirsiniz. Belki bu MKL5'te düzeltilecektir.

Güvenli limanımızda gördüğüme sevindim :o) İnsan tutkularının birdenbire çıldırdığı komşu şubelerin aksine sessiz olması güzel. Daha net bir anlayış için küçük bir özet. Diyelim ki şöyle bir yapımız var:

double memRow[];

...

<какая то первая инициализация массива>

j=1

for(int i=0; i<=N-1; i++)

{

if(<какое то условие>)

{

ArrayResize(memRow, j+1);

<запись значений в расширенный массив>

...

}

}


Anladığım kadarıyla, bir koşul tetiklendiğinde memRow[] dizisinde dinamik bir artış sağlayacak. Onlar. dizinin uzunluğundan önce, bilmiyorum. Her şeyi doğru anladım mı?


pazarlamacıya

grasn , eğer MQL4'te programlama kendi başına bir son değilse, o zaman projenin en önemli kısımları, özellikle normal uygulama için çok boyutlu diziler gerektiriyorsa, C'ye yazılmamalı ve DLL olarak eklenmemeli mi? Hata ayıklamak için daha hızlı ve daha uygun çalışacak ve kaynak kodu daha okunabilir hale gelecektir (bir dizi dizi, dolaylı indeksleme ve sınırlamalarını atlamak için MQL'de icat etmeniz gereken diğer çöpler olmadan) ).

C/C++'da MQL'den bile daha kötü programlıyorum. Ama genel olarak, yaklaşık 15 yıldır programlama yapmıyorum. Şimdi, bazı sonuçlar çıkaracağım ilk sonucu almak istiyorum. Elbette hız alamayacağım ama sistem bir şekilde otomatik modda çalışmaya başlayacak. En azından öyle umut ediyorum. :hakkında)


Ve tabii ki haklısın, gelecekte dll'nin bazı fonksiyonlarını ve muhtemelen tüm sistemi değiştireceğim.


çözmek

Görünüşe göre, çok boyutlu bir diziye erişimin bir işlev olarak uygulanması gerekecek.

Örneğin, tek boyutlu bir diziniz var a[n]

o zaman, onu bir 3B dizi i,k,j olarak kullanmak istediğimizi varsayalım.

o zaman (i,k,j) elemanı a dizisinde a[i*3+k*2+j] olarak adreslenecektir

Ve benzeri...

İlginç bir fikir, ancak matrisin boyutunda bir değişikliğe yol açan her yinelemede, aslında tüm dizinin aranmasını (veya yeniden oluşturulmasını) gerektirecektir. Muhtemelen yapılabilir olmasına rağmen. Fikir için teşekkürler.

 
grasn писал(а) >>

Diyelim ki şöyle bir yapımız var:

double memRow[];

...

<какая то первая инициализация массива>

j=1

for(int i=0; i<=N-1; i++)

{

if(<какое то условие>)

{

ArrayResize(memRow, j+1);

<запись значений в расширенный массив>

...

}

}

Anladığım kadarıyla, bir koşul tetiklendiğinde memRow[] dizisinde dinamik bir artış sağlayacak. Onlar. dizinin uzunluğundan önce, bilmiyorum. Her şeyi doğru anladım mı?

Küçük bir tavsiye. Döngüde diziyi 1 eleman artırmak gerekli değildir. Kullanılan (dolu) öğelerin sayısını ek bir değişkende saklayın ve yeterli alan olmadığında diziyi bir düzine veya iki öğe artırın (göreviniz için kendinizi tahmin edin). Böylece önemli bir performans artışı elde edebilirsiniz. // Terminalde diziler için belleğin nasıl ayrıldığını bilmeme rağmen. Dizinin büyümesi durumunda bellek bir miktar yedekle ayrılmışsa, ArrayResize(memRow, j+1) oldukça hızlı olacaktır.

 
lea >> :

Küçük bir tavsiye. Döngüde diziyi 1 eleman artırmak gerekli değildir. Kullanılan (dolu) öğelerin sayısını ek bir değişkende saklayın ve yeterli alan olmadığında diziyi bir düzine veya iki öğe artırın (göreviniz için kendinizi tahmin edin). Böylece önemli bir performans artışı elde edebilirsiniz. // Terminaldeki diziler için belleğin nasıl ayrıldığını bilmeme rağmen. Dizinin büyümesi durumunda bellek bir miktar yedekle ayrılmışsa, ArrayResize(memRow, j+1) oldukça hızlı olacaktır.

Teşekkür ederim, deneyeceğim, ancak neyin optimal olacağını tahmin edemesem de. Öte yandan, küçük bir dizi için boyutunu da bilmeyeceğim ve ayrıca, bu uygulamada diziyi önce küçük, sonra büyük olan, hesaplanan değerlerin olduğu iki kez artırmak gerekli olacaktır. biriktirilir. Ama deneme zamanı, tavsiyen için teşekkürler.

 

Yurixx'e

Eski güzel yüksükler oynamayı öneriyorum, herhangi bir stratejiyi kullanabilir ve her yere bakabilirsiniz :o) 300 sayım için EURUSD M15 tahmini (Pazartesiden Çarşambaya kadar):

Seçenek 1 :



Süreç entropisi: 13.84



Seçenek 2 :


Süreç entropisi: 13.01



Seçenek 3 :


Süreç entropisi: 14.36


Hangi yüksüğü kaldırıyorsun? :hakkında)

Dosyalar:
process_2.rar  5 kb
Neden: