당사 팬 페이지에 가입하십시오
- 게시자:
- Nikolay Kositsin
- 조회수:
- 82
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
실제 저자:
위톨드 워즈니악
이 지표의 목적은 금융 자산의 가격 변화 과정의 주기성을 측정하는 것입니다.
이 보조지표는 현재 시장 사이클의 값을 보조지표 버퍼에 저장하는데, 이는 결코 일정하지 않습니다. 이 지표는 주로 오실레이터에 사용되어 변화하는 시장 주기에 적응하고 적응형 오실레이터로 전환하도록 설계되었습니다.
이 지표는 2002년 11월 "주식 및 원자재의 기술적 분석" 잡지에 게재된 John Ehlers의 "피셔 변환 사용" 기사를 기반으로 합니다.

이 지표를 다른 지표(예: RVI 오실레이터)의 코드에서 사용하려면 글로벌 수준에서 지표 핸들 변수 CyclePeriod를 선언해야 합니다:
//---- 인디케이터 핸들을 위한 정수 변수 선언 int CP_Handle;
그 후, RVI 인디케이터의 초기화 블록에서 CyclePeriod 인디케이터 핸들을 가져와야 합니다:
//---- 사이클 주기 표시기 핸들 가져오기 CP_Handle=iCustom(NULL,0,"CyclePeriod",Alpha); if(CP_Handle==INVALID_HANDLE) { Print("사이클 주기 표시기 핸들을 가져오는 데 실패했습니다."); return(1); }
이제 사용 된 지표의 입력 매개 변수이며 기간 평균 계수를 나타내는 새 변수 Alpha가 있습니다. 이 변수는 개발 중인 인디케이터의 입력 변수로 만들어야 합니다.
//+----------------------------------------------+ //|| 표시기 입력 매개변수 | //+----------------------------------------------+ input double Alpha=0.07; // 지표 평균화 계수
그러나 이전 입력 변수 Length는 입력 매개 변수 수에서 제거하여 OnCalculate() 함수 내에서 로컬 변수로 만들어야 합니다.
평균화를 위해 인디케이터는 배열을 사용하며, 배열의 크기는 길이 매개변수의 값으로 고정됩니다:
//---- 가변 배열에 메모리 할당하기 ArrayResize(Count,Length); ArrayResize(Value1,Length); ArrayResize(Value2,Length);
이제 이 매개변수의 값이 변경되므로 이러한 배열의 크기를 이 변수의 예상 최대값보다 작지 않게 설정하는 것이 좋습니다.
지표의 차트를 분석 한 결과이 값이 100 이상으로 올라가지 않도록 할 수 있으므로 배열의 크기를 정확히이 크기로 만듭니다:
//---- 가변 배열에 메모리 할당하기 ArrayResize(Count,MAXPERIOD); ArrayResize(Value1,MAXPERIOD); ArrayResize(Value2,MAXPERIOD);
그리고 이미 OnCalculate() 블록에서 사용자 지정 지표 CyclePeriod의 버퍼에서 현재 막대의 기간 값을 가져와 이전 입력 매개 변수 Length의 값 대신 사용합니다.
//---- 주요 지표 계산 주기 for(bar=first; bar<rates_total && !IsStopped(); bar++) { //---- 새로 나타난 데이터를 배열에 복사합니다. if(CopyBuffer(CP_Handle,0,rates_total-1-bar,4,period)<=0) return(RESET); Length=int(MathFloor((4.0*period[0]+3.0*period[1]+2.0*period[2]+period[3])/20.0)); if(bar<Length) Length=bar; // 유효한 막대 수로 평균을 잘라내기
이 경우 마지막 네 개의 값은 CyclePeriod 표시기 버퍼에서 가져와 선형 가중 평균을 낸 다음 얻은 값을 평균 기간 길이로 사용합니다. 마지막으로 인디케이터 코드의 마지막 줄을 약간 변경해야 합니다:
if(bar<rates_total-1) Recount_ArrayZeroPos(Count,MAXPERIOD);
결과적으로 적응형 RVI 오실레이터가 생겼습니다:

MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/562
일일 범위 예측 전체
현재 차트의 모든 막대에 대해 다음 일일 캔들의 변동 범위를 예측합니다.
Logging V2 for both MQL4 and MQL5
CDebugLogger 클래스는 MQL4/5 환경에서 사용하도록 설계된 유연하고 포괄적인 로깅 유틸리티입니다. 개발자는 타임스탬프, 함수 서명, 파일 이름, 줄 번호 등을 로그 항목에 포함하는 옵션을 사용하여 다양한 중요도 수준(정보, 경고, 오류, 디버그)으로 메시지를 로깅할 수 있습니다. 이 클래스는 콘솔과 파일 모두에 대한 로깅을 지원하며, 로그를 일반 폴더와 CSV 형식으로 저장할 수 있습니다. 또한 특정 키워드를 기반으로 로그를 무음 처리하여 민감한 정보가 기록되지 않도록 하는 기능도 제공합니다. 이 클래스는 다양한 디버깅 및 모니터링 요구 사항을 충족하는 사용자 지정 가능한 기능을 통해 MQL4/5 애플리케이션에서 강력한 로깅 메커니즘을 구현하려는 개발자에게 이상적입니다.
적응형 CG 오실레이터
적응형 CG 오실레이터는 실제 금융 자산의 시시각각 변하는 시장 사이클에 적응하는 CG 오실레이터 오실레이터입니다.
PTB
지표 설명: PTB.mq5 개요: 메타트레이더 5용 PTB.mq5 인디케이터는 이러한 극단을 기준으로 피보나치 되돌림 수준과 함께 단기 및 장기 고가와 저가를 계산합니다. 특징: 단기 고가 및 저가: 사용자가 정의한 짧은 길이에서 즉각적인 지지와 저항을 식별합니다. 장기 고가 및 저가: 장기간에 걸쳐 광범위한 시장 동향을 분석합니다. 피보나치 수준: 잠재적 반전 지점에 대한 주요 되돌림 수준(23.6%, 38.2%, 50%, 61.8%, 78.6%)을 표시합니다. 입력 매개변수: shortLength: 단기 계산을 위한 캔들 수. longLength: 장기 계산을 위한 캔들 수. 시각적 표현: 고점/저점 및 피보나치 레벨을 구분하기 위해 각 선의 색상과 너비를 구분합니다. 사용법: 트레이더가 진입/청산 시점을 식별하고 과거 가격 수준을 기준으로 시장 추세를 모니터링하는 데 도움이 됩니다.