Komut dosyası tarafından bir dosyaya boşaltılan ve analiz için Uzman Danışman tarafından geri çekilen. yani SOM.mq5 Uzman Danışmanının bağımsız olarak (DJ.mq5 ve FX.mq5 komut dosyasının yardımı olmadan) terminalden veri alabilmesi için.
Çok ilginç bir makale! Ben de bu SOM kodunu kullanmaya çalışıyorum.
Ağırlıklar p1-p4 - piyasadan alınan veriler (şimdiye kadar sadece ZZ noktaları arasındaki fark).
p5 - sanal bir Alış işleminin sonucu - TP=1, SL=-1 (şimdiye kadar TP=SP=300pp). Bana öyle geliyor ki, sadece bir p5 BMU (en yakın vektör) sonucu tahmin etmek için yeterli değil.
BMU'ya olan mesafeyi dikkate alarak BMU'nun etrafındaki alanın (netlik için mavi) sonucunun nasıl hesaplanacağını önerebilecek biri var mı?
BMU'ya olan mesafeyi dikkate alarak BMU'nun etrafındaki alanın (netlik için mavi daire içine alınmış) sonucunu hesaplamanın ne kadar kolay olduğunu söyleyebilecek biri var mı?
Merak ediyorum, benim de düşündüğüm bu muydu? Yani bu alanı koordinatlarla programatik olarak nasıl bulacağımı mı kastediyorsunuz?
progma137: Merak ediyorum, benim de düşündüğüm bu muydu? Yani bu alanı koordinatlarla programlı olarak nasıl bulacağımızı mı kastediyorsunuz?
CSOM sınıfında zaten bir fonksiyon var:
int BestMatchingNode(double &vector[]); // verilen bir vektöre göre ızgaradaki en iyi düğümü bul
Izgaramızın boyutunu bilerek, BMU'nun (veya bu uygulamada BMN'nin) koordinatlarını hesaplamak kolaydır. Burada, BMU'ya olan mesafeyi dikkate alarak, BMU'nun etrafındaki alanın toplam sonucunun (bir parametre (ağırlık) ile) tam olarak hesaplanmasını istiyoruz. Örneğin, çapı 10 nöron (hücre) olan bir bölgeyi ele alıyoruz. En yakın nöronların sonuç üzerinde yüksek bir etkisi vardır. Ve ne kadar uzaksa o kadar zayıf....
Burada, ızgaranın kenarlarında bulunan BMU-kabuklarını nasıl ele almamız gerektiği konusunda bir sorumuz var. Sonuçta, daha az komşuları var.
Lütfen bana haritalarda çubukları nasıl bulacağımı söyleyebilir misiniz?
Dört vektör giriyoruz ve 4 harita elde ediyoruz. Bunların hepsinde, örneğin mevcut günden (günler için) 3 çubuk geriye doğru bir yörünge çizmek ve kümelerin durumunu analiz etmek istiyorum.
Bunu programlı olarak yapmak mümkündür, örneğin, tüm haritalarda belirli bir çubuk numarasından bir yörünge çizecek olan void DrawTrajectory(int from, int count) işlevi ile.
Ve ikinci soru, çıktı haritası ve en önemlisi frekans haritası nasıl elde edilir?
Bir yanıt beklemedim... Yörüngenin giriş haritalarında giriş vektörünün verilen sayısından verilen adım sayısına kadar görüntüleme yöntemini yazdım, yanlış bir şey varsa beni affetmeyin - ben bir programcı değilim :)
Birisi bu çok akıllı kütüphaneyi (yazara ve Alexey Sergeev'e teşekkürler) pratik uygulama seviyesine getirebilir mi? !!!!
//------------------------------------------------------------------ ShowTrajectoryvoid CSOM::ShowTrajectory(int n_patern, int m_cnt) // Giriş vektörlerinin yörüngesini gösterme yöntemi
{
if(m_cnt<=0) return;
int idx=0,x[],y[], dy=0;
string name[];
ArrayResize(x,m_cnt);
ArrayResize(y,m_cnt);
ArrayResize(name,m_cnt);
double data[]; ArrayResize(data, m_dimension);
for(int ind=0; ind<m_nSet; ind++) // eğitim setindeki vektör değerlerine göre verileri ayarlayın
{
if(ind<n_patern) continue; // gerekli girdi modelini bekleyinfor(int k=0; k<m_dimension; k++) data[k]=m_set[m_dimension*(ind)+k];
int winningnode=BestMatchingNode(data); // en yakın düğümün indeksini bul// izleme için seçilen giriş desenlerinin koordinatlarını kaydetint x1,y1,x2,y2;
m_node[winningnode].GetCoordinates(x1,y1,x2,y2);
if(m_bHexCell) // eğer altıgenler
{
int x_size=int(MathAbs(x2-x1));
int y_size=int(MathAbs(y2-y1));
dy=y_size;
y1=y1+y_size/4;
y2=y2+y_size/4;
}
x[idx]=(x1+x2)/2;
y[idx]=(y1+y2)/2;
name[idx]=(string)ind;
//x[idx]=(int)m_node[winnode].X();//y[idx]=(int)m_node[winnode].Y();
idx++;
m_cnt--;
if(m_cnt==0) break; // gerekli sayıda giriş paterniyonunu kaydedin
}
// yörüngeyi, düğümleri ve yazıları çizinint bcol=clrBlack;
for(int k=0; k<m_dimension; k++)
{
int yp=0, yc;
int sz=ArraySize(x);
for(int j=0; j<sz; j++)
{
yc=y[j];
// düğümint sh=2;
if(j>0) sh=1;
m_bmp[k].DrawRectangle(x[j]-sh,y[j]-sh,x[j]+sh,y[j]+sh,bcol,true);
// yörüngeif(j<sz-1) m_bmp[k].DrawLine(x[j],y[j],x[j+1],y[j+1],bcol);
yc=y[j]-dy;
if(MathAbs(yp-yc)<dy) yc-=dy;
yp=yc;
// paterna sayısı (çubuklar)
m_bmp[k].TypeText(x[j],yc,name[j], clrIndigo);
}
}
}
Belki birisi çok faydalı bir kütüphaneyi (yazara ve Alexey Sergeev'e teşekkürler) pratik kullanım seviyesine getirir.!!!!
Ne demek istiyorsun? güzel SDK mı? yoksa program tarafından üretilen güzel resimler mi? kimin neye ihtiyacı var, ne yapıyor. bu haritalar, analiz edilmesi gereken verileri oluşturmak ve daha sonra bunlara dayanarak sonuçlar çıkarmak için bir araçtan başka bir şey değildir.
Ne için olduklarını bilmiyorum. Bilgileri doğrudan terminalden alabilirsiniz.
Ne için kullanıldıklarını hayal etmek bile korkutucu, muhtemelen birisi onları manuel olarak saymıştır.
SZY: Birisi Uzman Danışmanın bir komut dosyası olmadan doğrudan terminalden bilgi çekebilmesi için bir mod gönderebilir mi?
Hangi bilgilere ihtiyacınız var?
Bu makale uzman bir danışman almak için her şeyi içeriyor mu?
Sinir Ağı Uzman Danışmanını uygulamakla ilgileniyorum.
Merhaba sevgili forum üyeleri!
Çok ilginç bir makale! Ben de bu SOM kodunu kullanmaya çalışıyorum.
Ağırlıklar p1-p4 - piyasadan alınan veriler (şimdiye kadar sadece ZZ noktaları arasındaki fark).
p5 - sanal bir Alış işleminin sonucu - TP=1, SL=-1 (şimdiye kadar TP=SP=300pp). Bana öyle geliyor ki, sadece bir p5 BMU (en yakın vektör) sonucu tahmin etmek için yeterli değil.
BMU'ya olan mesafeyi dikkate alarak BMU'nun etrafındaki alanın (netlik için mavi) sonucunun nasıl hesaplanacağını önerebilecek biri var mı?
BMU'ya olan mesafeyi dikkate alarak BMU'nun etrafındaki alanın (netlik için mavi daire içine alınmış) sonucunu hesaplamanın ne kadar kolay olduğunu söyleyebilecek biri var mı?
Merak ediyorum, benim de düşündüğüm bu muydu? Yani bu alanı koordinatlarla programlı olarak nasıl bulacağımızı mı kastediyorsunuz?
CSOM sınıfında zaten bir fonksiyon var:
int BestMatchingNode(double &vector[]); // verilen bir vektöre göre ızgaradaki en iyi düğümü bul
Izgaramızın boyutunu bilerek, BMU'nun (veya bu uygulamada BMN'nin) koordinatlarını hesaplamak kolaydır.
Burada, BMU'ya olan mesafeyi dikkate alarak, BMU'nun etrafındaki alanın toplam sonucunun (bir parametre (ağırlık) ile) tam olarak hesaplanmasını istiyoruz. Örneğin, çapı 10 nöron (hücre) olan bir bölgeyi ele alıyoruz. En yakın nöronların sonuç üzerinde yüksek bir etkisi vardır. Ve ne kadar uzaksa o kadar zayıf....
Burada, ızgaranın kenarlarında bulunan BMU-kabuklarını nasıl ele almamız gerektiği konusunda bir sorumuz var. Sonuçta, daha az komşuları var.
Lütfen bana haritalarda çubukları nasıl bulacağımı söyleyebilir misiniz?
Dört vektör giriyoruz ve 4 harita elde ediyoruz. Bunların hepsinde, örneğin mevcut günden (günler için) 3 çubuk geriye doğru bir yörünge çizmek ve kümelerin durumunu analiz etmek istiyorum.
Bunu programlı olarak yapmak mümkündür, örneğin, tüm haritalarda belirli bir çubuk numarasından bir yörünge çizecek olan void DrawTrajectory(int from, int count) işlevi ile.
Ve ikinci soru, çıktı haritası ve en önemlisi frekans haritası nasıl elde edilir?
Bir yanıt beklemedim... Yörüngenin giriş haritalarında giriş vektörünün verilen sayısından verilen adım sayısına kadar görüntüleme yöntemini yazdım, yanlış bir şey varsa beni affetmeyin - ben bir programcı değilim :)
Birisi bu çok akıllı kütüphaneyi (yazara ve Alexey Sergeev'e teşekkürler) pratik uygulama seviyesine getirebilir mi? !!!!
CSOM sınıfında, yüklenen eğitim vektörlerinin sayacı m_nSet yalnızca CSOM::CSOM() yapıcısında sıfırlanır.
Sonuç olarak, döngülü yeniden eğitim modunda eğitim vektörlerinin sayısı sürekli artmaktadır.
CSOM::LoadTrainData(...) yöntemine m_nSet=0; satırını eklemek daha iyidir.
Belki birisi çok faydalı bir kütüphaneyi (yazara ve Alexey Sergeev'e teşekkürler) pratik kullanım seviyesine getirir.!!!!