
앨리게이터로 트레이딩 시스템 설계 방법 알아보기
소개
다음은 가장 인기 있는 보조지표를 기반으로 트레이딩 시스템을 설계하는 방법에 대한 시리즈의 새로운 글입니다. 이 글에서 우리는 앨리게이터 지표의 정의, 측정 방법, 계산 방법, 판독 및 사용 방법을 알아봄으로써 앨리게이터 지표에 대해 자세히 알아볼 것입니다. 그런 다음 이 지표의 주요 목표를 기반한 몇 가지 간단한 전략을 기초로 거래 시스템을 만들 것입니다. 우리는 다음의 주제를 통해 이 지표에 대해 알아볼 것입니다.
저는 여러분이 이 기사의 코드, 특히 배운 내용을 직접 적용 해 볼 것을 권유합니다. 프로그래밍 기술을 향상시키는 데에 좋은 방법이기 때문입니다. 이 기사에서는 MetaTrader 5 거래 터미널에 내장된 MQL5(MetaQuotes Language 5) IDE를 사용할 것입니다. MetaTrader 5 다운로드 방법과 MQL5 사용법을 모르는 경우 메타에디터에서 MQL5 코드 작성하기라는 글을 읽어 보시기 바랍니다.
면책: 여기의 모든 정보는 정보 제공의 목적으로만 '있는 그대로' 제공되며 거래의 목적이나 조언을 위해 준비된 것이 아닙니다. 여기의 정보는 어떤 종류의 결과도 보장하지 않습니다. 귀하의 거래 계정에서 이들 자료를 사용하기로 한 경우 귀하는 이에 대한 위험을 감수해야 하며 이에 대한 책임은 귀하에게만 있습니다.
앨리게이터 정의
엘리게이터 보조지표는 빌 윌리엄스가 개발한 추세 추종 보조지표입니다. 이는 금융 시장 상품에서 추세가 있는 시간은 15~30%에 불과한 반면 횡보의 경우는 약 85%~70%의 시간을 차지한다는 것을 기반으로 합니다. 따라서 때때로 상승 추세나 하락 추세가 나타나기도 하지만 대부분의 경우 박스권을 형성합니다. 트렌드와 그 유형 그리고 트렌드를 식별하는 방법에 대해 자세히 알아보려면 이전 글 트렌드 정의 라는 주제를 읽어보시면 도움이 될 것입니다. 이 지표는 5, 8, 13주기로 구성된 세 개의 평활 이동 평균을 사용합니다. 즉 계산에 피보나치 수 일부를 사용합니다. 앞서 말했듯이 앨리게이터 지표는 세 개의 평활 이동 평균으로 구성되며 다음과 같습니다:
- 앨리게이터 턱.
- 앨리게이터 이빨.
- 앨리게이터 입술.
이 지표는 다음 단계를 통해 수동으로 계산할 수 있습니다:
앨리게이터 턱 = SMMA (Median price, 13, 8)
앨리게이터 이빨 = SMA(Median price, 8, 5)
앨리게이터 입술 = SMMA (Median price, 5, 3)
Median price = (고가 + 저가)/2
여기서:
SMMA = 평활 이동 평균
중간 가격 = 데이터의 중간 가격
고가 = 최고 가격
저가 = 최저 가격
앞의 단계가 끝나면 앨리게이터 지표를 얻을 수 있지만 MetaTrader 5 터미널에 내장 되어 있으므로 수동으로 계산할 필요가 없으며 다음과 같이 사용 가능한 기술 지표에서 선택하기만 하면 됩니다:
MetaTrader 5 터미널을 여는 동안 삽입 --> 지표 --> 빌 윌리엄스 --> 앨리게이터를 누릅니다.
그러면 다음과 같은 매개 변수를 볼 수 있습니다:
1 - 앨리게이터 턱의 기간.
2 - 앨리게이터 턱의 수평 이동.
3 - 앨리게이터 이빨의 기간.
4 - 앨리게이터 이빨의 수평 이동.
5 - 앨리게이터 입술의 기간.
6 - 앨리게이터 입술의 수평 이동.
7 - 평활화 방법.
8 - 사용 가능한 가격 유형.
다음 창을 통해 지표의 스타일을 결정할 수 있습니다:
1 - 턱 라인의 색상.
2 - 턱 라인의 유형.
3 - 턱 라인의 두께.
4 - 이빨 라인의 색상.
5 - 이빨 라인의 유형.
6 - 이빨 라인의 두께.
7 - 입술 라인의 색상.
8 - 입술 라인의 유형.
9 - 입술 라인의 두께.
모든 매개 변수를 결정하고 "확인"을 누르면 다음과 같이 차트에 지표가 첨부된 것을 확인할 수 있습니다:
이전 차트에서 볼 수 있듯이 차트에 지표가 삽입되어 있고 세 개의 라인이 있습니다:
1 - 앨리게이터 입술
2 - 앨리게이터 이빨
3 - 앨리게이터 턱
우리는 가격에서 이 선들의 위치를 관찰하는 것만으로도 지표를 읽을 수 있습니다. 가격이 입술, 이빨, 턱보다 높으면 추세가 상승하고 있다고 말할 수 있습니다. 가격이 입술, 이빨, 턱보다 낮으면 추세가 하락했다고 말할 수 있습니다. 가격이 세 개의 선에서 움직이고 있다면 횡보라고 할 수 있습니다.
앨리게이터 전략
거래를 하면서 앨리게이터 지표를 사용하는 방법에는 여러 가지가 있지만 교육을 위해 이 주제에서 다루는 주요 아이디어를 기반으로 사용할 수 있는 간단한 전략을 살펴 볼 것입니다. 여러분은 실제 계정에서 사용하기 전에 테스트하여 수익성이 있는지 확인해야 합니다. 여러분은 살펴본 전략을 최적화해야 할 수도 있으며 이는 여러분의 트레이딩 스타일에 유용한 최상의 방법에 도달하기 위해 할 수 있는 정상적인 과정입니다.
이 전략을 기반으로 우리는 특정 조건에 따라 강세 및 약세 신호를 받아야 합니다. 입술 값이 이빨 값과 턱 값의 두 값보다 크고 동시에 이빨 값과 턱 값보다 크면 강세 신호가 됩니다. 반대로 입술 값이 이빨 값과 턱 값보다 낮고 동시에 이빨 값이 턱 값보다 낮으면 약세 신호가 됩니다.
입술 > 이빨 값, 입술 > 턱 값, 이빨 > 턱 값 --> 강세
입술 <이빨 값, 입술 <턱 값, 이빨 <턱 값 --> 약세
이 전략에 따라 입술, 이빨, 턱 값의 교차에 따라 매수 및 매도 신호를 얻어야 합니다. 입술 값이 이빨 값과 턱 값보다 크면 매수 신호가 됩니다. 다른 시나리오에서는 입술 값이 이빨 및 턱 값보다 낮으면 매도 신호가 됩니다.
입술 > 이빨 값, 입술 > 턱 값 --> 매수
입술 < 이빨 값, 입술 < 턱 값 --> 매도
이 전략에 따라 우리는 종가와 이빨 값의 교차 이후에 입술, 이빨, 턱의 교차를 기준으로 매수 및 매도 신호를 얻어야 합니다. 입술 라인이 이빨 및 턱보다 낮고 종가가 이빨 값보다 크면 매수 신호가 됩니다. 반대로 입술 라인이 이빨 및 턱보다 크고 종가가 이빨 값보다 낮으면 매도 신호가 됩니다.
입술 < 이빨 값, 입술 < 턱 값 및 종가 > 이빨 --> 매수
입술 > 이빨 값, 입술 > 턱 값 및 종가 < 이빨 --> 판매
앨리게이터 전략 청사진
이제 우리는 앞의 주제에서 언급한 전략을 기반으로 트레이딩 시스템을 만들어야 합니다. 이를 위해 우리는 트레이딩 시스템을 만드는 데 도움이 되는 단계별 청사진을 설계할 것입니다.
이 전략에 따르면 우리는 다음의 값을 지속적으로 확인하여 강세 또는 약세 신호를 생성하는 트레이딩 시스템을 만들어야 합니다:
- 입술 값
- 이빨 값
- 턱 값
이를 바탕으로 적절한 신호를 생성하려면 트레이딩 시스템이 이러한 값의 위치를 결정하도록 해야 합니다. 입술 라인이 이빨보다 크고, 입술이 턱보다 크고, 이빨 라인이 턱보다 큰 경우 트레이딩 시스템이 차트에 코멘트로 다음의 값을 반환해야 합니다:
- 강세
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
다른 경우 입술 라인이 이빨 라인보다 낮고 입술 라인이 턱 라인보다 낮고 동시에 이빨 라인이 턱 라인보다 낮은 경우 트레이딩 시스템은 차트에 코멘트로 다음 값을 반환해야 합니다:
- 약세
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
다음은 이 트레이딩 시스템의 단계별 청사진입니다:
이 전략에 따라 우리는 다음의 값을 지속적으로 확인하여 각 값의 포지션을 결정하고 이를 바탕으로 매수 또는 매도 신호를 생성하는 트레이딩 시스템을 만들어야 합니다:
- 입술 값
- 이빨 값
- 턱 값
입술 라인이 이빨 값보다 크고 동시에 입술 라인이 턱 값보다 큰 경우 거래 시스템이 차트에 다음의 값을 코멘트로 반환하도록 해야 합니다:
- 매수
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
다른 경우에는 입술 라인이 이빨 값보다 낮고 동시에 입술 라인이 턱 라인보다 낮으면 거래 시스템이 다음의 값을 가진 신호를 차트에 코멘트로 반환해야 합니다:
- 매도
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
다음은 이 트레이딩 시스템의 단계별 청사진입니다:
이 전략에 따라 우리는 다음의 값들을 확인하고 각 값의 위치를 결정하여 매수 및 매도 신호를 생성하는 거래 시스템을 만들어야 합니다:
- 입술 값
- 이빨 값
- 턱 값
- 종가
입술 값이 이빨 값보다 낮고 입술 선이 턱 선보다 낮고 종가가 이빨 값보다 높아지면 거래 시스템이 다음과 같은 값과 함께 차트에 코멘트로 신호를 반환해야 합니다:
- 매수
- 입술 값 = n
- 이빨 값 = n
- 종가 = n
- 턱 값 = n
입술 선이 이빨 선보다 크고 입술 선이 턱 선보다 높으며 종가가 이빨 값보다 낮아지면 거래 시스템에서 다음과 같은 값과 함께 차트에 코멘트로 신호를 반환해야 합니다:
- 매도
- 입술 값 = n
- 이빨 값 = n
- 종가 = n
- 턱 값 = n
다음은 이 트레이딩 시스템의 단계별 청사진입니다:
앨리게이터 트레이딩 시스템
이제 우리는 살펴 본 각 전략을 수행하는 거래 시스템을 만들고 MetaTrader 5 터미널에서 실행하여 이 시스템이 원하는 신호를 자동으로 생성하도록 할 것입니다. 먼저 우리는 트레이딩 시스템에서 사용할 앨리게이터 구성 요소 값의 신호를 생성하는 기본 트레이딩 시스템을 만들 것입니다. 다음은 이러한 유형의 시스템을 만드는 단계에 대한 설명입니다:
앨리게이터 컴포넌트(입술, 이빨, 턱) 각각에 대한 배열을 생성합니다.
double jawsArray[]; double teethArray[]; double lipsArray[];
"ArraySetAsSeries" 함수를 사용하여 이러한 배열의 데이터를 정렬합니다. 매개변수:
- array[]
- flag
ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true);
"iAlligator" 함수를 사용하여 앨리게이터 정의. 매개변수:
- symbol: 현재 심볼에 적용하기 위해 (_Symbol)을 사용합니다.
- period: 현재 기간에 적용하기 위해 (_Period)를 사용합니다.
- jaw_period: 턱 계산 기간을 결정하기 위해 (13)을 사용합니다.
- jaw_shift: 턱의 수평 이동을 결정하기 위해 (8)을 사용합니다.
- teeth_period: 이빨의 계산 기간을 결정하기 위해 (8)을 사용합니다.
- teeth_shift: 이빨의 수평 이동을 결정하기 위해 (5)를 사용합니다.
- lips_period: 입술의 계산 기간을 결정하기 위해 (5)를 사용합니다.
- lips_shift: 입술의 수평 이동을 결정하기 위해 (3)을 사용합니다.
- ma_method: 이동 평균의 유형을 결정하기 위해 (MODE_SMA)를 사용합니다.
- applied_price: 가격의 유형을 결정하기 위해 (PRICE_MEDIAN)을 사용합니다.
int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
"CopyBuffer" 함수를 사용하여 데이터를 정의하고 결과를 저장합니다. 매개변수:
- indicator_handle: 지표 핸들을 결정하기 위해 (alligatorDef)를 사용합니다.
- buffer_num: 지표 버퍼 번호를 결정하기 위해 (턱의 경우 0), (이빨의 경우 1), (입술의 경우 2)를 사용합니다.
- start_pos: 시작 위치를 결정하기 위해 (0)을 결정합니다.
- count: 복사할 양을 결정합니다. (3)을 사용합니다.
- buffer[]: 복사할 대상 배열을 결정하기 위해 (jawsArray, teethArray, lipsArray)를 사용합니다.
CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray);
세 가지 구성 요소의 값을 가져옵니다.
double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5);
지표의 세 가지 구성 요소로 코멘트를 달 수 있습니다.
Comment("jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue);
다음은 이 간단한 거래 시스템을 만드는 전체 코드입니다:
//+------------------------------------------------------------------+ //| Simple Alligator System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //-------------------------------------------------------------------- void OnTick() { //creating price array double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,3,jawsArray); CopyBuffer(alligatorDef,1,0,3,teethArray); CopyBuffer(alligatorDef,2,0,3,lipsArray); //get value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //comment on the chart Comment("jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } //+------------------------------------------------------------------+
이 코드를 컴파일하고 나면 다음과 같이 Expert Advisors 폴더의 내비게이터에서 코드를 찾을 수 있습니다:
원하는 차트에 EA를 드래그 앤 드롭 하면 다음과 같이 이 EA의 창이 나타납니다:
"알고 트레이딩 허용" 옆에 체크 표시를 한 후 "확인"을 누르면 아래와 같이 차트에 EA가 첨부됩니다:
이전의 차트와 마찬가지로 오른쪽 상단 모서리에 EA가 첨부되어 있는 것을 볼 수 있습니다. 이제 우리는 신호를 수신할 준비가 되었습니다. 다음은 생성된 신호를 확인하기 위한 테스트의 예입니다.
이전 차트에서 볼 수 있듯이 왼쪽 상단 모서리에 다음과 같은 값의 코멘트가 있습니다:
턱 값 = n
이빨 값 = n
입술 값 = n
우리는 다음의 전체 코드로 이 전략을 기반으로 트레이딩 시스템을 만들 수 있습니다:
//+------------------------------------------------------------------+ //| Alligator Trend Identifier.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //get value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue) { Comment("Bearish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
이 코드의 차이점.
강세인 경우 전략의 조건:
if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue) { Comment("Bullish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
약세인 경우:
if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue) { Comment("Bearish","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
이 코드를 컴파일하고 생성된 EA를 실행하면 다음과 같이 차트에 이 EA가 첨부된 것을 확인할 수 있습니다:
이전 차트와 마찬가지로 차트의 오른쪽 상단 모서리에 EA가 첨부되어 있으며 이는 이제 우리가 이 전략에 따라 강세 또는 약세 신호를 받을 준비가 되었다는 것을 말해 줍니다. 다음은 이러한 신호의 예입니다:
강세인 경우:
이전 차트에서 볼 수 있듯이 오른쪽 상단 모서리에 다음과 같은 값을 가진 신호를 나타내는 코멘트가 있습니다:
- 강세
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
약세인 경우:
차트의 오른쪽 상단 모서리에 다음과 같은 값으로 약세 신호인 코멘트가 표시됩니다:
- 약세
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
세 개의 선이 가격 위로 움직이고 있습니다. 이는 약세 신호라는 의미입니다.
다음의 코드는 이 전략을 기반으로 트레이딩 시스템을 만들기 위한 코드입니다:
//+------------------------------------------------------------------+ //| Alligator Signals System .mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //get value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue>teethValue && lipsValue>jawsValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } if(lipsValue<teethValue && lipsValue<jawsValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
이 코드의 차이점.
이 전략의 조건.
매수 신호인 경우:
if(lipsValue>teethValue && lipsValue>jawsValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
매도 신호인 경우:
if(lipsValue<teethValue && lipsValue<jawsValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "lipsValue = ",lipsValue); }
이 코드를 컴파일하고 트레이딩 터미널에서 실행하면 다음과 같이 차트에 첨부된 EA를 확인할 수 있습니다:
차트의 오른쪽 상단에 EA가 첨부되어 있습니다. 이는 이제 우리가 이 전략에 따라 매수 또는 매도 신호를 받을 수 있다는 것을 의미합니다. 다음은 테스트를 한 예입니다.
매수 신호인 경우:
우리는 다음과 같은 값과 함께 원하는 신호를 얻었습니다:
- 매수
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
매도 신호인 경우:
다음과 같은 값과 함께 우리는 원하는 신호를 얻었습니다:
- 매도
- 턱 값 = n
- 이빨 값 = n
- 입술 값 = n
가격 위로 이동하는 세 개의 선이 있으므로 매도 신호입니다.
다음은 이 전략을 수행하는 거래 시스템을 만드는 전체 코드입니다:
//+------------------------------------------------------------------+ //| Alligator Signals System Enhancement.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { //creating three arrays of Alligator components double jawsArray[]; double teethArray[]; double lipsArray[]; MqlRates pArray[]; //Sorting data ArraySetAsSeries(jawsArray,true); ArraySetAsSeries(teethArray,true); ArraySetAsSeries(lipsArray,true); int Data=CopyRates(_Symbol,_Period,0,1,pArray); //define Alligator int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN); //define data and store result CopyBuffer(alligatorDef,0,0,13,jawsArray); CopyBuffer(alligatorDef,1,0,13,teethArray); CopyBuffer(alligatorDef,2,0,13,lipsArray); //get value of current data double jawsValue=NormalizeDouble(jawsArray[0],5); double teethValue=NormalizeDouble(teethArray[0],5); double lipsValue=NormalizeDouble(lipsArray[0],5); //conditions of strategy if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); } if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); } } //+------------------------------------------------------------------+
이 코드의 차이점.
가격, 거래량, 스프레드에 대한 정보를 저장하는 "MqlRates" 함수를 사용하여 가격에 대한 배열을 하나 더 만듭니다.
MqlRates pArray[];
"CopyRates"를 사용하여 MqlRates의 과거 데이터를 가져옵니다. 매개변수:
- symbol_name: 심볼 이름을 결정하기 위해 (_Symbol)을 사용합니다.
- timeframe: 차트 주기를 결정하기 위해 (_period)를 사용합니다.
- start_pos: 시작 위치를 결정하기 위해 (0)을 사용합니다.
- count: 복사할 데이터 개수를 결정합니다. (1)을 사용합니다.
- rates_array[]: 복사할 대상 배열을 결정하기 위해 (pArray)를 사용합니다.
int Data=CopyRates(_Symbol,_Period,0,1,pArray);
전략의 조건.
매수 신호인 경우:
if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue) { Comment("Buy","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); }
매도 신호인 경우:
if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue) { Comment("Sell","\n", "jawsValue = ",jawsValue,"\n", "teethValue = ",teethValue,"\n", "closingPrice = ",pArray[0].close,"\n", "lipsValue = ",lipsValue); }
이 코드를 컴파일하고 EA를 실행하면 EA가 다음과 같이 차트에 첨부되고 우리는 매수 및 매도 신호를 얻을 수 있습니다.
오른쪽 상단 모서리에 EA를 연결하면 우리는 원하는 신호를 수신할 수 있습니다. 다음은 테스트를 한 결과의 예입니다.
매수 신호인 경우:
왼쪽 상단 모서리에 다음과 같은 값의 코멘트가 있습니다:
- 매수
- 턱 값 = n
- 이빨 값 = n
- 종가 = n
- 입술 값 = n
매도 신호인 경우:
왼쪽 상단 모서리에 코멘트로 신호가 표시됩니다:
- 매도
- 턱 값 = n
- 이빨 값 = n
- 종가 = n
- 입술 값 = n
세 개의 선이 가격 아래에서 움직이고 있으므로 종가가 앨리게이터 이빨 선 아래에서 마감되었음을 알 수 있습니다.
결론
이 기사에서 우리는 매수 및 매도 신호를 생성하는 것 외에도 추세를 확인하는 데 사용할 수 있는 앨리게이터 기술 지표에 대해 자세히 알아 보았습니다. 이 지표를 수동으로 계산하는 방법과 앞서 언급한 간단한 전략을 기반으로 사용하는 방법을 배웠습니다:
- 앨리게이터 트렌드 식별자: 앨리게이터의 세 선(입술, 이빨, 턱)의 위치에 따라 강세 또는 약세 신호를 생성합니다.
- 앨리게이터 신호 시스템: 지표의 세 선 사이의 교차를 기반으로 고전적인 방법의 교차를 기반으로 매수 또는 매도 신호를 생성합니다.
- 앨리게이터 신호 시스템 개선본: 또 다른 방법으로 매수 또는 매도 신호를 생성하여 지표의 세 줄의 위치와 종가와 이빨 사이의 교차를 기반으로 이러한 신호를 더 일찍 얻을 수 있습니다.
우리는 살펴본 각 전략에 대한 단계별 청사진을 설계하여 우리의 아이디어를 정리해서 더욱 원활하고 쉽고 효과적으로 거래 시스템을 만들 수 있도록 했습니다. 또한 살펴본 각 전략에 대한 트레이딩 시스템을 만들어 MetaTrader 5 트레이딩 터미널에서 사용하고 우리가 설계하고 코딩 한 대로 자동으로 신호를 생성하도록 했습니다. 여러분은 여기서 언급 된 전략을 실제 계정에서 사용하기 전에 스스로 테스트하여 유용하고 수익성이 있는지 확인해야 한다는 점을 잊지 마시기 바랍니다. 이 글의 주요 목표는 지식을 공유하는 교육용입니다
이 기사를 통해 여러분의 코딩 기술을 향상시키고 수익을 얻기 위해서는 제가 조언 한대로 배운 것을 스스로 적용하려고 노력해야 합니다. 이 글이 여러분의 거래에 유용하고 여러분에게 이 글의 주제 또는 관련 주제에 대한 유용한 통찰력을 주었기를 바랍니다. 이와 비슷한 글을 더 읽고 싶으시다면 스토캐스틱, RSI, 볼린저 밴드, 이동평균, 엔벨로프, MACD, ADX 등 가장 인기 있는 보조지표와 이를 기반으로 트레이딩 시스템을 만드는 방법을 공유한 이 시리즈의 이전의 글들을 읽어보시기 바랍니다.
MetaQuotes 소프트웨어 사를 통해 영어가 번역됨
원본 기고글: https://www.mql5.com/en/articles/11549


