지그재그 표시기 문제 - 페이지 4

 
aed71 :

확인 감사합니다. FMIC.

사실 내 문제는 포럼에서 공유한 전문가에 관한 것이었습니다. 당신의 스크립트는 그 덕분에 잘 작동하지만 기본적으로 거의 실시간 모드에서도 작동할 수 있는 전문가의 형태로 필요합니다.

이 스레드에 대한 원래 쿼리는 다음과 같습니다.

  1. "iCustom" 기능을 사용하여 ZigZag 표시기에서 데이터에 올바르게 액세스하는 방법은 무엇입니까?
  2. 통계 분석을 위해 ZigZag High 및 Low 포인트를 수집하고 처리하는 방법은 무엇입니까?

내 스크립트는 예제 코드와 두 쿼리에 대한 지식을 제공하므로 이제 해당 지식을 개발하려는 EA와 같은 다른 용도에 적용할 수 있습니다. iCustom() 사용 및 ZigZag High 및 Low 포인트 테스트에 내 코드를 사용하고 EA 코드에 적용하기만 하면 됩니다.

그러나 다른 EA에서 이미 작동하고 있는 전략을 최적화하기 위해 특정 EA에서 ZigZag 데이터를 사용하는 방법에 대한 나중에 언급한 다른 쿼리는 여기에서 충분히 자세히 제시되거나 설명되지 않았습니다. 이 스레드. 따라서 본질적으로 나는 당신이 필요로 하는 것이 무엇인지 모르기 때문에 조언을 제공하거나 당신을 도울 수 없습니다.

코드베이스에서 내 ZigZagZug 표시기와 함께 제공되는 기사를 읽으면 전략 및 EA에서 ZigZag를 사용하는 것이 지속적으로 다시 그리기 때문에 쉽지 않고 작동 방식과 사용 가능한 방법에 대한 주의 깊은 이해가 필요하다는 것을 알 수 있습니다. 다른 전략과 EA.

즉, ZigZag 데이터와 EA 전략 간의 결합은 복잡하고 잘 정의되어야 합니다. 따라서 현재 전략이나 최적화 방법에 대한 정보가 없으면 더 많은 도움이나 조언을 드릴 수 없습니다.

당신이 공개적으로 더 많이 나오는 것을 원하지 않을 수도 있다는 점을 이해할 수 있기 때문에 나는 당신에게 무료로 비공개로 할 수 있는 기회를 제공했습니다. 저는 소프트웨어 개발자이며 일반적으로 이러한 서비스에 대해 비용을 청구합니다.

내가 이미 당신에게 제안한 것 외에, 나는 당신이 해결하고자 하는 문제의 본질을 이해하지 않고는 더 이상 당신에게 조언을 제공할 수 없습니다.

 

안녕,

코드를 수정하는 데 성공했습니다. 루프의 논리에 실수가 있었습니다. 이제 테스트한 한 잘 작동합니다.

관심있는 분들은 이용하시면 됩니다. 전문가용으로 설계되었으며 메타 인용 표준 ZigZag 표시기를 사용합니다.

기본적으로 지그재그 표시기에서 실제 최고점과 최저점을 찾습니다. 또한 기간 및 진폭 분석을 위해 과거 데이터에서 저점과 고점을 찾는 데 사용할 수 있습니다.

실시간이 아니다! 마지막 고가와 저가로 돌아가기 때문에 마지막 트랜드 길이에 따라 되돌아가서 값을 수정할 수 있습니다. 전략 테스터 에서 빠른 테스트 전에 사용하지 마십시오.

FMIC, 귀하의 노력과 도움에 감사드립니다.

파일:
 

안녕하세요 aed71님.

코드에 여전히 몇 가지 논리 버그가 있습니다.

  1. 소위 "틱 루프"는 실제로 "새 막대 조건"입니다. 왜냐하면 새 막대를 감지하기 위해 시간 변화에 대해 "시간[0]"을 테스트하기 때문입니다. 코드를 잘못 표시하지 않도록 주석을 변경하는 것이 좋습니다.
  2. 조건을 테스트하기 전에 배열에 값을 할당한 다음 다시 지우기 위해 필요 없이 특정 변수를 여러 번 테스트합니다. 그것은 당신의 코드를 느리게 할 뿐 아니라 논리를 따르기 어렵게 만듭니다.
  3. 다시 칠하는 지점을 찾는 방법은 올바르지 않으며 전혀 강력하지 않습니다. 다시 칠할 지점을 제대로 찾으려면 ZigZag가 어떻게 작동하는지 실제로 연구해야 합니다. 논리를 이해하려면 코드 또는 ZigZagZug(둘 중 더 쉽게 따라할 수 있음)의 코드를 읽으십시오.
  4. 필요 없이 배열에 null 값을 저장하고 있습니다. 사용 가능한 지그재그 포인트가 없는 경우에도 카운터를 계속 증가시키고 어레이에 추가하는 이유는 무엇입니까? 필요 없이 귀중한 리소스(RAM 및 CPU 주기)만 낭비하고 있습니다. 코드 실행 속도가 느려집니다. 특정 크기 요구 사항을 미리 보장할 수 없기 때문에 정적 배열 대신 동적으로 확장된 배열을 사용하십시오.
  5. 파형 주기 또는 주파수와 같은 데이터를 나중에 분석하려면 시간 인덱스 및/또는 막대 이동 인덱스도 추적해야 합니다.

