EA N7S_AO_772012 - sayfa 30

 
SHOOTER777 >> :

ANCAK

ne yazık ki bu gözlem üzücü.. ayrıca fark edildi..

 

SHOOTER, parametre gruplarının tam olarak neyi optimize ettiğini kısaca açıklayabilir misiniz?

  • x
  • y
  • z
  • X
  • Y
  • Z
Muhtemelen kısmen anlıyorum, ancak resmin tamamını henüz kafamda hayal edemiyorum.
 

İşte başka bir tuhaflık, ya da belki sadece bir aksaklık

 double BTS ( ) {
	if ( ( prcptrnz1 ( ) > 0 | | F = = 0 ) & & bu < HM_Up_X ) {
		if ( prcptx1 > 0 & & Delta_G12 > 0 ) {
			sl = slx ; 
			tp = tpx * slx ; 
			mn = mnx1 ; 
			return ( 1 ) ;
		}
	} 
	if ( ( prcptrnz1 ( ) < 0 | | F = = 0 ) & & sll < HM_Dn_Y ) {
		if ( prcpty1 > 0 & & Delta_G12 < 0 ) {
			sl = sly ; 
			tp = tpy * sly ; 
			mn = mny1 ;
			return ( - 1 ) ;
		}
	}
	return ( 0 ) ;
}

Şimdi F == 0 ise ve hiç açık pozisyon yoksa, önce ilk bloğa, sonra ikinci bloğa girebiliriz, bu da daha sonra yanlış sonuçlara yol açacaktır.

Yoksa bir şey anlamıyor muyum?

 

Muhtemelen olmasa da. İki bloğa da aynı anda girmeyeceğiz çünkü

Delta_G12

izin vermez.

 
ShestkoFF писал(а) >>

İşe yarayan şeyleri eleştirmeyi sevmiyorum. Sadece kod hakkında biraz eleştiri yapacağım:

Spsb. Eleştiriyi eleştiri olarak değil, eylem kılavuzu olarak algılıyorum, yani. hala okumak en azından MQL için küçük bir rehber

  • Her şeyi bir satıra yazmak gerekli değildir, çünkü kodu okumak imkansızdır.

Kabul edildi, ancak muhtemelen gelecekteki çalışmalarda zaten. Bu "el yazısı", diğer küresel projelerden sonra ve 12 inçlik monitörümün küçük çözünürlüğü nedeniyle bende kaldı. Sürümünüz şüphesiz daha iyi görünüyor, ancak listeyi sürekli ileri geri kaydırmam gerekecek. Ama kendim için burada olmadığım için tekrar ediyorum - dikkate alacağım.

  • Değişkenleri anlamlı bir şekilde adlandırın

Yukarı Bak! İsimlerimi sevsem de, GOELRO, OBKhSS, IMHO vb. kısaltmalara alıştığımız için alışmam gerekiyor. Yakından bakarsanız bazı değişkenlere az çok anlamlı isimler verdim ama tüm ünlüleri kısalttım.

  • Yerellerse, değişkenleri global yapmayın.

Değişkenleri henüz çözemedim. Sıfırdan kod yazdığınızda, hangi değişkenin nerede olacağı hakkında hala hiçbir fikriniz yok ve bu nedenle neredeyse tüm global

  • Global değişkenleri statik yapmamak mantıklı değil. Durum böyle değilse lütfen açıklayın.

ampirik olarak öyle değil, nereye "koştuğumu" hatırlıyorum, açıklayacağım, işlevde görünüyor BuSll()

  • Dilde tanımlanan standart sabitleri kullanın. Örneğin, bir zaman aralığı belirtmek. double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} Bence double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));} ile değiştirmek daha iyi.

katılıyorum yine düzeltelim sıfırdan bir blok yazdığınızda, fonksiyona hangi parametreleri ileteceğiniz konusunda hala hiçbir fikriniz yok ve ardından göz “bulanıklaşıyor” ve böyle "küçük şeylere dikkat etmiyorsunuz"))

 
ShestkoFF писал(а) >>

SHOOTER, parametre gruplarının tam olarak neyi optimize ettiğini kısaca açıklayabilir misiniz?

  • x
  • y
  • z
  • X
  • Y
  • Z
Muhtemelen kısmen anlıyorum, ancak resmin tamamını henüz kafamda hayal edemiyorum.

Danışmandaki ana itici ve yol gösterici güç, kötü şöhretli)) işlevidir. G12 (). Tercih edilen işlem yönleri göstergeler tarafından hesaplanır. Ancak bir yön yeterli değil, giriş noktalarına ihtiyacınız var. "Klasik"te, eğer bir zaman dilimi kalıpları veya göstergenin kendisi, harici parametreler varsa, iki veya daha fazla varsa ayarlanır, bunlar üzerinde de optimizasyon yapılır. Kendime yeni bir yöntem daha uygulamaya çalıştım NN

Burada Bugün nasılsın? işlev

double prcptrnAC(int q1,int q2,int q3,int q4,int pr,int at)

{çift qw = (q1-50)+((q2-50)*iA_C(pr)+(q3-50)*iA_C(2*pr)+(q4-50)*iA_C(3*pr))/iA_C (1);

if (MathAbs(qw)>at) return(qw);else return(0);}

