EA N7S_AO_772012 - 페이지 29

 
boing9267 >> :

그리고 정확히 무엇에 충격을 받았는지, 더 구체적으로 말씀해 주시겠습니까?

너무 혼란스럽습니다. 변수 이름은 악몽입니다. 변수의 절반이 전역 변수로 이동되었지만 전혀 그렇지는 않습니다. 간단히 말해서, 지금은 모든 것이 어떻게 작동하는지 이해하기 위해 모든 것을 다시 작성하고 있습니다.

 
:) 저도 직접 다시 하기 시작했는데 주말에 완성할 것 같아요, 옵션 비교도 가능 할 것 같아요 :)
 
boing9267 >> :
:) 저도 직접 다시 하기 시작했는데 주말에 완성할 것 같아요, 옵션 비교도 가능 할 것 같아요 :)

여기 보여요! 저만 이해가 안되는게 아니네요 :)

 
그건 그렇고, 나는 그것이 코드를 배우는 것이 훨씬 더 낫다고 생각합니다. :). 이 특별한 감사를 위해 슈터
 
boing9267 >> :
그건 그렇고, 나는 그것이 코드를 배우는 것이 훨씬 더 낫다고 생각합니다. :). 이 특별한 감사를 위해 슈터

비공개 메시지 보기

 
mpeugep писал(а) >>

흥미로운 관찰입니다! 그리고 가능하면 DC의 이름을 최소한 첫 글자로 지정하세요)

하지만

 
rtr989 писал(а) >>

어리석은 질문에 죄송합니다... 말해 보세요. 이 모든 최적화가 서로 어떻게든 관련되어 있습니까? 제 말은 2단계가 1단계 이후의 데이터를 기반으로 한다는 뜻인가요? 결국, 첫 번째 단계 후에 _stage_2=y_l3.set 을 로드하고 첫 번째 최적화 이후에 있었던 입력 매개변수는 내가 이해한 대로 _stage_2=y_l3.set 에 작성된 매개변수로 대체됩니다. 그렇다면 첫 번째 최적화에서는 무엇을 의미합니까? 아니면 내가 잘못하고 잘못된 일을하고 있습니까? 이제 _stage_1=x_l3.set을 로드하고 최적화하고 내 생각에 가장 좋은 결과를 선택하고 "입력 매개변수 설정"을 마우스 오른쪽 버튼으로 클릭하고 테스터에서 실행한 다음 _stage_2=y_l3.set을 로드하고 최적화 확인란을 선택합니다. .. 그래서 6 최적화, 6 최적화 후에 필요한 세트를 얻었습니다. 제대로 하고 있습니까?

당신은 모든 것을 올바르게하고 있습니다. 그리고 거의 모든 것이 정확하다는 것을 이해합니다. _stage_2=y_l3.set 유형의 최적화 세트 파일이 내가 특별히 작성한 파일이라는 점을 제외하고는 순차적으로 로드할 때 이전에 얻은 값에 영향을 미치지 않습니다. 의존성에 관해서는, 첫 번째 단계와 두 번째 단계는 서로 의존하지 않습니다(거의 :-)) 세 번째 단계는 두 가지(첫 번째와 두 번째 단계)에 의존하고, 네 번째 단계는 세 번째 단계에, 다섯 번째 단계도 세 번째 단계에 의존하고 네 번째 단계에 거의 의존하지 않습니다. , 그리고 여섯 번째는 모두에 달려 있습니다.

 
ShestkoFF писал(а) >>

오늘 나는 고문의 원리를 이해하기로 결정했고 나는 충격을 받았습니다. 고통스럽게도 모든 것이 혼란스럽습니다.
SHOOTER777 외에 다른 사람이 EA가 어떻게 작동하는지 이해하고 있는지 궁금합니다. 최적화 방법이 아니라 작동 원리를 의미합니다.

죄송합니다. 이것은 가장 단순한 전문가 고문은 아닐지라도 그 중 하나입니다. 다른 사람들은 잠시 후에도 빨리 알아낼 수 없습니다. 잊어 버렸지만 파이프가 일반적으로 어떻게 그리고 무엇을 작동하는지 설명하기 위해 (내 일이 아니라는 힌트도있었습니다). 몇 가지 수정이나 개선에 도움이 되고자 퍼뜨려 보았지만.... 주로 함수를 통해 코드를 작성해 보지만, 더 명확하고 이해하기 쉽습니다. 또한 코드에서 간결한 주석을 제공하는 방법을 배우고 싶습니다 ...

 
ShestkoFF писал(а) >>

너무 혼란스럽습니다. 변수 이름은 악몽입니다. 변수의 절반이 전역 변수로 이동되었지만 전혀 그렇지는 않습니다. 간단히 말해서, 지금은 모든 것이 어떻게 작동하는지 이해하기 위해 모든 것을 다시 작성하고 있습니다.

변수가 있는 "잼"이 있을 수 있습니다. 프로그래밍을 자세히 공부한 것이 아니므로 신속하고 건설적인 비판을 환영합니다.

 
SHOOTER777 >> :

변수가 있는 "잼"이 있을 수 있습니다. 프로그래밍을 자세히 공부한 것이 아니므로 신속하고 건설적인 비판을 환영합니다.

나는 효과가 있는 것을 비판하는 것을 좋아하지 않는다. 코드에 대한 몇 가지 비판을 드리겠습니다.

  • 코드를 읽는 것은 불가능하기 때문에 모든 것을 한 줄로 작성할 필요는 없습니다. 예를 들어 Expert Advisor 초기화 코드
 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 ( ) ; }

쓰는게 나을거같아요

 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 ( ) ;
}

코드가 더 읽기 쉬워지지만 이 교체에도 불구하고 H1, VSR, Flg가 무엇인지 명확하지 않습니다.

  • 변수에 의미 있는 이름을 지정합니다. 변수나 함수의 이름을 생각하는 시간보다 몇 분 더 보내는 것이 낫지만, 그러면 왜 필요한지 기억하기 쉽습니다. 예: 기능 G12 - 그 이유는 무엇입니까? 표시기의 마지막 값 사이의 델타를 계산합니다(표시기 옵션을 선택하더라도 이 작업을 수행할 수 있음). 글쎄요, 그것이 그것이 indicatorDelta라고 불리는 방법입니다. 제 생각에는 훨씬 간단하고 명확합니다.
  • 변수가 로컬이면 전역 변수로 만들지 마십시오. 어떤 기능에서 보았는지 기억이 나지 않습니다.
  • 전역 변수를 정적으로 만들지 않는 것은 의미가 없습니다. 그렇지 않은 경우 설명하십시오.
  • 언어에 정의된 표준 상수를 사용합니다. 예를 들어, 시간 간격을 지정합니다. 이중 iA_C(int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));}로 대체하는 것이 낫다고 생각합니다.


이제 나는 이 전문가를 다시 작성하여 나 자신과 다른 사람들이 더 쉽게 이해할 수 있도록 노력할 것입니다.

아이디어를 공유해 주셔서 대단히 감사합니다. 매주 작업을 공유하고 결과를 게시하는 것이 좋습니다.
비판 죄송합니다 :)

사유: