"New Neural", MetaTrader 5 platformu için bir sinir ağı motorunun Açık Kaynak projesidir. - sayfa 46

 
maxfade :

hemen sakallı bir şakayı hatırladı

Doğum anında "sıfırlardan" şüpheliyim, ayrıca hataların-sapmaların sürekli mevcut olduğunu düşünüyorum.
Bu arada evet bir çocuk en azından kavrama ve yutma refleksi ile doğar ve bu da beynin işidir. Yani beyni sıfır değil, özellikle eğitimi daha doğmadan çok önce başladığı için. Yeni doğmuş bir bebeğin ağırlıklarını yüklemenin öğrenmekten çok bir evrim meselesi olması kötü bir şey.
 

Parametreli bir yapıcı aracılığıyla bir nesne oluştururken , dizinin sonunda yeni bir nesne başlatılacak şekilde değiştirildi.

biraz daha yavaş çalışacak, ancak her zaman benzersiz bir dizi.

Standart kurucu aracılığıyla oluştururken, yine de Srand () öğesini çağırmanız gerekir ve sıra aynı olacak, bir daire içinde dönecektir.

   uint st= GetTickCount ();
  CRandm *rnd= new CRandm(( uint ) TimeLocal (), 10000 ); // длинна последовательности
   for ( int i= 0 ;i< 1000000 ;i++) // количество вызовов
    {
     rnd.Rand();
    } 
   delete rnd;   
   Print ( "time=" , GetTickCount ()-st);
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
Dosyalar:
Randm.mqh  5 kb
 

Sanal emirlerin kutsal kitabını düşünmeyi öneriyorum (piyasaya göre açma/kapama taklit edilir. Komutlar, emirlerle gerçek çalışmadakiyle hemen hemen aynıdır).

Modeli geçmiş veriler üzerinde çalıştırmanız gerektiğinde ( strateji test cihazının dışında) kullanışlı olacaktır.

Neyi unuttun? Neler geliştirilebilir, eklenebilir, değiştirilebilir, sonlandırılabilir? - İncil çok ham.

Şimdiye kadar sadece al-0 ve sat-1 işlemleri uygulandı.

Dosyalar:
C_Orders.mqh  15 kb
 

Ders 1 burada https://www.mql5.com/en/forum/4956/page23

Ders 2 burada https://www.mql5.com/en/forum/4956/page34

Ders 3 burada https://www.mql5.com/ru/forum/4956/page36

ders 4

Dolayısıyla görevimiz, beyin prensibine göre fiyat kalıpları için sınıflandırıcı bir sinir ağı oluşturmaktır. Bu ağ iki modüle ayrılabilir: girdi bilgilerini (fiyatları) dönüştürmek için bir modül ve bilinen herhangi bir ilkeye göre oluşturulabilen bir sınıflandırma modülü (örneğin, Destek Vektör Makinesi):

Bir önceki derste, görsel korteksin HMAX modelini bilginin biyolojik dönüşümünün bir örneği olarak tanımlamıştım. Bu modelin en büyük dezavantajı, ağırlıkların (alıcı alanların) değerlerinin içinde öğrenilmemesi, sadece beyin nöronlarının biyolojik ölçümlerinden alınmasıdır. Örneğin, V1'deki (S1) basit nöronların alıcı alanlarının ölçümü buradaki videoda gösterildiği gibi yapılır https://www.youtube.com/watch?v=Cw5PKV9Rj3o (duyduğunuz tıklamalar nöron dürtüleridir). Alıntıların bir zaman serisi durumunda, bilgiyi dönüştüren nöronların "alıcı alanları" önceden bilinmemektedir. Bu nedenle, onları kendimiz bulmalıyız. Örneğin, ilk fiyat dönüşüm katmanı (S1 katmanı), görsel korteksin S1 katmanına benzetilerek aşağıdaki gibi oluşturulabilir:

Bu örnekte, S1 katmanımızın 0-5 numaralı 6 alt katmanı vardır. Aynı alt katmanın nöronları (daireleri), soldaki kutularda koşullu olarak gösterilen aynı girdi ağırlıklarına (alıcı alanlar) sahiptir. Nöronların her alt katmanının kendi alıcı alanı vardır. Önceden biliyoruz ki, k=0..5 ("yukarı" yönü) olan w_0,k alıcı alanına sahip bir alt katman varsa, o zaman -w_0,k ("aşağı" yönü) alıcı alanına sahip bir alt katmanın olması gerektiğini biliyoruz. ). Pozitif alanı olan katmanlar net sayılarla (0, 2, 4), negatif karşılıkları ise bulanık sayılarla (1, 3, 5) numaralandırılsın. Ek olarak, S1 alt katmanının farklı boyutlarda alıcı alanlara sahip olması gerektiğini biliyoruz. Alanın boyutunun alt katman 0'dan (ve onun negatif karşılığı 1) alt katman 4'e (ve onun negatif karşılığı 5) yükselmesine izin verin. Aynı sütundaki tüm nöronların girdilerine aynı fiyatlar yükselir (örneğin, x_0...x_5 fiyatları ilk sütundaki nöronların girdilerine kadar çıkar). 1 bar (x_1...x_6) kaydırılan fiyatlar, bir sonraki sütundaki nöronların girdilerine yükselir ve bu böyle devam eder. Dolayısıyla, S1 katmanımız, farklı yönlerde (yukarı, aşağı), boyutlarda ve zaman içinde konumlarda alıcı alanlara sahip nöronlardan oluşur.

S1 katmanındaki nöronların girdi ağırlıklarının eğitimi, farklı alt katmanlardan yalnızca bir nöron sütunu için gerçekleştirilir ve hangisi olduğu önemli değildir. Daha sonra, her bir alt etki alanındaki kalan nöronlar için tüm ağırlıklar kopyalanır. Öğrenme, S1 katmanının girdilerine farklı fiyat kalıpları uygulanarak ve bazı kurallara göre ağırlıklar değiştirilerek öğretmen olmadan gerçekleşir. Nöron ağırlıkları için kendi kendine öğrenme kuralları için burada iyi tanımlanmış birçok kural vardır:

Miller, KD ve MacKay, DJC (1994). Hebbian öğreniminde kısıtlamaların rolü. Sinirsel Hesaplama, 6, 100-126.

Nöronların kendi kendine öğrenmesi için ilk kural 1949'da Hebb tarafından öne sürülmüştür ( https://en.wikipedia.org/wiki/Hebbian_theory ). Bu kural şöyle der: "Bir nöron başka bir nörondan girdi alıyorsa ve her ikisi de oldukça aktifse, nöronlar arasındaki ağırlık arttırılmalıdır." Matematiksel olarak böyle yazılır

dw_i = mu*x_i*y,

