
Kagi 차트 지표
소개
"점 및 그림 차트 지표" 글에서는 점 및 그림 차트를 작성하는 프로그래밍 방법 중 하나를 설명했습니다. 이 차트는 19세기부터 알려져 있습니다. 그러나 이것은 먼 과거의 유일한 차트가 아닙니다. 초기 금융 시장 표현 유형의 또 다른 주목할만한 대표는 Kagi 차트입니다. 이 차트는 이 글에서 논의될 것입니다.
19세기 일본에 익숙하지 않은 금융 기관인 증권 거래소는 1878년 5월에 설립되었습니다. 오늘날 도쿄 증권 거래소로 알려져 있습니다. 이 이벤트는 Kagi 차트를 만들고 후속 개발하는 데 중요한 역할을 했습니다. 유럽과 미국은 1994년 Steve Nison의 "Beyond Candlesticks: New Japanese Charting Techniques Revealed"가 출판된 후 Kagi 차트를 알게 되었습니다.
Kagi는 차트 개발 당시 사용되었던 L자형 키를 의미하는 일본어 단어입니다. 또한 "주요 차트"라는 이름의 수정된 버전이 있습니다. Steve Nison의 "Beyond Candlesticks"에서 차트의 대체 이름인 가격 범위 차트, 후크 차트, 델타 또는 체인 차트도 찾을 수 있습니다.
이 차트의 특별한 점은 무엇인가요? 주요 특징은 (일본 촛대, 바 및 선과 달리) 가격 1만 남기고 시간 척도를 무시한다는 것입니다. 따라서 차트는 중요하지 않은 가격 변동을 숨기고 가장 중요한 변동만 남깁니다.
차트는 시장 상황에 따라 서로 교체되는 두꺼운 양 및 가는 음 라인 세트를 나타냅니다. 시장이 같은 방향으로 움직일 경우 라인이 확장되어 새로운 가격대에 도달합니다. 그러나 시장이 다시 돌아가서 미리 정의된 금액에 도달하면 새 열에 Kagi 라인이 반대 방향으로 그려집니다. 사전 정의된 금액은 포인트(일반적으로 통화 쌍에 사용) 또는 현재 가격의 백분율 값(일반적으로 주식에 사용)으로 설정됩니다. 선 두께는 가장 가까운 높음 또는 낮음 돌파에 따라 다릅니다.
1. 차트 예시
10월 8일부터 11일까지 EURUSD, H1의 히스토리 데이터를 사용합시다.
역 임계값이 15포인트인 표준 이미징의 예가 그림 1에 표시되어 있습니다.
그림 1. Kagi 차트, EURUSD H1
보시다시피 가격은 17:00부터 떨어지기 시작했습니다. 하락세는 21시까지 계속됐다. 22:00에 가격은 1.3566에서 위로 이동하고 1.3574에서 마감됩니다. 즉, 가격이 11포인트를 넘습니다. 이것은 반전에 충분하지 않지만 새로운 Low에도 도달하지 않았습니다. 다음 2시간 동안 가격이 안정되고 마침내 01:00(10월 9일)에 강력한 상승 움직임을 볼 수 있습니다. 이 움직임은 25포인트(1.3591-1.3566)로 구성된 1.3591에서 마감됩니다. 이는 가격이 역전되었음을 의미합니다.
상승세는 다음 시간에도 계속됩니다. 가격은 두꺼운 양 라인을 강화하는 1.3599에 도달합니다. 03:00에 가격은 이전 고점(1.3599-1.3578)에서 21포인트 상승한 1.3578로 급락했습니다. 이것은 반전에 충분합니다. 라인은 아래로 이동하지만 형태를 유지합니다(두꺼운 양 라인).
16:00까지 가격이 하락하고 마침내 가장 가까운 최소값을 돌파하고 두꺼운 양에서 얇은 음 라인으로 변경됩니다. 이전에 언급한 1.3566의 낮은 값이 여기서 획기적인 가격으로 작용했습니다. 가격은 계속해서 음 라인으로 움직이며 10월 10일 14시에 양으로 변경되어 10월 9일 23시(10월 9일)에 형성된 가장 가까운 고점인 1.3524를 돌파합니다. 이 작은 예는 Kagi 차트가 어떻게 형성되는지 보여줍니다.
2. Kagi 지표 차트 원리
지표를 현재 시간대와 독립적으로 만들기 위해 지표가 형성되어야 했던 시간대의 데이터를 별도로 복사하여 얻은 데이터를 이용하여 지표를 생성하기로 하였다.
이를 통해 Kagi 차트에 대한 기술적 분석의 경계를 확장하는 단일 차트에서 여러 시간대를 동시에 검사할 수 있습니다. 지표 자체는 별도의 창에 있지만 기본 차트에 데이터를 표시하는 것도 가능합니다. 즉, 지표 창에서 기본 포메이션(표준 또는 수정 모양)이 수행됩니다. 지표가 기본 차트에 복사되고 가격 및 시간 표시(설정에 따라 다름)도 그려집니다.
앞서 언급했듯이 지표는 표준 버전과 수정 버전 모두에서 차트를 그립니다. 표준은 위에서 설명했습니다. 이제 수정된 버전을 살펴보겠습니다.
새로운 아이디어인지는 모르겠지만 그런 버전은 들어본 적이 없습니다. 추가 필터의 아이디어는 반전 포인트뿐만 아니라 차트의 각 이동이 이제 필터링된다는 것입니다. 즉, 새로운 High 또는 Low(어깨/허리와 혼동하지 말 것)가 형성되기 위해서는 가격이 일정 거리만큼 움직여야 합니다. 일반적으로 가격이 움직일 때마다 먼저 지정된 거리를 커버해야 합니다. 이후 추세 지속인지 반전인지 정의합니다.
그림 2는 원리가 어떻게 작동하는지 보여줍니다. 수정된 차트 모양은 파란색으로 표시되고 표준 차트 모양은 빨간색으로 표시됩니다. 보시다시피 수정된 모양은 대부분의 사소한 신호를 필터링하여 가격 변동에 더 느리게 반응합니다.
그림 2. Kagi 차트 생성의 수정(파란색 선) 및 표준(빨간색 선) 버전
Kagi 차트 외에도 지표는 지표 창과 기본 차트에서 몇 가지 추가 요소를 제공합니다.
설정에 따라 표시창에서 마크를 설정할 수 있습니다. 이 표시는 취소 가격에 대한 데이터를 제공합니다. 동일한 기능이 가격 수준을 사용하여 구현되며(설정에 따라) 지표를 형성하는 데 사용되는 전체 가격 범위 또는 각 차트 반전에서 창을 따라 고르게 분포될 수 있습니다. 색상은 반전 유형(위-아래), 라인 유형(음-양) 또는 색상 변경 없음의 세 가지 버전으로 설정할 수 있습니다.
임시 가격 표시를 포함한 반전 가격 표시는 메인 차트에 제공됩니다. 이 표시(설정에 따라 다름)는 단일 색상이거나 음 또는 양 라인 색상에 따라 색상이 변경될 수 있습니다.
전체 지표 코드는 전역 변수를 통해 서로 통신하는 기능을 사용하여 구현됩니다.
코드는 3개의 주요 기능과 11개의 추가 기능으로 나눌 수 있습니다. 기본 그래픽 구성 및 추가 버퍼 배열의 계산 및 버퍼 채우기의 주요 부담은 지표 창의 Kagi 차트 형성 기능에 있습니다. 다른 두 기능은 데이터 제공을 담당합니다. 첫 번째 기능은 시간 데이터를 복사하고 다른 하나는 선택한 기간의 각 바 가격에 대한 데이터입니다.
나머지 보조 함수는 모든 구성 수행, 객체 삭제, 모든 표시기 객체 삭제에 동반되는 표시기 언로딩, 반전 매개변수 계산, 주 차트 및 표시기 창에 "추세선" 유형의 그래픽 객체 작성, 주 차트에 Kagi 그리기 작업을 담당합니다 (지표 형성을 시작하기 위한 새로운 바의 도착을 정의할할 뿐만 아니라).
3. 지표 코드 및 알고리즘
이제 지표 코드와 그 형성 알고리즘을 자세히 살펴보겠습니다. 코드가 상당히 커서 초보 프로그래머가 이해하기 어려울 수 있습니다. 전역 변수를 통해 서로 통신하는 함수는 코드를 상당히 혼란스럽게 만듭니다. 이 글에서는 각 기능과 코드의 일부를 별도로 설명합니다. 먼저 지표 설정에 대해 설명한 다음 데이터 복사 초기 기능, 반전 매개변수 계산, Kagi 차트 생성 및 계산의 주요 기능 및 기타 보조 기능에 대해 설명합니다.
3.1. 지표 입력 매개변수
코드는 12개의 버퍼와 8개의 지표 그래픽 구성뿐만 아니라 별도의 창에 지표를 선언하는 것으로 시작합니다. 먼저 2개의 "히스토그램"과 6개의 "라인"을 포함하여 8개의 그래픽 구성이 사용된 이유를 정의해 보겠습니다. 각 "히스토그램"은 자체 수직선을 만듭니다. 하나는 음 라인을 담당하고 다른 하나는 양 라인을 담당합니다.
각 라인에 세 개가 있기 때문에 "라인"의 경우는 다소 복잡합니다. 이것은 첫 번째 점 근처에 다른 점이 그려지면 라인이 그려지기 때문에 수행됩니다. 즉, 서로 인접한 두 개의 선을 그리기 위해 회전할 두 개의 "선" 유형의 그래픽 구성만 있으면 됩니다. 그러나 필요한 점을 건너뛰기 위해 이 라인이 필요한 경우 세 번째 구성이 다른 두 구성과 함께 회전해야 합니다.
이것은 그림 3에 설명되어 있습니다. 여기서 두 개의 "선" 유형 그래픽 구성만 사용되는 경우 어떤 일이 발생하는지 확인할 수 있습니다.
그림 3. 2개 및 3개의 그래픽 "라인" 유형 구성을 사용하여 어깨 및 허리 라인을 표시하는 예
그러면 설정 메뉴가 생성됩니다. 여기에는 5개의 열거가 있습니다(입력 매개변수에서 살펴보겠습니다).
첫 번째 입력 매개변수 "period"는 구성이 수행되는 기간이며 그 뒤에 "period_to_redraw" - 차트 구성 업데이트 기간이 오고 마지막 매개변수는 "start_data" - 구성이 시작되는 시간입니다.
이러한 매개변수 다음에는 차트 구성 및 추가 레이블 지정 매개변수가 있습니다.
- kagi_type – 사용자가 정의한 차트 구성 유형, 표준 또는 수정됨.
- price_type – 건설에 사용된 가격 유형: 종가, 시가, 고가 및 저가.
- type_doorstep – 사용된 반전 유형: 포인트 및 백분율;
- doorstep – 반전 값(위의 매개변수에 따라 포인트 또는 백분율 값으로 지정);
- color_yin – 지표 창의 음 라인 색상.
- color_yang – 지표 창의 양 라인 색상.
- width_yin – 지표 창의 음 라인 너비.
- width_yang – 지표 창의 양 라인 너비.
- levels_on_off – 지표 창에 가격 수준을 그려야 하는지 여부.
- levels_type – 지표 창의 가격 수준 유형입니다. 선택할 수 있는 두 가지 값이 있습니다.
- levels_number – 지표 창의 가격 수준 수;
- levels_change_color – 가격 수준 라인의 색상을 변경할 수 있습니다. 옵션은 상하 반전, 음과 양 라인 또는 변경 없음입니다.
- levels_first_color – 가격 수준의 첫 번째 색상;
- levels_second_color – 가격 수준의 두 번째 색상;
- label_1 - 지표 창에 차트 반전 가격 레이블 그리기;
- label_1_number – 지표 창에 표시되는 레이블 수;
- label_1_color – 지표 창의 가격 라벨 색상;
- label_2 – 기본 차트에 가격 레이블 그리기;
- label_2_color – 기본 차트의 레이블 색상입니다;
- time_line_draw - 메인 차트에 반전 타임라인 그리기;
- time_separate_windows - 메인 차트에서 반전 타임 라인의 연속 그리기;
- time_line_change_color – Yin 또는 Yang 라인의 반전 레이블에 따라 타임 라인의 색상을 변경합니다.
- time_first_color – 메인 차트에서 타임라인의 첫 번째 색상;
- time_second_color – 메인 차트에서 타임 라인의 두 번째 색상;
- kagi_main_chart - 메인 차트에 Kagi를 그려야 하는지 여부;
- color_yin_main – 기본 차트의 음 라인 색상;
- color_yang_main – 메인 차트의 양 라인 색상;
- width_yin_main – 기본 차트의 음 라인 너비;
- width_yang_main – 메인 차트의 양 라인 너비;
- magic_numb – 단일 차트에서 여러 지표를 시작하기 위해 지표 이름뿐만 아니라 개체를 구축하고 삭제하는 데 사용되는 매직 넘버입니다.
표시기 버퍼 선언, 가격 및 시간 값을 저장하기 위한 보조 버퍼, 보조 변수(stop_data, bars_copy_time, copy_history, copy_time), 차트 이동의 변화가 발생한 인 또는 양 라인에 데이터를 저장하기 위한 배열, 시간 및 가격, 중앙 가격 (만약 바에서 인이 양에 의해 대체디거나 그 반대의 경우)은 이러한 매개 변수를 차례로 따르게 됩니다. 마지막으로 "а" 차트 이동 변경 횟수에 대한 데이터를 포함하는 가장 많이 사용되는 전역 변수 중 하나를 선언합니다.
//+------------------------------------------------------------------+ //| BKCV.mq5 | //| Azotskiy Aktiniy ICQ:695710750 | //| https://www.mql5.com/ru/users/Aktiniy | //+------------------------------------------------------------------+ //--- Build Kagi Chart Variable #property copyright "Azotskiy Aktiniy ICQ:695710750" #property link "https://www.mql5.com/en/users/Aktiniy" #property version "1.00" #property description "Build Kagi Chart Variable" #property description " " #property description "This indicator makes drawing a chart Kagi as a matter of indicator window, and in the main chart window" #property indicator_separate_window #property indicator_buffers 12 #property indicator_plots 8 //--- plot Yin #property indicator_label1 "Yin" #property indicator_type1 DRAW_HISTOGRAM2 #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Yin1 #property indicator_label2 "Yin1" #property indicator_type2 DRAW_LINE #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- plot Yin2 #property indicator_label3 "Yin2" #property indicator_type3 DRAW_LINE #property indicator_color3 clrRed #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- plot Yin3 #property indicator_label4 "Yin3" #property indicator_type4 DRAW_LINE #property indicator_color4 clrRed #property indicator_style4 STYLE_SOLID #property indicator_width4 1 //--- plot Yang #property indicator_label5 "Yang" #property indicator_type5 DRAW_HISTOGRAM2 #property indicator_color5 clrRed #property indicator_style5 STYLE_SOLID #property indicator_width5 2 //--- plot Yang1 #property indicator_label6 "Yang1" #property indicator_type6 DRAW_LINE #property indicator_color6 clrRed #property indicator_style6 STYLE_SOLID #property indicator_width6 2 //--- plot Yang2 #property indicator_label7 "Yang2" #property indicator_type7 DRAW_LINE #property indicator_color7 clrRed #property indicator_style7 STYLE_SOLID #property indicator_width7 2 //--- plot Yang3 #property indicator_label8 "Yang3" #property indicator_type8 DRAW_LINE #property indicator_color8 clrRed #property indicator_style8 STYLE_SOLID #property indicator_width8 2 //--- Enumerations as input data (for more attractive setting) //--- Kagi charting type enum kagi_type_enum { classic=0, // Classic modified=1, // Modified }; //--- Type of the price used for construction enum price_type_enum { c=0, // Close o=1, // Open h=2, // High l=3, // Low }; //--- Type of the used reversal enum type_doorstep_enum { point=0, // Point procent=1, // Percent }; //--- Type of levels location enum levels_type_enum { cor=0, // Cornering equ=1, // Equal distance }; //--- Level colors change type (works when "Type of levels location"="Cornering") enum levels_change_color_enum { up_down=0, // Up & Down yin_yang=1, // Yin & Yang no=2, // Don't change }; //--- input parameters input ENUM_TIMEFRAMES period=PERIOD_CURRENT; // Calculation period to build the chart input ENUM_TIMEFRAMES period_to_redraw=PERIOD_M1; // Refresh period chart input datetime start_data=D'2013.07.10 00:00:00'; // Start time to build the chart input kagi_type_enum kagi_type=classic; // The type to build Kagi chart input price_type_enum price_type=c; // Price used to build chart input type_doorstep_enum type_doorstep=point; // Type calculate doorstep input double doorstep=25; // Doorstep reversal input color color_yin=clrRed; // Color Yin line (indicator window) input color color_yang=clrRed; // Color Yang line (indicator window) input char width_yin=1; // Width Yin line (indicator window) input char width_yang=2; // Width Yang line (indicator window) input bool levels_on_off=false; // Draw level (indicator window) input levels_type_enum levels_type=cor; // Type of drawing levels (indicator window) input uint levels_number=6; // Number of levels (indicator window) input levels_change_color_enum levels_change_color=up_down; // Type change color of levels (indicator window) input color levels_first_color=clrBeige; // The first color of level (indicator window) input color levels_second_color=clrCoral; // The second color of level (indicator window) input bool label_1=true; // Draw price label on (indicator window) input uint label_1_number=10; // The number of labels (indicator window) input color label_1_color=clrGreenYellow; // The color of labels (indicator window) input bool label_2=true; // Draw price label on (main chart) input color label_2_color=clrGreenYellow; // The color of labels (main chart) input bool time_line_draw=true; // Draw a timeline reversal (main chart) input bool time_separate_windows=false; // Draw a timeline reversal on indicator window input bool time_line_change_color=true; // Different color timeline on the Yin and Yang lines (main chart) input color time_first_color=clrRed; // The first color of timeline (main chart) input color time_second_color=clrGreenYellow; // The second color of timeline (main chart) input bool kagi_main_chart=true; // Draw Kagi on main chart (main chart) input color color_yin_main=clrRed; // Color Yin line (main chart) input color color_yang_main=clrRed; // Color Yang line (main chart) input char width_yin_main=1; // Width Yin line (main chart) input char width_yang_main=2; // Width Yang line (main chart) input long magic_numb=65758473787389; // The magic number for drawing objects //--- indicator buffers double YinBuffer1[]; double YinBuffer2[]; double Yin1Buffer[]; double Yin2Buffer[]; double Yin3Buffer[]; double YangBuffer1[]; double YangBuffer2[]; double Yang1Buffer[]; double Yang2Buffer[]; double Yang3Buffer[]; //--- additional variables double Price[]; // Buffer for storing the copied price data double Time[]; // Buffer for storing the copied time data //--- datetime stop_data; // Current time int bars_copied=0; // Number of the already copied bars from the initial date int bars_copied_time; // Number of the already copied bars having the initial date bool copy_history=false; // Price history copying result bool copy_time=false; // Time history copying result //--- datetime time_change[]; // Array for writing the time when the chart movement started changing (up or down) char time_line[]; // Array for storing the data on what line (Yin=0 or Yang=1) direction has changed double time_change_price[]; // Array for writing the chart movement change price double time_central_price[]; // Array for writing the average price during the chart movement change uint a=0; // Variable for building the chart, number of chart reversals is fixed
MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/772