bir tür algılayıcı denir ve almak için tasarlanmıştır .... bir şey. Burada ayrıntılı olarak birçok sorunun bazı cevapları var ve benim cevaplayacağımdan daha iyi . 'Karlı bir ticaret stratejisi nasıl bulunur' ve Sinir ağları için tarifler . Doğru, hepsini çapraz olarak okudum ve başkalarının çalışmalarını inceleyerek daha ilginç şeyler elde ettim, aşağıya bakın.

Bu Uzman Danışman, " MTS "Neural network + MACD" yazarına dayalı olarak oluşturulmuştur: Batohov , MTS "Combo" , "Combo_Right" ve AI yazar: Reshetov , PROphet yazarı: PraVedNiK , " RSI_Test " yazar: zerkmax , auto_optimization.mqh yazarı : Igor Malcev ve diğerleri.

 
ShestkoFF писал(а) >>

İşte başka bir tuhaflık, ya da belki sadece bir aksaklık

Şimdi F == 0 ise ve hiç açık pozisyon yoksa, önce ilk bloğa, sonra ikinci bloğa girebiliriz, bu da daha sonra yanlış sonuçlara yol açacaktır.

Yoksa bir şey anlamıyor muyum?

F ==0 sadece optimizasyonun ilk iki aşamasında, Delta_G12'ye ek olarak Trd_Up_X ve Trd_Dn_Y de ayrıldığında.

Altı aşamanın tamamı olması gerektiği gibi, optimizasyon seti dosyalarını sırayla kullanarak geçilirse, çalışma sırasında F her zaman 1'e eşit olmalıdır.

Ancak kodu incelerken başka bir hata buldum. Bu yüzden en son sürümlerin daha kötü çalıştığını izliyorum. Bu hata, 7 ve 9 sürümlerinde sızdı.

Kimse fark etti mi?

 
SHOOTER777 >> :

Burada Bugün nasılsın? işlev

double prcptrnAC(int q1,int q2,int q3,int q4,int pr,int at)

{çift qw = (q1-50)+((q2-50)*iA_C(pr)+(q3-50)*iA_C(2*pr)+(q4-50)*iA_C(3*pr))/iA_C (1);

if (MathAbs(qw)>at) return(qw);else return(0);}

bir tür algılayıcı denir ve almak için tasarlanmıştır .... bir şey.

Ve bu benim için hala gizemli bir işlev. Hayır, kesinlikle ne yaptığını ve nedenini anlıyorum. Ancak formülün kendisi biraz sıra dışı.
Nöronun çalışmasının sonucu, nöronların girdilerinin sayısı ile bu girdilerin ağırlıklarının çarpımı olmalıdır.
Yani, mantıksal olarak şöyle bir şey olmalı:

double qw = (q1-50) * iA_C(1) + (q2-50) * iA_C(pr) + (q3-50) * iA_C(2 * pr) + (q4-50) * iA_C(3 * pr)

Her ikisinin de maksimum (sonuç olarak ortaya çıkan denge) arayışında yer alan 4 değişkenli (veya 8?)

 
ShestkoFF писал(а) >>

Ve bu benim için hala gizemli bir işlev. Hayır, kesinlikle ne yaptığını ve nedenini anlıyorum. Ancak formülün kendisi biraz sıra dışı.
Nöronun çalışmasının sonucu, nöronların girdilerinin sayısı ile bu girdilerin ağırlıklarının çarpımı olmalıdır.
Yani, mantıksal olarak şöyle bir şey olmalı:

double qw = (q1-50) * iA_C(1) + (q2-50) * iA_C(pr) + (q3-50) * iA_C(2 * pr) + (q4-50) * iA_C(3 * pr)

Her ikisinin de maksimum (sonuç olarak ortaya çıkan denge) arayışında yer alan 4 değişkenli (veya 8?)

En azından benim anladığım kadarıyla işlevin basitleştirilmiş bir versiyonunu vermişsiniz.

burada tartışılıyor

'MTC Kombo'

"Dürüst olmak gerekirse, bu en saf haliyle bir sinir ağı değil. Birincisi, onsuz yeterli eşik değeri yok, NN'nin ayırma yeteneği çok daha az. İkincisi, IMHO, bir çıkış aktivasyon eşiği eklemeye değer. Bu ne anlama geliyor?Sinyali, yalnızca aktivasyon eşiği aşılırsa ticarete döndürün Örneğin:

çift res = ( w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4 // )/Kapat[0] - T) ; // Birleştirmek için Kapat[0] ile bölün
if
( MathAbs ( res ) > ActivityThreshold ) return ( res ) ; // ActivityThreshold -- etkinleştirme eşiği

 
gorby777 писал(а) >>

İlk sürümlerde, z1 algılayıcı formülünde Close(0) kullanılırken, 7. ve 9. sürümlerde Close(1) kullanıldı. Bundan mı bahsediyoruz?

Hayır, bundan dolayı olduğunu düşünmüyorum çünkü şekilli çubuklar üzerinde çalışmak için bir kural var.

Ancak, Flq=false bayrağının; alım ve satım için bir tane, bu ticaret alanlarının ayrılmasını ve buna bağlı olarak sonuçları güçlü bir şekilde etkiler.