EA N7S_AO_772012 - sayfa 29

 
boing9267 >> :

Ve sizi tam olarak ne şok ediyor, daha spesifik olabilir misiniz?

Her şey çok kafa karıştırıcı. Değişken isimleri bir kabustur. Değişkenlerin yarısı, hiç olmasa da, küresel olanlara taşındı. Kısacası, şimdi her şeyin nasıl çalıştığını anlamak için her şeyi yeniden yazıyorum.

 
:) Ben de kendim için yeniden yapmaya başladım, sanırım hafta sonu bitireceğim, seçenekleri karşılaştırmak mümkün olacak :)
 
boing9267 >> :
:) Ben de kendim için yeniden yapmaya başladım, sanırım hafta sonu bitireceğim, seçenekleri karşılaştırmak mümkün olacak :)

İşte görüyorsunuz! Demek anlamayan tek ben değilim :)

 
Bu arada, kodu öğrenmek için daha da iyi olduğunu düşünüyorum :). Bu özel teşekkür için nişancı
 
boing9267 >> :
Bu arada, kodu öğrenmek için daha da iyi olduğunu düşünüyorum :). Bu özel teşekkür için nişancı

özel mesajlara bakın

 
mpeugep писал(а) >>

İlginç bir gözlem! Ve mümkünse, DC'yi en azından ilk harfi olarak adlandırın)

ANCAK

 
rtr989 писал(а) >>

muhtemelen aptalca soru için üzgünüm... Söyleyin tüm bu optimizasyonlar bir şekilde birbiriyle ilişkili mi, yani aşama-2, aşama-1'den sonraki verilere dayanıyor mu? Sonuçta, ilk aşamadan sonra, _stage_2=y_l3.set'i yüklüyorum ve ilk optimizasyondan sonra olan giriş parametreleri, anladığım kadarıyla _stage_2=y_l3.set ? O zaman ilk optimizasyonda ne anlama geliyor? Yoksa yanlış mıyım ve yanlış bir şey mi yapıyorum? Şimdi şunu yapıyorum: _stage_1=x_l3.set yükle, optimize et, bence en iyi sonucu seç, "Giriş parametrelerini ayarla"ya sağ tıkla, test cihazında çalıştır, sonra _stage_2=y_l3.set yükle, optimizasyon için kutuyu işaretle .. ve böylece 6 optimizasyon, 6. optimizasyondan sonra ihtiyacım olan seti alıyorum, doğru mu yapıyorum?

Her şeyi doğru yapıyorsun. Ve hemen hemen her şeyin doğru olduğunu anlıyorsunuz. Bunun dışında _stage_2=y_l3.set türündeki optimizasyon seti dosyaları tarafımdan özel olarak yazılmış, sıralı olarak yüklendiğinde daha önce elde edilen değerleri hiçbir şekilde etkilemeyen dosyalardır. Bağımlılığa gelince, birinci ve ikinci aşamalar birbirine bağlı değildir (neredeyse :-)) üçüncüsü ikiye (birinci ve ikinci), dördüncüsü üçe, beşincisi de üçe bağlıdır ve neredeyse dördüncüye bağlı değildir. , ve altıncı hepsine bağlıdır.

 
ShestkoFF писал(а) >>

Bugün danışmanın ilkelerini anlamaya karar verdim ve şok oldum. Acı bir şekilde, her şey benim için kafa karıştırıcı.
SHOOTER777'den başka birinin EA'nın nasıl çalıştığını anlayıp anlamadığını merak ediyorum. Nasıl optimize edilmesi gerektiğini değil, çalışma prensibini kastediyorum.

Kusura bakmayın ama bu benim en basit Uzman Danışmanım olmasa da onlardan biri. Diğerlerinde, bir süre sonra bile çabucak çözemiyorum - unutuyorum, ancak başkalarına borunun genel olarak nasıl ve ne işe yaradığını açıklamak için (benim yapmadığıma dair ipuçları bile vardı). Bazı noktaları düzeltmeye veya geliştirmeye yardımcı olmak için yaymaya çalıştım ama .... Kodları ağırlıklı olarak fonksiyonlar üzerinden oluşturmaya çalışsam da daha net ve anlaşılması daha kolay. Ben de kodda kısa ve öz yorumlar yapmayı öğrenmek istiyorum...

 
ShestkoFF писал(а) >>

Her şey çok kafa karıştırıcı. Değişken isimleri bir kabus. Değişkenlerin yarısı, hiç olmasa da, küresel olanlara taşındı. Kısacası, şimdi her şeyin nasıl çalıştığını anlamak için her şeyi yeniden yazıyorum.

Değişkenlerle "söve" olabilir. Programlamayı ayrıntılı olarak incelemedim, bu nedenle hızlı, yapıcı eleştirilere açığım.

 
SHOOTER777 >> :

Değişkenlerle "söve" olabilir. Programlamayı ayrıntılı olarak incelemedim, bu nedenle hızlı, yapıcı eleştirilere açığım.

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

  • Her şeyi bir satıra yazmak gerekli değildir, çünkü kodu okumak imkansızdır. Örneğin, Expert Advisor başlatma kodu
 int init ( ) { MMH1 = Hour ( ) ; LFB   = iTime ( Symbol ( ) , 0 , 0 ) ; H1 ( ) ;
Delta_G12 = G12 ( ) ; if ( IsOptimization ( )    ) TrBlnc = false ; //if ( IsTesting() ) TrBlnc = false;
if ( VSR ( ) ! = 0 ) { Flg = false ; } else { Flg = true ; }
cmmnt ( ) ; }

bence yazmak daha iyi

 int init ( ) {
	expertInitHour = Hour ( ) ;
	SYMBOL = Symbol ( ) ;
	lastBarTime   = iTime ( NULL , 0 , 0 ) ; 
	H1 ( ) ;
	AO_Delta = indicatorDelta ( ) ; 
	if ( IsOptimization ( ) ) {
		TrBlnc = false ;
	}
	if ( VSR ( ) ! = 0 ) {
		Flg = false ;
	} else {
		Flg = true ;
	}
	cmmnt ( ) ;
}

Kod daha okunabilir hale geliyor, ancak bu değişiklikle bile H1, VSR, Flg'nin ne olduğu belirsizliğini koruyor.

  • Değişkenleri anlamlı bir şekilde adlandırın. Bir değişken veya fonksiyon için bir isim bulmak için zamandan birkaç dakika daha fazla zaman harcamak daha iyidir, ancak daha sonra neden gerekli olduğunu hatırlamak kolaydır. Örnek: G12 işlevi - neden? Göstergenin son değerleri arasındaki deltayı hesaplar (bunu gösterge seçeneği seçimi ile bile yapabilirsiniz). Eh, buna göstergeDelta denmesi gerekiyor, bence çok daha basit ve net.
  • Yerellerse, değişkenleri global yapmayın. Hangi fonksiyonda gördüğümü hatırlamıyorum.
  • Global değişkenleri statik yapmamak mantıklı değil. Durum böyle değilse lütfen açıklayın.
  • 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 onu double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));} ile değiştirmek daha iyi.


Şimdi bu uzmanı yeniden yazmaya ve kendim ve muhtemelen başkaları için daha anlaşılır hale getirmeye çalışacağım.

Fikrini paylaştığın için çok teşekkür ederim. Çalışmanızı paylaşmanız ve sonuçları her hafta yayınlamanız çok güzel.
Eleştiri için özür dilerim :)

Neden: