기고글 토론 "Expert Advisor에 지표를 포함시키기 위한 기성 템플릿(1부): 오실레이터"

 

새로운 기고글 Expert Advisor에 지표를 포함시키기 위한 기성 템플릿(1부): 오실레이터 가 게재되었습니다:

이 기사에서는 오실레이터 카테고리에 있는 표준 지표를 살펴봅니다. 우리는 매개변수 선언 및 설정, 지표 초기화 및 초기화 해제, 지표 버퍼에서 데이터 및 신호를 수신하는 등의 EA에서 바로 사용할 수 있는 템플릿을 만들 것입니다.

EA에 지표를 포함하고 EA에서 지표 버퍼의 데이터를 사용하는 것은 매우 간단한 작업입니다. 그러나 참조 내용들을 계속 탐색해야 합니다. 우리는 지표 생성 함수에 전달된 모든 매개 변수를 기억해야 하고 그 중 일부를 EA 입력으로 공식화하고 유효성 검사 등을 도입해야 하며 데이터를 얻기 위해서는 원하는 바에서 필요한 데이터를 반환하는 함수를 작성해야 합니다. 이 모든 작업을 하기 위해서는 우리는 도움말에 액세스하고, EA에 필요한 변수를 입력하고, 신호를 확인하기 위해 데이터를 수신하고 모니터링하는 함수를 작성하는 등의 작업을 해야 합니다.

이 문서의 목적은 EA에 지표를 포함하기 위한 용도의 템플릿을 만드는 것입니다. 이제 오실레이터 카테고리의 지표와 입력 변수, 지표 핸들을 만들고 필요한 데이터를 가져오는 방법을 살펴보겠습니다.


작성자: Artyom Trishkin

 
왜 윈터에서 인트로로 바뀌었고, 애초에 왜 그런 디자인을 원했을까요?
//--- 필요한 경우 계산 기간을 설정하고 조정합니다.
   period=int(InpPeriod<1 ? 14 : InpPeriod);

입력은 상수라는 것을 이해합니다. 저는 그 작업을 상상할 수 없습니다.

글쎄요, 마이너스를 넣은 바보에 대한 방어 수단으로 만 그 사람이 실수를했다는 경고를받는 것이 더 나을 것입니다.

 
Valeriy Yastremskiy #:
왜 uint에서 int로, 그리고 왜 그런 구조로 되어 있나요?

입력은 상수라는 것을 이해합니다. 저는 그 작업을 상상할 수 없습니다.

글쎄요, 마이너스를 넣은 바보에 대한 방어 수단으로 만 그 사람이 실수를했다는 경고를받는 것이 더 나을 것입니다.

InpPeriod는 입력 변수 입력입니다. 거기에 마이너스를 넣을 수 있는 방법은 없습니다. 거기에 0을 넣을 수 있습니다. 이러한 검사 (1 미만의 경우)는 숫자를 0과 직접 비교하지 않는 습관입니다. 갑자기 다른 유사한 구조에 이중 유형의 입력 변수가 있으면 두 개의 이중 숫자를 직접 비교하지 않을 수 있습니다. 예, 이것은 "완벽한"것입니다. 우선 나 자신부터 코드를 다른 곳으로 포팅할 때 실수를 줄이려고 합니다.

 
Artyom Trishkin #:

InpPeriod - 입력 변수 입력. 여기에 마이너스를 넣을 수 없습니다. 거기에 0을 넣을 수 있습니다. 이러한 검사 (1 미만의 경우)는 숫자를 0과 직접 비교하지 않는 습관입니다. 갑자기 다른 유사한 구조에 이중 유형의 입력 변수가 있으면 두 개의 이중 숫자를 직접 비교하지 않도록 할 수 있습니다. 예, 이것은 "완벽한"것입니다. 우선 나 자신부터 코드를 다른 곳으로 포팅할 때 실수를 줄이려고 합니다.

음, 네, uint))))))입니다. 마이너스를 넣을 수 없습니다))))

 
Valeriy Yastremskiy #:

그래, 겨울))))))) 마이너스를 붙일 수 없어))))

