거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Telegram에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
당사 팬 페이지에 가입하십시오
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
- 조회수:
- 115
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
모든 프로그래머는 자신만의 로거를 가지고 있습니다. 저는 파이썬 로깅 모듈에서 영감을 받아 MQL5용 로거를 직접 작성했습니다.
이 클래스는 가장 간단합니다. 계층 구조, 로테이터 또는 포맷터가 없습니다. 모든 프로젝트에 간단하고 편리합니다.
설치
- CDKLogger.mqh를 MQL\Include\DKStdLib\Logger 폴더에 복사합니다.
- CDKLogger 클래스를 임포트합니다.
#include <DKStdLib\Logger\CDKLogger.mqh 사용법
CDKLogger logger; // 1단계: "MyLoggerName" 이름과 INFO 레벨로 로거 초기화하기 logger.Init("MyLoggerName", INFO); // 기본 로거 형식 "%이름%:[%레벨%] %메시지%"를 원하는 대로 변경할 수 있습니다. // 원하는 패턴 조합 사용 logger.Format = "%YYYY%-%MM%-%DD% %hh%:%mm%-%ss% - %name%:[%level%] %message%"; // 2단계. 대체어로만 메시지를 필터링하려는 경우, // FilterInList 채우기 // 2.1. FilterIntList에 하위 항목 추가하기 logger.FilterInList.Add("Including-Substring-#1"); logger.FilterInList.Add("Including-Substring-#2"); // 2.2. 문자열을 ";" 구분 기호로 분할하여 FilterInList에 모든 하위 문자열을 한 줄에 추가합니다. logger.FilterInFromStringWithSep("Including-Substring-#3;Including-Substring-#4", ";"); // 3단계. 하위 문자열이 포함된 메시지를 필터링하고 다른 메시지는 모두 남겨두려는 경우, // 필터 아웃 목록 채우기 // 3.1. FilterOutList에 하위 문자열 추가하기 logger.FilterOutList.Add("Excluding-Substring-#1"); logger.FilterOutList.Add("Excluding-Substring-#2"); // 3.2. 문자열을 ";" 구분 기호로 분할하여 FilterOutList에 모든 하위 문자열을 한 줄에 추가합니다. logger.FilterOutFromStringWithSep("Excluding-Substring-#3;Excluding-Substring-#4", ";"); // 사용 필터 In에 필터를 입력합니다. // 4단계: 로깅 logger.Debug("Debug: Including-Substring-#1", false); // 경고 없이 디버그 logger.Info("Info: Including-Substring-#1", true); // 알림이 있는 정보 대화 상자 logger.Warn("Warn: Including-Substring-#1"); logger.Error("Error: Including-Substring-#1: Excluding-Substring-#1"); // 필터 아웃 목록으로 인해 건너뛰었습니다. logger.Critical("Critical: Including-Substring-#1"); logger.Assert(true, "Log msg if true", INFO, // if ok "Log msg if false", ERROR, // 실패하면 true); // 알림도 표시 logger.Assert(true, "Same msg for true & false", INFO, // 로그 레벨 확인 시 ERROR, // 실패 시 로그 레벨 false); // 경고 없음
실행 결과 다음 메시지가 로그에 출력됩니다:
미해결 문제
저는 종종 이런 방식으로 클래스를 사용합니다:
logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f", __FUNCTION__, __LINE__, my_param));
하지만 여기에 문제가 있습니다. 로깅 수준에서 메시지를 출력할 필요가 없는 경우에도 StringFormat 함수는 매번 문자열을 구문 분석합니다.
디버그 메시지를 많이 출력해야 하는 경우 출력을 조건으로 래핑해야 합니다:
if(DEBUG >= logger.Level) logger.Debug(StringFormat("%s/%d: My message: PARAM1=%f", __FUNCTION__, __LINE__, my_param));
가장 좋은 방법은 StringFormat을 느리게 사용하는 것이지만, 안타깝게도 MQL5는 Debug, Info, Error 등의 함수에 동적인 수의 함수 매개 변수를 전달하는 기능을 지원하지 않습니다.
이 작업을 수행할 수 있는 방법에 대한 아이디어가 있으시면 알려주시면 감사하겠습니다.
MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/52741
와다 아타르 폭발
이 인디케이터는 시장이 언제 더 빠르게 움직이기 시작하는지 보여줍니다. 또한 트레이더에게 매수, 매도, 청산 시점을 알려줍니다.
평활화된 ADX
많은 평활화 알고리즘이 있으며, 이 표시기는 표준 ADX 표시기의 평활화입니다.
TimeServerDaylightSavings
견적 기록에서 서버 시간대 및 서머타임 모드(DST)를 경험적으로 감지하는 시간 관련 기능
StepMA_Line
이동 평균으로 설계된 StepMA 표시기입니다.