친애하는,
FMIC

 
FMIC :

안녕하세요 aed71님.

코드에 여전히 몇 가지 논리 버그가 있습니다.

  1. 소위 "틱 루프"는 실제로 "새 막대 조건"입니다. 왜냐하면 새 막대를 감지하기 위해 시간 변화에 대해 "시간[0]"을 테스트하기 때문입니다. 코드를 잘못 표시하지 않도록 주석을 변경하는 것이 좋습니다.
  2. 조건을 테스트하기 전에 배열에 값을 할당한 다음 다시 지우기 위해 필요 없이 특정 변수를 여러 번 테스트합니다. 그것은 당신의 코드를 느리게 할 뿐 아니라 논리를 따르기 어렵게 만듭니다.
  3. 다시 칠하는 지점을 찾는 방법은 올바르지 않으며 전혀 강력하지 않습니다. 다시 칠할 지점을 제대로 찾으려면 ZigZag가 어떻게 작동하는지 실제로 연구해야 합니다. 논리를 이해하려면 코드 또는 ZigZagZug(둘 중 더 쉽게 따라할 수 있음)의 코드를 읽으십시오.
  4. 필요 없이 배열에 null 값을 저장하고 있습니다. 사용 가능한 지그재그 포인트가 없는 경우에도 카운터를 계속 증가시키고 어레이에 추가하는 이유는 무엇입니까? 필요 없이 귀중한 리소스(RAM 및 CPU 주기)만 낭비하고 있습니다. 코드 실행 속도가 느려집니다. 특정 크기 요구 사항을 미리 보장할 수 없기 때문에 정적 배열 대신 동적으로 확장된 배열을 사용하십시오.
  5. 파형 주기 또는 주파수와 같은 데이터를 나중에 분석하려면 시간 인덱스 및/또는 막대 이동 인덱스도 추적해야 합니다.

친애하는,
FMIC

귀하의 의견에 다시 한 번 감사드립니다.

나는 좋은 프로그래머가 아니므로 코드 자체가 완벽하지 않을 수 있습니다 :-) 그러나 내 논리를 설명하려고 노력하겠습니다.

1-) 주석 부분은 "모든 새 막대"로 변경될 수 있습니다.

2-) 4-) 5-) 큰 배열을 사용하는 논리는 나중에 새로운 프로세스를 사용하여 기간, 진폭 등을 찾기 위해 고점 또는 고점과 저점 사이의 0 값 막대를 계산한다는 것입니다. 사용하기 전에 배열을 초기화하고 시간 인덱스 등을 처리할 필요가 없습니다. 현재 내 프로젝트 에 큰 문제가 되지 않는 버퍼가 더 많습니다.

3-) 지그재그와 지그재그를 여러 번 추적했습니다. 지그재그에서는 끝에 진짜 높고 낮음이 있지만 그 값을 배열에 넣으면 낮음과 높음 사이에 있음을 알 수 있습니다. 모드0과 모드1/모드2 조합을 사용하여 날씨를 피할 수 없습니다. 항상 저점과 고점 사이에 있습니다. 지그재그로 그 지점을 명확하게 볼 수 있습니다. 이 외에도 나는 mode0이 0이지만 mode1 또는 mode2가 잘못된 점인 0보다 큰 경우가 있음을 알 수 있습니다. 그래서 이러한 점을 피하기 위해 추가 코드를 추가하기로 결정했습니다.

내가 언급했듯이 이것은 지그재그 포인트를 찾는 데 가장 좋은 코드는 아닐 수 있지만 코드 자체는 내 테스트에서 올바르게 작동합니다. 나는 여러 번 테스트했습니다. 사용하시려는 분들은 미리 테스트 해보길 항상 추천합니다.

테스트해 보셨나요? 정확한 점수를 주지 않습니까? 강력하지 않거나 올바르지 않다고 말하면 테스트가 실패한 것으로 가정합니다. 맞습니까?

감사해요.

 
aed71 :

귀하의 의견에 다시 한 번 감사드립니다.

나는 좋은 프로그래머가 아니므로 코드 자체가 완벽하지 않을 수 있습니다 :-) 그러나 내 논리를 설명하려고 노력하겠습니다.

1-) 주석 부분은 "모든 새 막대"로 변경될 수 있습니다.

2-) 4-) 5-) 큰 배열을 사용하는 논리는 나중에 새로운 프로세스를 사용하여 기간, 진폭 등을 찾기 위해 고점 또는 고점과 저점 사이의 0 값 막대를 계산한다는 것입니다. 사용하기 전에 배열을 초기화하고 시간 인덱스 등을 처리할 필요가 없습니다. 현재 내 프로젝트에 큰 문제가 되지 않는 버퍼가 더 많습니다.

3-) 지그재그와 지그재그를 여러 번 추적했습니다. 지그재그에서는 끝에 진짜 높고 낮음이 있지만 그 값을 배열에 넣으면 낮음과 높음 사이에 있음을 알 수 있습니다. 모드0과 모드1/모드2 조합을 사용하여 날씨를 피할 수 없습니다. 항상 저점과 고점 사이에 있습니다. 지그재그로 그 지점을 명확하게 볼 수 있습니다. 이 외에도 나는 mode0이 0이지만 mode1 또는 mode2가 잘못된 점인 0보다 큰 경우가 있음을 알 수 있습니다. 그래서 이러한 점을 피하기 위해 추가 코드를 추가하기로 결정했습니다.

내가 언급했듯이 이것은 지그재그 포인트를 찾는 데 가장 좋은 코드는 아닐 수 있지만 코드 자체는 내 테스트에서 올바르게 작동합니다. 나는 여러 번 테스트했습니다. 사용하시려는 분들은 미리 테스트 해보길 항상 추천합니다.

테스트해 보셨나요? 정확한 점수를 주지 않습니까? 강력하지 않거나 올바르지 않다고 말하면 테스트가 실패한 것으로 가정합니다. 맞습니까?

감사해요.


요점을 놓치고 있습니다! 내가 제공한 코드는 높음/낮음 지그재그 포인트를 올바르게 식별하는 방법을 보여줍니다. 그러나 당신은 그것을 무시하고 코드를 이해하기 어렵게 만들고 더 느리게 만들고 필요한 것보다 더 많은 리소스를 사용하도록 만드는 자신의 방식을 선택합니다. 왜요?
 
Fernando Carreiro # :

iCustom 예제에서 ZigZag를 잘못 사용하고 있습니다. MetQuotes의 표준 ZigZag에는 3 개(2개가 아님) 버퍼가 있습니다(iCustom의 모드 또는 라인 인덱스).

  1. 모드 = 0: 높은 지그재그 포인트와 낮은 지그재그 포인트를 모두 유지합니다.
  2. 모드 = 1: 높은 포인트지만 반드시 지그재그 포인트만은 아닙니다(다시 칠하는 포인트도 보유하므로).
  3. 모드 = 2: 낮은 지점이지만 반드시 지그재그 지점만은 아닙니다(다시 칠하는 지점도 보유하므로).

High Point인지 Low Point인지 결정하기 위해 첫 번째 버퍼(Mode 0)를 다른 2개의 버퍼와 비교해야 합니다(예: 버퍼 1과 버퍼 3의 값이 같으면 Low ZigZag Buffer 1과 Buffer 2가 모두 같으면 High point).

또한 ZigZag가 작동하는 방식과 다시 그리는 방식을 더 잘 이해하기 위해 ZigZagZug 표시기 를 사용하는 것이 좋습니다. 그러나 더 빠르기 때문에 코드에서 MetaQuotes ZigZag를 사용하십시오. 내 버전은 추가 기능으로 인해 더 많은 처리를 수행하므로 더 느립니다.

추신! 버퍼 1(모드 = 0)의 값이 0.0이지만 다른 버퍼의 값이 0이 아닌 경우 지그재그 포인트가 아닌 오래된 다시 그리기 포인트입니다.

코드에서 모드 0 버퍼를 낮음으로, 모드 1 버퍼를 높음으로 사용하고 있습니다. 그것은 완전히 잘못된 것입니다.

이것이 얼마나 많은 도움이 되었는지 믿을 수 없을 것입니다.