burada dw_i w_i ağırlık artışıdır, x_i i-inci girişteki değerdir, y nöronun çıkışıdır, mu öğrenme oranıdır. Rekabetçi öğrenme kuralları sınıfına ait olan Oja kuralını ( https://en.wikipedia.org/wiki/Oja's_rule ) kullanacağız:

dw_i = mu*y*(x_i - y*w_i/a),

burada dw_i - ağırlık artışı w_i, x_i - i-inci girişteki fiyat, y - nöron çıkışı y = SUM(w_i*x_i, i=0..m-1), mu - öğrenme oranı ve - parametresi ( toplam kare ağırlıklar SUM(w_i^2,i=0..m-1) a) eğilimindedir. Bu kuralın avantajı, fiyat tekliflerinin ana özvektörleri olarak ağırlıkları otomatik olarak bulmasıdır. Yani, Oji'nin kuralı, Temel Bileşen Yöntemini (PCA) yeniden üretir. Bu, görsel korteksin S1 tabakasının alıcı alanlarının görsel bilginin ana özvektörleri olduğu biyolojik varsayımlarıyla örtüşmektedir. Ekli C++ kodu, EURUSD M5 giriş tırnak işaretleri, mu=1, a=1 ile 32 S1 alt katmanının ağırlıklarını otomatik olarak eğitir. Girişin fonksiyonları olarak bu ağırlıklar aşağıda gösterilmiştir.

İlk iki alt katmanın (0 ve 1) ağırlıkları kırmızı ile gösterilmiştir. Yalnızca sıfır olmayan iki değere sahiptirler: -0.707 ve +0.707. 2 ve 3 numaralı alt katmanların ağırlıkları turuncu renkte gösterilmiştir. Sıfır olmayan 4 değere sahiptirler. Vb.

Ekli kodu kullanmak için Boost ve CImg kitaplıklarını http://cimg.sourceforge.net/ yüklemeniz gerekir. Daha üst katmanlara (C1, S2, C2) henüz ulaşmadım ve büyük ihtimalle uzun bir süre de ulaşamayacağım. Önceki derslerimi okuyanlar, tüm HMAX katmanlarının nasıl çalıştığını anlamalı ve fiyat teklifi dönüştürme modülünü tamamlamalıdır. Bir sonraki (son) derste SparseNets hakkında konuşacağım.

Dosyalar:
BrainPower.zip  907 kb
 
joo :

Sanal emirlerin kutsal kitabını düşünmeyi öneriyorum (piyasaya göre açma/kapama taklit edilir. Komutlar, emirlerle gerçek çalışmadakiyle hemen hemen aynıdır).

Modeli geçmiş veriler üzerinde çalıştırmanız gerektiğinde ( strateji test cihazının dışında) kullanışlı olacaktır.

Neyi unuttun? Neler geliştirilebilir, eklenebilir, değiştirilebilir, sonlandırılabilir? - İncil çok ham.

Şimdiye kadar sadece al-0 ve sat-1 işlemleri uygulandı.

Kütüphane için teşekkürler. Nasıl kullanılacağına dair kısa bir rehber alabilir miyim?
 
Grafik :
Kütüphane için teşekkürler. Nasıl kullanılacağına dair kısa bir rehber alabilir miyim?

Aslında anlatacak özel bir şey yok.

Geçmişi her çalıştırmadan önce, sipariş geçmişini temizlemek için aramanız gerekir:

 void Initialise( int MaxPossibleCountOrd, double Spread, double Point_);

ve ardından ticaret stratejisine uygun olarak gerekli komutları çağırın:

 int     OrderOpen        ( int Type, double Volume, int Time, double Price, double SL, double TP);
void    Possible_SL_or_TP( int Time, double PriceHigh, double PriceLow);
void    OrderClose       ( int Ticket, int Time, double Price);
void    OrderCloseAll    ( int Time, double    Price);
int     ProfitTradeCount ();
int     TotalPipsProfit  ();
int     LossSeriesCount  ();
int     ProfitSeriesCount();

Yayılma sabittir, başlatma sırasında ayarlanır. Yüzen bir forma için uygun işlevselliği eklemeniz gerekecektir. Benim için buna ihtiyacı yok - sadece enstrüman için mümkün olan maksimum yayılmayı ayarlayın ve bu kadar.

 
joo :

Aslında anlatacak özel bir şey yok.

Geçmişi her çalıştırmadan önce, sipariş geçmişini temizlemek için aramanız gerekir:

ve ardından ticaret stratejisine uygun olarak gerekli komutları çağırın:

Yayılma sabittir, başlatma sırasında ayarlanır. Yüzen bir forma için uygun işlevselliği eklemeniz gerekecektir. Benim için buna ihtiyacı yok - sadece enstrüman için mümkün olan maksimum yayılmayı ayarlayın ve bu kadar.

Teşekkürler, akşam deneyeceğim. MT4 https://www.mql5.com/en/forum/124013 için bir analog bir şekilde yardımcı olabilir.
Простая идея мультивалютного тестера с примером реализации - MQL4 форум
  • www.mql5.com
Простая идея мультивалютного тестера с примером реализации - MQL4 форум
 

Üzgünüm ama gücümü yanlış hesaplamış gibiyim. Şimdi projeye dahil olmak için neredeyse hiç fırsatım yok.

Ve katılma arzusu harika olsa da, aptalca yeterli zamanım ve enerjim yok, bu üzücü.

Sınavları geçtikten sonra (Aralık ortası) katılabileceğim. Bu arada, derslerden biri doğrudan sinir ağları ile ilgilidir.

 

Bu arada. Ve iki amaç fonksiyonu vardır. Lojistik regresyon ve basit regresyon için.

Sınıflandırma, lojistik regresyon durumlarından biridir.

Lojistik regresyon için amaç fonksiyonu:

Ve normal olanı için:

türevleri benzer olsa da. Belki de bu yüzden genellikle ayrım konusunda sessiz kalıyorlar.

Birincisi, sınıflandırma problemlerinde çıktı sigmoid katmanı için kullanılır.

İkincisi, tahmin problemlerinde doğrusal çıktı içindir.

 
TheXpert :

Üzgünüm ama gücümü yanlış hesaplamış gibiyim. Şimdi proje üzerinde çalışmak için neredeyse hiç fırsatım yok.

Ve katılma arzusu harika olsa da, aptalca yeterli zamanım ve enerjim yok, bu üzücü.

Sınavları geçtikten sonra (Aralık ortası) katılabileceğim. Bu arada, derslerden biri doğrudan sinir ağları ile ilgilidir.

Köşelerden sürün, yoldaşlar. Nikaraşo.