Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 321

 
Maksim Dmitrievski :

https://www.mql5.com/ru/code/127

sadece kodda bir tür hata var, bence gösterge yanlış normalleştirildi

Her şey doğru, sadece [0; 1]'de değil, farklı bir aralıkta normalleştirildi.


Kolaylık sağlamak için, sahip olduğunuz CalcRegression işlevini bırakabilirsiniz (sadece içinde b'nin zaten zıt işaretli * ile döndüğünü, yani işareti ikinci kez değiştirmenize gerek olmadığını unutmayın). Sonucu hangi değerle çarpmanız gerektiğini ampirik olarak bulun, böylece [-0.5; 0.5] aralığına düşer. Sonra ortayı 0'dan 0,5'e taşımak için +0.5 ekleyin


*ama tam olarak öyle değil. görelilik sorusu. Bu formül, zaman içindeki en eski fiyatların dizideki en yüksek indekse sahip olması durumunda doğru işaretiyle b'yi verecektir.

 
Dr. tüccar :

Her şey doğru, sadece [0; 1]'de değil, farklı bir aralıkta normalleştirildi.


Basit olması için, sahip olduğunuz CalcRegression işlevini bırakabilirsiniz (b'nin içinde zaten zıt işaretle döndüğünü, yani işareti ikinci kez değiştirmenize gerek olmadığını unutmayın). Sonucu hangi değerle çarpmanız gerektiğini ampirik olarak bulun, böylece [-0.5; 0.5] aralığına düşer. Sonra ortayı 0'dan 0,5'e taşımak için +0.5 ekleyin


farklı zaman ölçekleri için farklı max ve min değerlerine sahip olacaksınız, bu çok uygun değil, bana öyle geliyor ki tarihin büyük bir bölümünde gösterge dizisi tarafından en normalleştirilmiş
 
Dr. tüccar :

*ama tam olarak öyle değil. görelilik sorusu. Bu formül, zaman içindeki en eski fiyatların dizideki en yüksek indekse sahip olması durumunda doğru işaretiyle b'yi verecektir.


Mevcut arabelleğe dayalı olarak göstergeye başka bir normalleştirilmiş arabellek ekleyeceğim :)
 

Regresyonun eğimi ile de ilginç olabilir. Geri test ve ileri. Kısacası, bu mantıkla çalışabilir ve farklı öngörücülerle deneyler yapabilirsiniz.


Dosyalar:
 
Maksim Dmitrievski :

Regresyonun eğimi ile de ilginç olabilir. Geri test ve ileri. Kısacası, bu mantıkla çalışabilir ve farklı öngörücülerle deneyler yapabilirsiniz.


Kod için teşekkürler, test ettim. Daha da kötü oldum. Ama optimizasyon için bir yıl yerine sadece 1 ay uğraştım, hızlıca kontrol etmek istedim. Ön testte, danışmanın önce normal olduğunu, sonra yavaş yavaş dengeye başladığını ve sonra boşaldığını görebilirsiniz. Yeni verilerde biraz hala yaşıyor, fena değil.

değiştirirdim

1) çift a3 = reg[0]; - sıfır indeks, zaman açısından en eski veridir. Buradaki en son (yeni) çubuk 49 (50 alındığından beri), ondan daha iyi olacak. Ancak ikincisi yeniden çizilebilir, o zaman 48 daha iyidir, ayrıca göstergenin yeniden çizilip çizilmediğini kontrol etmeniz gerekir.
Rsi ile aynı, üçünden daha yeni olanı çıkardınız. En modası geçmiş olarak sıfır indeksli olanı kaldırmaya çalışmak mantıklı.

2) Yuri'den danışmanın üçüncü versiyonunda, RNN işlevi dört parametre içerir, hemen 3 rsi ve onunla trendi alabilirsiniz. Genel olarak, Yuri'nin makalesinde yazıldığı gibi, fonksiyon yeni parametrelerle desteklenebilir, ancak her +1 parametresi katsayı sayısını ikiye katlayacaktır.

3) Durmayı ve almayı sevmiyorum, optimal değerleri sürekli yeni çubuklarda değişiyor. Daha doğrusu, optimal değerler bile yoktur, sadece belirli bir zaman aralığında Uzman Danışman için bazı "uygun" değerler vardır. Ayrıca, komisyoncular durma noktasına kadar mum çekebilir. Her yeni çubuk için bir tahmin yapmaya çalışırdım ve bir sonraki çubuk ve tahmine kadar anlaşmayı bu yönde tutardım ve gerekirse tersine çevirirdim.

4)

   int handle= iRSI ( _Symbol , 0 , 9 , PRICE_OPEN );
   double rsi[ 30 ];
   CopyBuffer (handle, 0 , 0 , 28 ,rsi);

Tanıtıcının OnInit'te başlatılması gerekir ve her Expert Advisor oluşturulduğunda değil. Ayrıca 30 elemanlı bir dizi ve sadece 28 kopyalanır. 28 ve 29 indekslerine erişilemez (kimse yapmaz, ancak isteyip istemediğinizi asla bilemezsiniz), doldurulmazlar.

 
Dr. tüccar :


Kod için teşekkürler, test ettim. Daha da kötü oldum. Ancak optimizasyon için bir yıl yerine sadece 1 ay kullandım, hızlıca kontrol etmek istedim. Ön testte, danışmanın nasıl önce normal olduğunu, sonra yavaş yavaş dengeye başladığını ve sonra boşaldığını görebilirsiniz. Yeni verilerde biraz hala yaşıyor, fena değil.

değiştirirdim

1) çift a3 = reg[0]; - sıfır indeks, zaman açısından en eski veridir. Buradaki en son (yeni) çubuk 49 (50 alındığından beri), ondan daha iyi olacak. Ancak ikincisi yeniden çizilebilir, o zaman 48 daha iyidir, ayrıca göstergenin yeniden çizilip çizilmediğini kontrol etmeniz gerekir.
Rsi ile aynı, üçünden daha yeni olanı çıkardınız. En modası geçmiş olarak sıfır indeksli olanı kaldırmaya çalışmak mantıklı.

2) Yuri'den danışmanın üçüncü versiyonunda, RNN işlevi dört parametre içerir, hemen 3 rsi ve onunla trendi alabilirsiniz. Genel olarak, Yuri'nin makalesinde yazıldığı gibi, fonksiyon yeni parametrelerle desteklenebilir, ancak her +1 parametresi katsayı sayısını ikiye katlayacaktır.

3) Durmayı ve almayı sevmiyorum, optimal değerleri sürekli yeni çubuklarda değişiyor. Daha doğrusu, optimal değerler bile yoktur, sadece belirli bir zaman aralığında Uzman Danışman için bazı "uygun" değerler vardır. Ayrıca, komisyoncular durma noktasına kadar mum çekebilir. Her yeni çubuk için bir tahmin yapmaya çalışırdım ve bir sonraki çubuk ve tahmine kadar anlaşmayı bu yönde tutardım ve gerekirse tersine çevirirdim.

4)

Tanıtıcının OnInit'te başlatılması gerekir ve her Expert Advisor oluşturulduğunda değil. Ayrıca 30 elemanlı bir dizi ve sadece 28 kopyalanır. 28 ve 29 endekslerine erişemezsiniz (kimse yapmaz ama siz asla istemezsiniz), bunlar doldurulmaz.


Hımm, ha? Tamponu kopyalarken ilk değeri döndürürken boş olduğunu düşündüm. Kontrol etmek gerekiyor...

https://www.mql5.com/ru/docs/series/copybuffer

sl ve tp yerine sondaki eklendi, sonuçlar pek gelişmedi

tutamaç hakkında, evet, regresyon için onu başlatmaya aldım, rsi için yapmayı unuttum

orada forvetlerden hangisinin en yüksek kar faktörüne sahip olduğunu seçmeniz gerekir ve böylece geriye dönük test yaklaşık olarak aynı olur, bu, şebekenin bu parametreler üzerindeki normları tahmin edebildiği anlamına gelir. Ve bir ay içinde trendi yakalayabilir, ancak ileriye doğru değişti .. daha fazla örnekleme gerekli, evet .. dönem ne kadar kısa olursa, alım veya satım emirleri o kadar fazla geçerli olur, esas olarak alım veya satım için optimize edilir, daha uzun süre satış sayısıdır ve bai hizalanır