그리고 0은요?

 
Alexey Viktorov #:

0은요?

0도 가능합니다. 그러나 이 경우 표시기는 기본값으로 설정됩니다.

그러나 질문의 요점은 다른 것입니다. 이미 0에 대해 알고 있습니다.

그러나 나는 추측하지 않을 것입니다.

 
Artyom Trishkin #:

0도 가능합니다. 그러나 이 경우 표시기는 기본값으로 설정됩니다.

그러나 질문의 요점은 다른 것이었습니다. 이미 0에 대해 알고 있습니다.

그러나 나는 추측하지 않을 것입니다.

맞습니다. 추측할 필요가 없습니다. 그냥 발레리에게 물어본 질문이었어요. 마이너스를 넣으면 안 되고 0을 넣으면 되나요?

 
Alexey Viktorov #:

0은요?

그래서 0은 현재입니다)))) 완벽한 디자인으로 괜찮습니다))))))

그리고 키보드에 마스크를 씌워 숫자 만 누르고 다른 키는 누르지 않도록 할 수 있습니다)))))) 90 년대 군인을 위해)))))) 그리고 다른 키를 누르면 큰 글씨로 경고가 나타났습니다)))

 
Artyom Trishkin #:

인사말!

텍스트를 셀 중앙에 정렬하려면 어떻게 해야 하나요?


 
Vitaly Muzichenko #:

안녕하세요!

텍스트를 셀 중앙에 정렬하려면 어떻게 해야 하나요?


안녕하세요. 앵커 포인트가 다른 셀에 텍스트 출력을 해본 적이 없는 것 같습니다.

하지만 column_width가 셀의 너비, column_height가 셀의 높이,
, text_w 및 text_h가 셀에 출력할 텍스트의 해당 치수(
)라고 가정하면 이 공식을 사용하여 텍스트의 왼쪽 상단 모서리의 좌표를 계산해야 합니다:

앵커 text_x text_y
LEFT_UPPER 0 0
LEFT 0 (column_height - text_h)/2
LEFT_LOWER 0 column_height - text_h
LOWER (column_width - text_w)/2 column_height - text_h
RIGHT_LOWER column_width - text_w column_height - text_h
RIGHT column_width - text_w (column_height - text_h)/2
RIGHT_UPPER column_width - text_w 0
UPPER (column_width - text_w)/2 0
CENTER (column_width - text_w)/2 (column_height - text_h)/2

여기서 텍스트 앵커링은 기본적으로 왼쪽 상단의 초기 텍스트 좌표이며 앵커 포인트(표 헤더의 앵커)에 따라 텍스트를 표시하려면 위의 공식에 따라 텍스트 좌표를 계산해야 합니다.

 
Artyom Trishkin #:

안녕하세요. 앵커 포인트가 다른 셀에 텍스트 출력을 해본 적이 없는 것 같습니다.

하지만 column_width는 셀의 너비, column_height는 높이,
및 text_w 및 text_h는 셀에 출력 할 텍스트의 해당 크기 (
)라고 가정하면 다음 공식을 사용하여 텍스트의 왼쪽 상단 모서리의 좌표를 계산해야합니다:

앵커 text_x text_y
LEFT_UPPER 0 0
LEFT 0 (column_height - text_h)/2
LEFT_LOWER 0 column_height - text_h
LOWER (column_width - text_w)/2 column_height - text_h
RIGHT_LOWER column_width - text_w column_height - text_h
RIGHT column_width - text_w (column_height - text_h)/2
RIGHT_UPPER column_width - text_w 0
UPPER (column_width - text_w)/2 0
CENTER (column_width - text_w)/2 (column_height - text_h)/2

여기서 텍스트 앵커링은 기본적으로 왼쪽 상단 모서리에 있는 텍스트의 초기 좌표이며 앵커 포인트(표 헤더의 앵커)에 따라 텍스트를 표시하려면 주어진 공식에 따라 텍스트 좌표를 계산해야 합니다.

대략 그렇게 생각했지만 더 간단한 해결책이 있다고 생각했습니다.

고마워요!