당사 팬 페이지에 가입하십시오
- 조회수:
- 18
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
픽셀 그리기를 위한 CBitPic 그래픽 제어 클래스가 포함된 IncGUI_BitPic.mqh 플러그인 파일입니다(그림 1).

그림 1. CBitPic 클래스를 사용한 그리기 예시.
다양한 크기의 점 - DrawDot(), 좌표별 선 - DrawLine(), 각도별 선 - DrawLineByAngle(), 화살표 - DrawArrow(), 직사각형 - DrawRectangle(), 삼각형 - DrawTriangle(), 원, 타원, 원, 섹터 - DrawCircle() 등 다양한 도형을 그릴 수 있습니다. 타원은 지정된 각도만큼 회전할 수 있습니다(타원 고리, 타원 섹터도 마찬가지입니다). 도형은 채우기 또는 윤곽선으로만 그릴 수 있습니다. 텍스트 인쇄가 가능합니다 - TypeText()(여러 글꼴 및 크기 옵션). 생성된 이미지는 bmp 파일에 저장할 수 있습니다 - SavePicture(), 파일에서 준비된 bmp 이미지를 로드할 수 있습니다 - LoadPicture()(파일은 압축되지 않은 24비트 또는 32비트여야 합니다).
컨트롤을 사용하려면 IncGUI_BitPic.mqh 파일을 연결해야 합니다:
#include <IncGUI_BitPic.mqh>그런 다음, 예를 들어 p라는 이름의 클래스를 선언합니다:
CBitPic p;
이 클래스는 문서에 설명된 원칙을 사용하여 만들어집니다:
따라서 적용 원리는 기사에서 설명한 컨트롤 사용 원리와 유사합니다. 먼저 Init () 초기화 메서드가 호출되고 Show () 메서드가 가시성을 활성화하는 데 사용되며 Hide () 메서드는 작업 완료 후 숨기고 삭제하는 데 사용됩니다.
cIntBMP 클래스와는 달리 그림 그리기는 다소 다르게 수행되며, cIntBMP에서는 그림 그리기 함수에서 그림 색상이 지정되었지만 여기서는 다음과 같은 순서로 그림 그리기가 수행됩니다: 배경색 지정 - SetBGColor(), 지우기 수행 - Clear(), 그리기 전에 그리기 두께 설정 - SetDrawWidth(), 그리기 색상 SetDrawColor(), 채우기 - SetFillColor(), 채우기 필요 여부 - SetFilled() 또는 그리기 함수가 호출된 후 윤곽선으로만 그리기가 수행됩니다. 물론 필요에 따라 그리기, 채우기 등의 색상을 변경할 수 있습니다. 그리기 후에는 다시 그리기() 메서드를 호출해야 합니다.
다음 표는 클래스의 모든 메서드를 보여줍니다:
| 메서드 | 목적 및 매개변수 |
|---|---|
| void Clear() | 지웁니다. |
| void DrawArrow( int aX1, int aY1, int aX2, int aY2, bool aBoth=false ) | 화살표를 그립니다. aX1, aY1 - 시작 좌표, aX2, aY2 - 끝 좌표, aBoth - 양쪽 끝의 화살표. |
| void DrawCircle( int aX, int aY, int aR, double aR2K=0, double aFromAngle=0, double aToAngle=0, double aRatio=1, double aRotateAngle=0 ) | 원, 원, 타원, 섹터를 그립니다. aX, aY - 중심 좌표, aR2K - 내부 원의 반지름(0에서 1까지), aFromAngle, aToAngle - 섹터의 초기 및 최종 각도, aRatio - 압축 계수(양수, 1 미만 - 수직 압축, 1 이상 - 수직 확장), aRotateAngle - 회전 각도입니다. |
| void DrawDot( int aX, int aY ) | 점을 그립니다. aX, aY - 좌표. |
| void DrawLine( int aX1, int aY1, int aX2, int aY2 ) | 선 그리기. aX1, aY1 - 시작 좌표, aX2, aY2 - 끝 좌표. |
| void DrawLineByAngle( int aX1, int aY1 , double aAngle, int aLength ) | 각도로 선을 그립니다. aX1, aY1 - 시작의 좌표, aAngle - 각도, aLength - 길이. |
| void DrawRectangle( int aX1, int aY1, int aX2, int aY2 ) | aX1, aY1 - 좌측 상단 모서리 좌표, aX2, aY2 - 우측 하단 모서리 좌표로 직사각형을 그립니다. |
| void DrawTriangle( int aX1, int aY1, int aX2, int aY2, int aX3, int aY3 ) | aX1, aY1, aX2, aY2, aX3, aY3 - 꼭지점의 좌표입니다. |
| int Event( const int id, const long & lparam, const double & dparam, const 문자열 & sparam ) | 이벤트 핸들러. OnChartEvent() 함수에서 호출됩니다. |
| int EventX() | 그래픽 객체를 마지막으로 클릭한 X 좌표입니다. |
| int EventY() | 그래픽 객체를 마지막으로 클릭한 Y 좌표입니다. |
| void Fill( int aX, int aY ) | 한 색의 영역을 채우기 색으로 채웁니다. aX, aY - 좌표입니다. |
| void GetData( uint & aData[]) ) | 이미지 데이터의 배열을 가져옵니다. aData - 데이터가 반환되는 배열입니다. |
| 색 GetPixel( int aX, int aY ) | 지정된 좌표로 픽셀의 색을 가져옵니다. aX, aY - 좌표. |
| int Height() | 그래픽 객체의 높이를 취득합니다. |
| void Hide() | 차트에서 그래픽 객체를 삭제합니다. |
| void Init( string aName="CBitPic", int aWidth=300, int aHeight=200 ) | 초기화. aName - 그래픽 객체의 이름, aWidth - 너비, aHeight - 높이. |
| int Left() | 그래픽 객체의 왼쪽 가장자리의 좌표를 가져옵니다. |
| bool LoadPicture( string aFileName, bool aFileCommon=false ) | aFileName - 파일 이름, aFileCommon - 파일이 일반 MQL5/Files 폴더 또는 터미널의 MQL5/Files 폴더에 있습니다. 압축되지 않은 24비트 및 32비트 파일이 허용됩니다. |
| void Redraw() | 그래픽 객체를 다시 그립니다. |
| void Refresh() | 새로 고침 (삭제 및 생성) 합니다. |
| bool SavePicture( 문자열 aFileName, bool aFileCommon=false ) | 그림을 bmp 파일로 저장합니다. aFileName - 파일 이름, aFileCommon - 일반 MQL5/Files 폴더 또는 터미널의 MQL5/Files 폴더에 저장합니다. |
| void SetBGColor( uchar aR=0, uchar aG=0, uchar aB=255 ) | 배경색을 설정합니다. aR, aG, aB - 컬러 컴포넌트의 값입니다. |
| void SetBGColor( 색 aColor=clrBlue ) | 배경색 설정. aColor - 색상. 색상을 설정한 후 Clear() 메서드를 호출해야 합니다. |
| void SetData( uint & aData[] ) ) | 이미지 데이터 배열을 설정합니다. aData - 데이터 배열. |
| void SetDrawColor( uchar aR=255, uchar aG=255, uchar aB=0) | 그리기 색을 설정합니다. aR, aG, aB - 색상 구성 요소의 값입니다. |
| void SetDrawColor( aColor=clrYellow ) | 그리기 색을 설정합니다. aColor - 색입니다. |
| void SetDrawWidth( int aWidth ) | 그리기 두께를 설정합니다. aWidth - 1에서 5 사이의 두께입니다. |
| void SetFillColour( uchar aR=255, uchar aG=0, uchar aB=0 ) | 채우기 색을 설정합니다. aR, aG, aB - 색 구성 요소의 값입니다. |
| void SetFillColor( color aColor=clrRed ) | 채우기 색을 설정합니다. aColor - 색입니다. |
| void SetFilled( bool aFilled=true ) | 채우기 모드 설정. aFilled - 채우기 유무. |
| void SetFont( int aType=3 ) | 글꼴을 설정합니다. aType - 유형 (0-6). 0 - 작은 글꼴 6, 1 - 작은 글꼴 7, 2 - 작은 글꼴 8, 3 - Arial 8, 4 - Arial Narrow 8, 5 - Arial Black 8, 6 - Courier New 8. |
| void SetPos( int aLeft, int aTop ) | 그래픽 객체의 왼쪽 상단 모서리의 좌표를 설정합니다. aLeft - 왼쪽 가장자리로부터의 거리, aTop - 위쪽 가장자리로부터의 거리입니다. |
| void SetPosLeft( int aLeft ) | 그래픽 객체의 왼쪽 가장자리의 좌표를 설정합니다. aLeft - 왼쪽 가장자리로부터의 거리입니다. |
| void SetPosTop( int aTop ) | 그래픽 객체의 위쪽 가장자리의 좌표를 설정합니다. aTop - 상단 가장자리로부터의 거리입니다. |
| void SetSize( int aWidth, int aHeight ) | 크기를 설정합니다. aWidth - 너비, aHeight - 높이. |
| void SetSubWindow( int aNumber ) | 서브 윈도우를 숫자로 설정합니다. aNumber - 서브 윈도우 번호. |
| void SetSubWindow( 문자열 aName ) | 이름으로 서브 윈도우를 설정합니다. aName - 서브 윈도우 이름. |
| void SetTag( 문자열 aValue ) | 태그를 설정합니다. aValue - 텍스트입니다. |
| void Show() | 그래픽 객체의 가시성을 활성화합니다. |
| void Show( int aLeft, int aTop ) | 지정된 위치에서 그래픽 객체의 가시성을 활성화합니다. aLeft - 왼쪽 가장자리로부터의 거리, aTop - 상단 가장자리로부터의 거리. |
| 문자열 Tag() | 태그를 가져옵니다. |
| int Top() | 그래픽 객체의 상단 가장자리의 좌표를 취득합니다. |
| void TypeText( int aX, int aY, string aText, int aDirection=0, int aAlign=0 ) | aX, aY - 좌표, aText - 텍스트, aDirection - 방향(0 - 왼쪽에서 오른쪽, 1 - 위에서 아래로, 2 - 오른쪽에서 왼쪽으로 반전, 3 - 아래에서 위로), aAligne - 정렬(0 - 텍스트의 시작, 1 - 텍스트의 끝) 텍스트를 인쇄합니다. |
| bool Visible() | 그래픽 객체의 가시성을 취득합니다. |
| int Width() | 그래픽 객체의 너비를 취득합니다. |
CBitPic 클래스를 사용하는 eBitPicTest.mq5 예제에서 Expert Advisor는 그림 1과 같이 차트에 이미지를 그려서 CBitPic.bmp라는 파일에 저장합니다(터미널 데이터 폴더의 MQL5/Files 폴더에 나타나야 함). 이미지를 클릭하면 점의 좌표와 색상이 차트 주석에 표시되고 같은 위치에 "눈송이"가 그려집니다(그림 1의 오른쪽 상단 모서리와 같이).
MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/1050
ColorRVI_HTF
차트 주기를 차트 주기와 다른 값으로 고정하고 구름 형태로 만들어 배치할 수 있는 클래식 버전의 RVI(상대적 활력 지수) 인디케이터입니다.
Session Daylight Gradient — Ambient Forex Session Overlay
A lightweight chart overlay that paints a smooth “daylight” gradient across Pacific, Asia, London, and New York sessions—plus optional session separators, event labels, and “sunray” highlights for scheduled news. Includes UTC/Broker/PC time modes and a manual DST shift.