Ve nedense RNN3 çok daha az sinyal veriyor, nedenini henüz anlamadım

Normalleştirme işlevinin 50 değil de 5000 barlık bir diziyi hemen almasının daha iyi olup olmadığı hala tam olarak açık değil, böylece en baştan daha doğru maks ve min'i bulur ve bunları zamanla güncellemez, çünkü test bölümünün başında, girişe tam olarak doğru bir şekilde normalleştirilmemiş değerlerin besleneceği ve daha sonra giderek daha doğru bir şekilde ortaya çıktığı ortaya çıktı.

Artı, örneğin, sabit bir seri üzerinde regresyon eğimi ve otokorelasyonun ne kadar iyi olduğundan emin olana kadar, grafiklerin hala trendini düşürür ve ızgara için daha sindirilebilir değerler verirdim, çünkü. ekonometride iyi değilim şimdi video izliyorum

Ayrıca daha sonra bu RNN'yi normal MLP ile karşılaştırmak istiyorum, ancak tamamen doğru bir karşılaştırma olmayacak çünkü MLP'nin çıktıya bir şey göndermesi gerekecek. Diğer bir seçenek ise 3 RNN'den oluşan bir komite oluşturmak ve sonuçlarını RNN :D'ye veya bir tür evrişimli NN'ye göndermektir. Bulut aracılığıyla bile optimize edilmiş olması çok iyi olacaktır. uzun zamandır. Ve 3 RNN'yi MLP'ye göndermek ve çıktı olarak fiyatlarda bir artış vermek daha iyidir, böylece teorik olarak yeniden eğitimden kurtulacağız. ONLAR. RNN otomatik kodlayıcı rolünü oynayacak


 
Maksim Dmitrievski :




ARIMA'nın uygulanabileceği teklifleri bulmak neredeyse imkansızdır. Ama bu dersin sonuydu.

GARCH'a ne dersin? Bu şey çok daha umut verici ve yüksek frekanslı ticaret için bile bir günden daha kısa bir süre TF'lerde çok yaygın olarak kullanılıyor.

 
San Sanych Fomenko :


ARIMA'nın uygulanabileceği teklifleri bulmak neredeyse imkansızdır. Ama bu dersin sonuydu.

GARCH'a ne dersin? Bu şey çok daha umut verici ve yüksek frekanslı ticaret için bile bir günden daha kısa bir süre TF'lerde çok yaygın olarak kullanılıyor.


Peki ya trendleri çıkartıp sonra onları otoregresifleştirmeye ve ardından değerleri regresyonun eğimi ile birlikte NN'ye doldurmaya ne dersiniz? Allah kahretsin bu ağırlıklarla yeni tanışmaya başladım, daha denemedim bile. Ve ben sadece garch'ı duydum :)

Ve RNN tipini MLP için otomatik kodlayıcı olarak nasıl kullanmayı düşünüyorsunuz?

Anladığım kadarıyla, tekrarlayan bir ağ, bunun gibi bir dizi mantıksal kurala sahip bir otomatik kodlayıcıdır:


 
Maksim Dmitrievski :

Peki ya trendleri çıkartıp sonra onları otoregresifleştirmeye ve ardından değerleri regresyonun eğimi ile birlikte NN'ye doldurmaya ne dersiniz? kahretsin bu ağırlıklarla yeni tanışmaya başladım daha denemedim bile

şimdi daha iyi deney!

çok zaman kazanırsınız ve kendinizi gereksiz bilgiden korursunuz

 
San Sanych Fomenko :


ARIMA'nın uygulanabileceği teklifleri bulmak neredeyse imkansızdır. Ama bu dersin sonuydu.

GARCH'a ne dersin? Bu şey çok daha umut verici ve yüksek frekanslı ticaret için bile bir günden daha kısa bir süre TF'lerde çok yaygın olarak kullanılıyor.

Ben de baktım. IMHO, bu bizim konu alanımız değil.