프로그래밍 자습서 - 페이지 5

 

범위 브레이크아웃 EA mql5 프로그래밍 | 파트 4/4


범위 브레이크아웃 EA mql5 프로그래밍 | 파트 4/4

Toby는 오늘 MetaTrader 5의 브레이크아웃 전문 고문(EA)을 마무리할 것이라고 발표하게 되어 기쁩니다. 이 비디오는 브레이크아웃 EA에 대한 포괄적인 시리즈의 마지막 부분입니다. 이전 비디오를 볼 기회가 없었다면 따라잡을 수 있도록 설명에 링크를 제공하겠습니다.

이전 세그먼트에서는 범위 계산, 매수 및 매도 브레이크아웃 확인, 포지션 폐쇄 논리와 같은 중요한 측면을 다루었습니다. 이제 이 결론 비디오에서는 EA에 추가할 기능이 몇 가지 더 있습니다. 특히 범위의 비율에 따라 손절매 및 이익실현 기능을 통합할 것입니다. 또한 요일 필터를 도입하고 브레이크아웃 모드를 구현하여 사용자가 범위당 하나 또는 두 개의 브레이크아웃 사이를 전환할 수 있도록 합니다.

바로 코딩 과정에 들어가 봅시다. 지금까지 개발한 코드입니다. 첫 번째 작업은 손절매 및 이익 실현 비율에 대한 입력을 포함하는 것입니다. 백분율로 표시되므로 정수로 정의합니다. 기본 손절매 입력을 150으로 설정하고 이익실현 입력을 200으로 설정해 보겠습니다. 또한 이러한 변경 사항을 반영하도록 주석을 업데이트할 것입니다. 사용자가 유효한 입력을 제공하는지 확인하려면 입력 확인을 수행해야 합니다. 손절매를 확인하고 이익실현 입력을 확인하기 위해 on init 함수에 추가 if 문을 추가할 것입니다. 손절매 입력이 0 미만이거나 1000보다 크면 오류 메시지가 표시됩니다. 동일한 검증 프로세스가 이익 실현 입력에 적용됩니다. 이러한 검사는 잘못된 입력으로부터 EA를 보호하는 데 도움이 됩니다.

계속해서 손절매를 계산하고 각 포지션에 대한 이익 실현 값을 계산해 봅시다. 매수 포지션의 경우 손절매는 현재 가격 아래 범위의 백분율로 계산됩니다. 입찰 가격을 사용하고 입력 손절매 값을 100으로 나눈 값을 곱합니다. 정규화된 가격을 보장하기 위해 NormalizeDouble 함수를 적용합니다. 마찬가지로 매도 포지션의 경우 손절매는 현재 가격 위 범위의 백분율로 계산됩니다. 우리는 매도호가를 사용하고 여기에 계산된 손절매 값을 더할 것입니다. 이것은 정지 손실에 대한 적절한 수준을 결정합니다.

이익 실현 계산의 경우에도 동일한 논리를 따를 것입니다. 매수 포지션의 경우 테이크프로핏은 현재 가격 이상의 범위이며, 매도 포지션의 경우 현재 가격 이하의 범위입니다. 손절매 및 이익실현 값을 계산하여 오픈 포지션 콜에 통합합니다. 정적 값 0을 사용하는 대신 계산된 손절매 및 이익실현 값으로 대체합니다. 이 조정을 통해 EA는 각 포지션에 대한 손절매 및 이익실현 수준을 정확하게 설정합니다.

유연성을 제공하기 위해 손절매를 비활성화하고 이익 실현 기능을 도입할 예정입니다. 사용자가 두 입력 중 하나에 0을 입력하면 해당 기능을 끄고 싶다는 의미입니다. if 문을 추가하여 이러한 조건을 확인하고 그에 따라 계산을 조정합니다. 이제 선택적인 종료 시간 기능을 다루겠습니다. 마감 시간 입력으로 -1을 입력하면 EA는 손절매 및 이익실현 수준에 따라 포지션을 마감합니다. 이 수정을 통해 사용자는 포지션 마감을 위한 특정 시간을 포함할지 또는 손절매 및 이익실현 매개변수에만 의존할지 여부를 선택할 수 있습니다.

이를 구현하기 위해 on tick 기능에서 종료 시간 확인을 업데이트합니다. 마감 시간이 0 미만이면 꺼져 있음을 나타내며 시간에 따른 포지션 마감 확인을 건너뛰고 손절매 및 이익실현 조건에만 의존합니다. 또한 그리기 개체 기능에서 범위 시각화를 조정할 것입니다. 마감 시간이 설정되지 않은 경우 범위 선은 현재 캔들까지 계속 확장되어 손절매 또는 이익실현 수준에 도달할 때까지 브레이크아웃 모드가 활성화됨을 나타냅니다. 반면 종가 시간이 설정되면 범위 선은 해당 특정 캔들까지만 확장되어 지정된 시간까지 돌파 모드가 활성화됨을 나타냅니다.

EA의 다양성을 강화하기 위해 요일 필터를 도입합니다. 이 필터를 사용하면 사용자가 EA를 활성화할 요일을 지정할 수 있습니다. 사용자가 미리 정의된 목록에서 여러 요일을 선택할 수 있는 요일 필터에 대한 입력 매개변수를 추가합니다. 기본적으로 모든 요일이 선택됩니다. 요일 필터를 구현하기 위해 on tick 기능을 수정합니다. 현재 날짜가 사용자가 선택한 필터에 포함되어 있는지 확인하는 if 문을 도입합니다. 날짜가 포함되지 않은 경우 EA는 포지션 개시 로직을 건너뛰고 다음 틱으로 진행합니다.

마지막으로 범위당 하나 또는 두 개의 탈주 사이를 전환하는 옵션을 구현할 것입니다. 현재 EA는 범위 돌파당 하나의 포지션을 엽니다. 그러나 일부 트레이더는 더 강한 돌파를 위해 두 개의 포지션을 여는 유연성을 선호할 수 있습니다. 이를 수용하기 위해 사용자가 범위당 하나 또는 두 개의 브레이크아웃을 선택할 수 있는 입력 매개변수를 도입합니다.

이 기능을 구현하기 위해 포지션 오픈 로직을 조정할 예정입니다. 사용자가 범위당 두 개의 브레이크아웃을 선택하면 EA는 초기 브레이크아웃의 반대 방향으로 추가 포지션을 엽니다. 이렇게 하면 강세 및 약세 돌파가 모두 같은 범위 내에서 포착될 수 있습니다. 이러한 모든 새로운 기능이 구현됨에 따라 당사의 브레이크아웃 전문 고문은 트레이더에게 향상된 기능과 유연성을 제공할 것입니다. 범위의 백분율을 기반으로 한 손절매 및 이익 실현 기능은 위험을 관리하고 이익을 얻는 데 도움이 됩니다. 요일 필터를 통해 사용자는 활성 거래일을 지정할 수 있으며 브레이크아웃 모드는 거래 전략에 따라 범위당 하나 또는 두 개의 브레이크아웃으로 조정할 수 있습니다.

Breakout Expert Advisor에 대한 이 포괄적인 시리즈가 유용하고 유익한 정보가 되었기를 바랍니다. 질문이 있거나 추가 지원이 필요한 경우 주저하지 말고 문의하십시오. 행복한 거래!

Range Breakout EA mql5 Programming | Part 4/4
Range Breakout EA mql5 Programming | Part 4/4
  • 2022.10.14
  • www.youtube.com
I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range breakout...
 

볼린저 밴드 EA MT5 프로그래밍



볼린저 밴드 EA MT5 프로그래밍

이 비디오에서 Toby는 Twitter에서 볼링 이벤트를 위한 맞춤형 전문 고문을 만드는 단계별 프로세스를 소개합니다. 그는 전략을 설명하는 것으로 시작합니다. 볼린저 밴드 상단에서 캔들이 열릴 때 매도하고, 손절매를 설정하고 이익실현 수준을 설정하고, 볼린저 밴드의 중간선을 넘으면 거래를 종료합니다. 동일한 논리가 구매에도 적용됩니다.

그런 다음 Toby는 MetaEditor로 전환하여 템플릿을 사용하여 새로운 전문 고문을 생성합니다. 그는 템플릿을 정리하고 매직 넘버, 로트 크기, 기간, 편차, 손절매, 이익실현과 같은 EA에 대한 입력 매개변수를 추가합니다. 그는 이러한 매개변수의 기본값을 설정하고 코드를 컴파일합니다.

다음으로 Toby는 Bollinger 밴드 표시기의 핸들과 상위, 평균 및 하위 밴드에 대한 버퍼를 포함하여 EA에 대한 전역 변수를 정의합니다. 그는 또한 현재 틱 및 거래에 대한 변수를 생성합니다.

OnInit 함수로 이동하여 Toby는 사용자 입력이 유효한지 확인합니다. 잘못된 입력이 있으면 오류 메시지를 표시하고 반환합니다. 무역 개체에 대한 매직 넘버를 설정하고 볼린저 밴드 지표에 대한 지표 핸들을 생성합니다. 핸들 생성에 실패하면 오류 메시지를 표시하고 반환합니다. 그런 다음 버퍼를 시리즈로 설정하고 코드를 컴파일합니다.

OnTick 함수에서 Toby는 사용자 정의 함수를 사용하여 현재 틱이 바 오픈 틱인지 확인합니다. 바 오픈 틱이 아니면 돌아옵니다. 바 오픈 틱인 경우 SymbolInfoTick 함수를 사용하여 현재 틱을 검색하고 currentTick 변수에 저장합니다. 그런 다음 CopyBuffer 함수를 사용하여 최신 표시기 값을 검색하고 각 버퍼에 저장합니다. 복사된 값의 수가 3이 아닌 경우(오류를 나타냄) 오류 메시지를 표시하고 반환합니다.

이 시점에서 Toby는 전문 고문 코딩의 초기 단계를 완료했습니다. 그는 코드를 컴파일하고 MetaTrader의 시각적 백테스트를 사용하여 지표 값을 확인하고 코드가 올바르게 작동하는지 확인합니다.

다음으로 Bollinger Bands 전략을 기반으로 거래 신호를 생성하는 로직을 구현해야 합니다. 매도 신호를 나타내는 캔들이 상단 밴드 위에서 열리는지 확인하는 것으로 시작하겠습니다. 이 조건이 충족되면 손절매와 이익실현 수준으로 매도 거래를 실행합니다. 마찬가지로 매수 신호의 하단 밴드 아래에서 캔들이 열리는지 확인하여 동일한 종료 조건으로 매수 거래를 실행합니다.

코드에 대한 설명은 다음과 같습니다.

  • 먼저 isNewBar() 함수를 사용하여 현재 틱이 바 오픈 틱인지 확인합니다. 거짓을 반환하면 현재 틱에 대한 거래 신호 생성을 건너뜁니다.

  • 그런 다음 각 버퍼에서 최신 표시기 값인 upperBand, baseLine 및 lowerBand를 검색합니다.

  • 다음으로 이전 캔들의 시가가 상위 밴드 위에 있는지 확인합니다(open[1] > upperBand). 이 조건이 참이면 trade 객체의 Sell() 메서드를 사용하여 매도 거래를 열어 매도 신호를 생성합니다. 각각의 방법을 사용하여 로트 크기, 손절매, 이익실현 수준을 설정합니다.

  • 마찬가지로 이전 캔들의 시가가 하단 밴드 아래에 있는지 확인합니다(open[1] < lowerBand). true인 경우 거래 개체의 Buy() 메서드를 사용하여 구매 거래를 열어 구매 신호를 생성합니다. 다시, 우리는 로트 크기, 손절매, 이익실현 수준을 설정합니다.

  • 마지막으로 공개 거래가 있는 경우 현재 캔들의 종가가 중간선(기준선)을 교차하는지 확인합니다. 이 조건이 참이면 거래 개체의 Close() 메서드를 사용하여 거래를 종료합니다.

코드를 컴파일하고 MetaTrader에서 테스트하여 예상대로 작동하는지 확인하십시오.

주어진 코드에는 여러 작업이 수행되고 있습니다. 다음은 각 단계에 대한 자세한 설명입니다.

  1. 변수 초기화:

    • 매수 포지션과 매도 포지션의 수를 0으로 설정합니다.
    • 현재 셀을 0으로 설정합니다.
  2. 오픈 포지션 계산:

    • 현재 열려 있는 모든 위치를 반복합니다.
    • 각 위치의 티켓을 받고 작업이 성공했는지 확인하십시오.
    • 성공하면 위치의 매직 넘버를 얻습니다.
    • 매직 넘버가 입력된 매직 넘버와 일치하면 매수 또는 매도 포지션에 대한 해당 카운터를 증가시킵니다.
  3. 새 직책을 열 수 있는지 확인하십시오.

    • 열려 있는 구매 포지션이 없는지 확인하십시오.
    • 현재 가격이 Bollinger Bands의 낮은 버퍼보다 낮거나 같은지 확인하십시오.
    • 매수 포지션의 오픈 시간이 현재 바의 오픈 시간과 다른지 확인하세요.
  4. 손절매 계산 및 이익실현:

    • 현재 가격에서 입력 손절매(포인트 단위)를 빼 손절매를 계산합니다.
    • 현재 가격에 입력 테이크 프로핏(포인트 단위)을 더하여 테이크 프로핏을 계산합니다.
    • 입력 이익 실현이 0이면 이익 실현 변수를 0으로 설정합니다.
  5. 손절매 정상화 및 이익실현:

    • 손절매를 정상화하고 틱 크기를 기준으로 이익을 취하는 함수를 정의합니다.
    • 현재 기호의 눈금 크기를 가져옵니다.
    • 손절매를 정상화하고 틱 크기로 나누어 이익을 얻습니다.
  6. 새 구매 포지션 열기:

    • Trade 개체를 사용하여 정규화된 손절매 및 이익실현을 포함하여 지정된 매개변수로 구매 포지션을 엽니다.
  7. 매도 포지션을 열기 위해 상단 밴드 크로스를 확인하십시오.

    • 오픈 매도 포지션이 없는지 확인하십시오.
    • 현재 가격이 Bollinger Bands의 상단 버퍼 이상인지 확인하십시오.
    • 매도 포지션의 오픈 시간이 현재 바의 오픈 시간과 다른지 확인하세요.
    • 손절매를 계산하고 현재 입찰 가격을 사용하여 매도 포지션에 대한 이익을 취하십시오.
    • 손절매를 정상화하고 이익을 취하십시오.
    • 정규화된 손절매 및 이익실현을 포함하여 지정된 매개변수로 매도 포지션을 엽니다.
  8. Bollinger Bands의 중간선이 교차되면 포지션을 닫습니다.

    • 오픈 매수 및 매도 포지션을 계산합니다.
    • 매수 포지션 수가 0보다 크고 현재 입찰 가격이 버퍼 상한선보다 높으면 모든 매수 포지션을 청산합니다.
    • 매도 포지션의 수가 0보다 크고 현재 매도 가격이 버퍼 하단 이하이면 모든 매도 포지션을 청산합니다.
  9. 위치를 닫는 함수를 정의합니다.

    • 열린 포지션을 계산하기 위한 기존 코드를 복사하고 입력 매개변수(모든 포지션의 경우 0, 매수 포지션의 경우 1, 매도 포지션의 경우 2)에 따라 포지션을 닫도록 수정합니다.

이 코드는 다양한 확인 및 계산을 수행하여 오픈 포지션을 계산하고 관리하고, 새로운 포지션을 오픈하고, 특정 조건에 따라 포지션을 종료합니다.

Bollinger bands EA MT5 Programming
Bollinger bands EA MT5 Programming
  • 2022.11.28
  • www.youtube.com
Today I will show you how to code a simple Bollinger bands EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully work...
 

mql5에서 그래픽 패널을 만드는 방법 | 파트 1/2


mql5에서 그래픽 패널을 만드는 방법 | 파트 1/2

Toby는 MQL5에서 간단한 그래픽 패널을 생성하여 정보를 표시하고 차트의 배경색을 변경하는 버튼을 추가하는 방법을 시연합니다. 그는 이 패널이 전문 고문을 위해 생성될 수 있지만 시간 범위 브레이크아웃 EA를 예로 사용할 것이라고 언급합니다. Toby는 동영상 주제가 댓글에서 사용자가 요청한 것이라고 말하고 시청자가 향후 동영상에 대한 주제를 제안하도록 권장합니다.

Toby는 메타 편집기를 열고 시간 범위 분류 EA에 대한 파일을 로드합니다. 그는 그것을 "시간 범위 EA 패널"이라는 새로운 전문 고문으로 저장하고 컴파일합니다. 그는 패널을 포함 파일에 별도의 클래스로 작성하여 모든 전문가 고문에서 쉽게 사용할 수 있도록 할 것이라고 설명합니다. Toby는 "그래픽 패널"이라는 새 포함 파일을 만들고 패널 크기, 글꼴 크기 및 글꼴 색상에 대한 입력을 정의합니다.

그는 해당 클래스의 기능을 사용할 수 있도록 제어 폴더의 "dialog.mqh" 파일을 포함합니다. Toby는 "CAppDialog" 클래스에서 상속되는 "CGraphicalPanel"이라는 클래스를 정의합니다. 그는 클래스의 메서드에 대한 비공개 섹션, 생성자, 소멸자, 초기화 함수 및 차트 이벤트 핸들러에 대한 공개 섹션을 추가합니다. 그는 또한 클래스 메서드에 대한 설명 섹션을 포함합니다.

다음으로 Toby는 클래스 정의 뒤에 클래스 메서드의 본문을 작성합니다. 그는 메소드가 클래스에 속하도록 지정하고 생성자, 소멸자, 초기화 함수 및 차트 이벤트 핸들러를 작성합니다. 그는 각 방법의 목적을 설명하는 주석을 추가합니다. Toby는 코드를 컴파일하여 오류나 경고를 확인합니다.

Toby는 CFDialog 클래스를 사용하여 대화 상자 패널을 생성하는 패널 생성 기능을 구현합니다. 입력 매개변수를 기반으로 패널의 이름, 하위 창, 위치 및 크기를 설정합니다. 패널 생성에 실패하면 메시지를 인쇄하고 false를 반환합니다. 그는 또한 차트를 업데이트하기 위해 차트 새로 고침 기능을 추가합니다. Toby는 오류가 없는지 확인하기 위해 코드를 다시 컴파일합니다.

Expert Advisor 파일에서 Toby는 그래픽 패널 포함 파일을 포함하고 전역 변수 섹션에 "panel"이라는 패널 클래스의 개체를 생성합니다. 그는 onInit 함수에서 패널을 초기화하고 차트 이벤트 핸들러를 추가하여 차트 이벤트를 패널에 전달합니다. Toby는 적절한 매개변수로 패널의 차트 이벤트 함수를 호출하여 차트 이벤트 핸들러의 본문을 작성합니다.

마지막으로 Toby는 onDeinit 함수에 패널 파괴 함수를 추가하여 패널을 파괴하고 이유를 명시합니다. 그는 코드를 다시 컴파일하고 MetaTrader에서 테스트합니다. Toby는 Expert Advisor를 차트로 드래그 앤 드롭하여 패널의 기능을 보여줍니다. 그는 또한 패널의 버튼을 사용하여 전문 고문을 닫습니다.

안녕하세요, 저는 Toby입니다. 오늘은 MQL5에서 그래픽 패널을 만드는 방법을 보여드리겠습니다. 이것은 실제로 튜토리얼의 두 번째 부분입니다. 첫 번째 부분에서는 왼쪽에 간단한 패널을 만들었고, 놓친 경우 설명에서 링크를 찾을 수 있습니다. 오늘 비디오에서는 패널에 라벨과 버튼을 추가해 보겠습니다. 이 예에서는 시간 범위 브레이크아웃 EA를 사용합니다. 이 전문 고문을 코딩하는 방법에 관심이 있다면 내 채널에 코딩 시리즈가 있습니다. 설명의 첫 번째 부분에 대한 링크도 찾을 수 있습니다.

시작하려면 MQL5 편집기로 전환하고 코딩을 시작하십시오. 여기에 그래픽 패널 포함 파일이 있고 패널을 표시하도록 수정한 시간 범위 브레이크아웃 EA도 있습니다. 포함 파일로 이동하여 사용자의 입력 값을 확인하십시오. 클래스의 개인 메서드 섹션 아래에 "입력 확인"이라는 메서드를 만듭니다. OnInit 함수 다음에 이 메서드를 호출합니다. 메서드가 false를 반환하면 OnInit 함수에서도 false를 반환합니다. 이렇게 하면 입력이 유효하지 않은 경우 더 이상 진행하지 않습니다. 컴파일하고 다음으로 넘어갑시다.

이제 패널에 레이블을 추가해 보겠습니다. 레이블과 버튼에 필요한 클래스 파일을 포함해야 합니다. 포함 섹션으로 이동하여 레이블에 대해 "controls/label.mqh"를 포함하고 버튼에 대해 "controls/button.mqh"를 포함합니다. 그런 다음 레이블 변수를 정의합니다. 입력, 매직 넘버, 로트, 시작 시간, 기간 및 종료 시간에 대한 레이블이 있습니다. 컴파일하고 다음으로 넘어갑시다.

createPanel 함수에서 패널에 레이블을 추가합니다. 변수 "M_L_Input"을 사용하여 입력 레이블을 생성합니다. 레이블의 텍스트, 색상 및 글꼴 크기를 설정합니다. 그런 다음 라벨을 패널에 부착합니다. 다른 레이블에도 이 프로세스를 반복합니다. 모든 레이블을 추가했으면 왼쪽 패널을 컴파일하고 확인합니다. 더 나은 정렬을 위해 레이블의 위치를 조정해야 할 수도 있습니다. 컴파일하고 확인해보자.

이제 버튼을 패널에 추가해 보겠습니다. "CButton" 유형의 변수 "M_B_ChangeColor"를 정의합니다. 버튼의 위치, 텍스트, 텍스트 색상, 배경색 및 글꼴 크기를 설정합니다. 마지막으로 버튼을 패널에 추가합니다. 컴파일 후 패널에 버튼이 표시됩니다. 이 단계에서 버튼에는 기능이 없지만 나중에 추가할 것입니다.

다음으로 패널의 배경색과 글꼴 이름을 변경해 보겠습니다. 이를 위해 "Defiance.mqh" 파일을 포함하고 기본 설정에 대한 새 값을 정의합니다. 기본 글꼴 이름과 배경색 설정을 정의 해제한 다음 새 값을 정의합니다. 글꼴 이름은 "Consolas"이고 어두운 회색 배경색을 사용합니다. 컴파일 후 새로운 배경색과 글꼴로 업데이트된 패널을 볼 수 있습니다.

마지막으로 Expert Advisor의 실제 값을 패널에 표시해 보겠습니다. 포함 파일에 전문 고문 파일을 포함하고 입력 변수에 액세스합니다. 전문 고문의 실제 값으로 레이블을 업데이트합니다. 컴파일 후 패널에 입력 값이 표시되는 것을 볼 수 있습니다.

MQL5에서 그래픽 패널을 만드는 방법에 대한 오늘의 자습서는 여기까지입니다. 다음 부분에서는 버튼에 기능을 추가하고 패널을 완성하겠습니다. 더 많은 것을 기대해 주세요!

How to create a graphical panel in mql5 | Part 1/2
How to create a graphical panel in mql5 | Part 1/2
  • 2022.12.04
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

mql5에서 그래픽 패널을 만드는 방법 | 파트 2/2


mql5에서 그래픽 패널을 만드는 방법 | 파트 2/2

안녕하세요 토비입니다. 오늘은 MQL5에서 그래픽 패널을 만드는 방법을 보여드리겠습니다. 튜토리얼 시리즈의 두 번째 파트입니다. 첫 번째 부분에서는 왼쪽에 간단한 패널을 만들었습니다. 놓치셨다면 여기 링크해두겠습니다. 오늘 영상에서는 패널에 라벨과 버튼을 추가해 보겠습니다. 이 예에서는 시간 범위 브레이크아웃 EA를 사용합니다. 이 전문 고문을 코딩하는 방법을 배우고 싶다면 내 채널에 코딩 시리즈가 있습니다. 첫 번째 부분도 여기에 연결하겠습니다.

미디어 편집기로 전환하고 코딩을 시작하겠습니다. 그래픽 패널 포함 파일과 패널을 표시하는 수정된 시간 범위 브레이크아웃 EA 파일이 있습니다. 포함 파일에서 "checkInputs"라는 메서드를 만들어 사용자의 입력 값을 확인합니다. OnInit 함수에서 패널을 만들기 전에 이 메서드를 호출합니다. 입력이 잘못된 경우 오류 메시지를 표시하고 false를 반환합니다. 그렇지 않으면 패널 생성을 진행합니다.

다음으로 패널에 레이블과 버튼을 추가합니다. 레이블과 버튼을 사용하려면 해당 클래스 파일을 포함해야 합니다. 클래스의 레이블 및 버튼에 필요한 include 문을 추가합니다. 그런 다음 레이블과 버튼에 대한 개인 변수를 정의합니다.

CreatePanel 함수에서 패널을 만든 후 레이블과 버튼을 패널에 추가합니다. 위치, 텍스트, 색상 및 글꼴 크기를 설정합니다. 마지막으로 Add 메서드를 사용하여 패널에 추가합니다.

코드를 컴파일하고 패널을 확인합니다. 레이블과 버튼이 패널에 표시되어야 합니다. 또한 더 나은 모양을 위해 패널의 배경색과 글꼴 이름을 변경합니다. Expert Advisor의 실제 값을 패널에 표시하기 위해 include 섹션에 Expert Advisor 파일을 포함합니다. 그런 다음 CreatePanel 함수에서 Expert Advisor의 입력 값을 검색하여 레이블에 표시합니다. 코드를 컴파일하고 패널을 다시 확인합니다. 레이블은 이제 Expert Advisor의 실제 입력 값을 표시해야 합니다. 모든 입력 값에 대해 이 프로세스를 반복합니다.

이 단계를 완료하면 레이블과 버튼이 있는 그래픽 패널이 준비됩니다. 이제 패널의 나머지 레이블에 대한 값을 추가할 수 있습니다. 매직 넘버 레이블에 대해 했던 것과 동일한 방식으로 이 작업을 수행합니다. 포함 파일로 돌아가서 레이블을 만드는 섹션을 찾습니다. 여기에서 로트, 시작 시간, 기간 및 종료 시간 값을 표시하는 코드를 추가합니다.

lot 레이블의 경우 "magic number"라는 텍스트를 "lots"로 바꾸고 y 좌표를 70으로 업데이트합니다. 시작 시간 레이블의 경우 이름을 "start time"으로 변경하고 y 좌표를 업데이트합니다. 기간 레이블의 경우 이름을 "기간"으로 변경하고 y 좌표를 110으로 업데이트합니다. 마지막으로 종료 시간 레이블의 경우 이름을 "종료 시간"으로 변경하고 y좌표를 130으로 합니다.

이러한 변경을 수행한 후 코드를 컴파일할 수 있습니다.

이제 전문 고문을 살펴보고 컴파일하면 패널에서 로트, 시작 시간, 기간 및 마감 시간에 대한 실제 값을 볼 수 있어야 합니다. 다음으로 버튼의 기능을 구현해 보겠습니다. 현재 버튼을 클릭하면 아무 작업도 수행하지 않습니다. 그것을 바꾸자. 포함 파일에서 버튼을 생성하는 섹션을 찾습니다. 여기에서 버튼 클릭에 대한 이벤트 핸들러를 추가할 수 있습니다. 이를 위해 OnChartEvent 함수를 사용합니다. 이벤트 핸들러 내에서 버튼을 클릭할 때 수행할 작업을 지정할 수 있습니다.

지금은 버튼을 클릭했을 때 메시지를 표시해 보겠습니다. Print 함수를 사용하여 터미널에 메시지를 출력할 수 있습니다. 이벤트 핸들러를 추가한 후 코드를 컴파일할 수 있습니다.

이제 Expert Advisor를 실행하고 버튼을 클릭하면 터미널에 메시지가 표시되어야 합니다.

그게 다야! 레이블과 버튼이 있는 MQL5에서 그래픽 패널을 성공적으로 만들었습니다. 레이블은 Expert Advisor의 입력 값을 표시하고 단추에는 클릭 이벤트 핸들러가 있습니다.

자유롭게 버튼에 더 많은 기능을 추가하거나 요구 사항에 따라 패널을 사용자 지정하십시오. 포함 파일과 전문가 조언자 파일을 모두 컴파일하여 변경 사항이 적용되는지 확인하십시오.

How to create a graphical panel in mql5 | Part 2/2
How to create a graphical panel in mql5 | Part 2/2
  • 2022.12.12
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

mql5의 동적 위치 크기 조정 | MT5 프로그래밍



mql5의 동적 위치 크기 조정 | MT5 프로그래밍

안녕하세요 토비입니다. 오늘은 여기에 표시된 것과 같은 결과를 얻을 수 있도록 MQL5에서 동적 로트 크기를 계산하는 방법을 보여 드리겠습니다. 직접 사용해 볼 수 있습니다.

좋아, 시작하자. 이 비디오에서는 현재 고정 로트 크기를 사용하는 전략에 동적 로트 크기 계산을 추가합니다. 이를 통해 $100 또는 계정 잔액의 일정 비율과 같이 거래당 특정 금액을 위험에 빠뜨릴 수 있습니다. 또한 동적 로트 크기 계산을 통해 전략을 추가로 개선할 수 있는지 확인하기 위해 백테스트를 수행할 것입니다. 또한 전략과 그 설정을 안내해 드리겠습니다.

시작하려면 MetaEditor로 전환하고 코딩을 시작하겠습니다. 여기에서는 MetaEditor에 있으며 이 데모에서는 동적 로트 크기 계산을 통합하기 위해 '시간 범위 EA'를 사용하겠습니다. 그러나 선택한 다른 전문 고문을 사용할 수 있습니다. 이전에 채널의 시리즈에서 이 EA를 코딩했습니다. 동일한 전문 고문을 사용하려면 첫 번째 부분에 대한 링크를 제공합니다.

먼저 'Time Range EA' 파일을 열어보자. 이제 새 이름으로 저장해 보겠습니다. '다른 이름으로 저장'을 클릭하고 이름을 '시간 범위 EA 동적 로트'로 지정합니다. 좋습니다. 파일이 저장되었습니다.

이 전문 고문은 다이나믹 로트 크기 계산을 추가할 곳입니다. 파일을 컴파일하고 전략 테스터의 입력을 검사해 보겠습니다. MetaTrader 5 플랫폼에서 전략 테스터를 열고 필요한 경우 전문 고문을 새로 고칩니다. 이제 '시간 범위 EA 동적 로트'를 선택합니다. 입력 탭에서 현재 고정 값을 허용하는 'Lot Size' 입력을 확인할 수 있습니다. 거래당 $100 또는 계정 잔액의 비율을 위험에 빠뜨리는 값을 입력할 수 있도록 이를 수정해야 합니다.

MetaEditor로 다시 전환하면 '입력' 섹션 아래에 동적 로트 크기 입력이 추가됩니다. 'Magic Number' 뒤에 여백을 만들고 'Lot Mode Enum'이라는 열거형(enum)을 정의합니다. 이 enum에는 'Fixed', 'Money' 및 'Percent of Account'의 세 가지 옵션이 있습니다. 이렇게 하면 원하는 로트 모드를 쉽게 선택할 수 있습니다. 가독성을 높이기 위해 각 옵션에 대한 주석을 제공하십시오.

다음으로 이 열거형을 입력으로 사용합니다. 예를 들어 'Lot Mode Enum' 유형으로 'input'을 정의하고 이름을 'Input Lot Mode'로 지정합니다. 기본값을 'Lot Mode Fixed'로 설정하고 이 입력의 목적을 설명하는 설명을 추가합니다.

코드를 컴파일하고 전략 테스터에 어떻게 나타나는지 확인합니다. '고정', '돈 기준 로트' 및 '계좌 비율 기준 로트' 중에서 선택할 수 있는 '로트 모드' 드롭다운 메뉴가 표시됩니다.

이제 선택한 로트 모드에 따라 다른 값을 수용하도록 '로트 크기' 입력을 수정하겠습니다. 입력 유형을 'double'로 변경하고 'Lot/Money/Percent' 옵션을 반영하도록 주석을 수정합니다. 코드를 다시 컴파일하고 전략 테스터를 확인하여 변경 사항이 반영되었는지 확인하십시오.

사용자 입력의 유효성을 검사하기 위해 'CheckInput' 함수를 수정합니다. 입력이 허용 가능한 범위 내에 있는지 확인하기 위해 각 로트 모드 옵션에 대한 검사를 추가합니다. '고정' 로트 모드의 경우 로트 크기는 0 이상이어야 하며 특정 제한(예: 10 로트)을 초과하지 않아야 합니다. 이러한 조건이 충족되지 않으면 적절한 오류 메시지를 표시합니다. '돈' 및 '계정 비율' 로트 모드에 대해 이 과정을 반복하고 그에 따라 한도를 조정합니다. 또한 이 두 로트 모드 중 하나를 선택한 경우 손절매가 활성화되어 있는지 확인해야 합니다.

MQL5에서 동적 로트 크기 계산을 구현하는 것과 관련된 단계에 대한 간결한 요약:

  1. 거래 전략에 대한 최소 및 최대 허용 로트 크기를 결정하십시오.
  2. 로트가 변경될 수 있는 증분을 나타내는 원하는 로트 단계 크기를 정의합니다.
  3. 거래의 손절매 거리를 계산합니다.
  4. 손절매 거리를 사용하여 초기 로트 크기를 계산합니다.
  5. 계산된 로트 크기가 최소 허용 값 미만인지 확인하고 필요한 경우 조정합니다.
  6. 계산된 로트 크기가 최대 허용 값을 초과하는지 확인하고 필요한 경우 조정하십시오.
  7. 계산된 로트 크기가 유효한 단계 크기인지 확인하고 필요한 경우 가장 가까운 유효한 단계 크기로 조정합니다.
  8. 최종 계산된 로트 크기를 반환합니다.
  9. 계산된 로트 크기를 사용하여 거래를 시작하십시오.

이 단계를 따르면 원하는 거래당 위험과 거래 전략의 제약에 따라 로트 크기가 동적으로 계산되도록 할 수 있습니다.

Dynamic position sizing in mql5 | MT5 programming
Dynamic position sizing in mql5 | MT5 programming
  • 2022.12.18
  • www.youtube.com
Today I will show you how to code dynamic position sizing for Metatrader 5 in mql5. We create two functions to calculate a dynamic position size for any Expe...
 

mql5의 후행 손절매 | MT5 프로그래밍



mql5의 후행 손절매 | MT5 프로그래밍

오늘은 MQL5에서 전문 어드바이저에게 트레이닝 스톱로스를 추가하는 방법을 단계별로 안내해드리겠습니다. 이 비디오가 끝날 때까지 백 테스트를 수행하여 거래 손절매로 전략을 향상시킬 수 있는지 평가할 것입니다. 시작하겠습니다.

코딩을 시작하기 전에 거래 정지 손실의 기본 개념을 이해합시다. 특정 가격으로 포지션을 입력한다고 상상해보십시오. 처음에는 정지 손실이 특정 수준으로 설정됩니다. 가격이 우리에게 유리하게 움직이면 우리는 항상 같은 거리를 유지하면서 가격 뒤에서 손절매를 추적합니다. 가격이 되돌리면 손절매가 그대로 유지됩니다. 가격이 우리의 방향으로 계속 이동함에 따라 우리는 손절매를 계속 추적합니다. 결국 가격이 반전되어 우리의 포지션이 중단될 수 있습니다. 주요 아이디어는 중요한 시장 추세에서 이익을 얻고 추세가 끝나면 포지션을 종료하는 것입니다.

이제 MetaEditor로 전환하여 코딩을 시작하겠습니다. 이를 위해 전문 고문을 사용할 수 있지만 이 비디오에서는 이전 비디오에서 코딩한 동적 로트 크기의 "타임라인 GA"를 사용합니다. 파일을 열고 "Stop Loss"라는 새로운 전문 고문으로 저장합니다. 모든 것이 오류가 없도록 코드를 컴파일하십시오.

전문 고문에게 거래 손절매를 추가하려면 몇 가지 단계를 따라야 합니다. 먼저 후행 손절매에 대한 추가 입력을 추가해 보겠습니다. 입력 섹션 내에서 "EnableTrailingStopLoss"라는 부울 입력 변수를 추가하고 기본값을 "false"로 설정합니다. 이 입력을 통해 거래 손절매를 활성화 또는 비활성화할 수 있습니다. 코드를 컴파일하여 변경 사항을 통합합니다.

이제 MetaTrader 플랫폼으로 다시 전환하고 Strategy Tester를 엽니다. 전문가 조언자 "후행 손절매가 있는 동적 로트"를 선택하십시오. 입력 탭에서 새로 추가된 입력 "EnableTrailingStopLoss"를 찾을 수 있습니다. 거래 정지 손실을 활성화하려면 "false"에서 "true"로 전환하십시오.

다음으로 손절매를 업데이트하는 함수를 작성해 보겠습니다. "ClosePosition" 함수 앞에 이 함수를 배치합니다. 기능 내에서 먼저 거래 손절매를 활성화했는지, 해당 위치에 대한 기존 손절매가 있는지 확인합니다. 그렇지 않은 경우 진행할 필요가 없으므로 함수에서 돌아갑니다.

이제 열려 있는 모든 위치를 반복해 보겠습니다. 각 직책에 대해 전문가 고문에 속하는지 확인합니다. 포지션 유형(매수 또는 매도), 현재 손절매, 이익 실현 값을 검색합니다. 현재 가격과 기호 범위에 사용자 정의 손절매 비율을 곱하여 새 손절매를 계산합니다. 포지션 유형에 따라 손절매를 조정하십시오.

새로운 손절매로 위치를 수정하기 전에 몇 가지 확인을 수행해야 합니다. 먼저 오류를 방지하기 위해 새로운 손절매가 현재 손절매와 다른지 확인하십시오. 또한 일부 브로커는 중지 수준을 부과하여 중지 손실을 현재 가격에 너무 가깝게 설정하는 것을 방지합니다. 새로운 손절매가 손절매 수준을 고수하는지 확인하고 그렇지 않은 경우 다음 위치로 계속 진행합니다.

마지막으로 새로운 손절매와 현재 이익 실현 값으로 포지션을 수정합니다. 수정에 실패하면 발생한 문제를 나타내는 오류 메시지를 인쇄합니다. 더 이상 위치를 처리하지 않으려면 함수에서 돌아갑니다.

오류나 경고가 없도록 코드를 컴파일하십시오. 이제 업데이트 손절매 기능이 완료되었습니다.

이 기능을 Expert Advisor에 통합하려면 "OnTick" 기능 내에서 호출해야 합니다. 브레이크아웃을 확인한 후 함수 호출을 배치합니다. 이렇게 하면 수신된 각 틱에 대해 손절매가 업데이트됩니다.

마지막으로 코드를 컴파일하여 변경 사항을 확인합니다. 이제 전문 고문은 사용자 정의 매개 변수를 기반으로 손절매를 추적할 수 있습니다. 트레일링 손절매 기능을 활성화 또는 비활성화하기 위한 입력 변수를 추가했으며 오픈 포지션에 대한 손절매를 업데이트하는 기능을 구현했습니다.

이제 전문 고문의 백테스트를 진행하여 거래 중지 손실의 효과를 평가해 보겠습니다. MetaTrader 플랫폼에서 Strategy Tester를 열고 테스트를 위해 전문가 조언자 "Stop Loss"를 선택하십시오. 테스트를 위해 원하는 기호와 기간을 선택합니다.

입력 탭에서 후행 손절매 비율 및 로트 크기를 포함하여 구성할 다양한 매개변수를 찾을 수 있습니다. 기본 설정 및 거래 전략에 따라 이러한 매개 변수를 조정하십시오.

백 테스트를 시작하려면 시작 버튼을 클릭하십시오. 전문 고문은 지정된 매개 변수를 기반으로 거래를 실행하고 가격이 우리에게 유리하게 움직일 때 손절매는 동적으로 조정됩니다.

백 테스트가 완료되면 결과 및 그래프 탭에서 결과를 검토할 수 있습니다. 손익, 손실 및 기타 성과 지표에 주의를 기울여 후행 손절매가 전략에 미치는 영향을 평가하십시오.

백테스트 결과가 만족스러우면 라이브 거래 계정에서 거래 손절매와 함께 전문 고문을 사용하는 것을 고려할 수 있습니다. 그러나 거래 결정을 내리기 전에 전략의 성과를 철저히 평가하고 추가 테스트 또는 최적화를 수행하는 것이 중요합니다.

결론적으로 우리는 MQL5를 사용하여 전문가 고문에 거래 손절매를 성공적으로 추가했습니다. 가격 뒤의 손절매를 추적함으로써 우리는 호의적인 시장 추세 동안 이익을 극대화하고 추세가 역전될 때 손실을 최소화하는 것을 목표로 합니다. 실제 거래 계정에 적용하기 전에 모든 수정 사항이나 전략을 철저하게 테스트해야 합니다.

이것은 일반적인 지침이며 이러한 변경 사항을 구현하기 전에 프로그래밍 및 거래 원칙을 잘 이해하는 것이 필수적입니다. 항상 주의를 기울이고 필요한 경우 전문 재정 고문과의 상담을 고려하십시오.

Trailing stop loss in mql5 | MT5 programming
Trailing stop loss in mql5 | MT5 programming
  • 2022.12.31
  • www.youtube.com
Today I will show you how to code a trailing stop loss in mql5. You can use the same function to add a trailing stop loss to any other Expert Advisor for Met...
 

mql5에서 간단한 RSI EA 코딩 | MT5 프로그래밍



mql5에서 간단한 RSI EA 코딩 | MT5 프로그래밍

이 튜토리얼에서 Toby는 자신을 소개하고 MetaEditor를 사용하여 간단한 EA(Expert Advisor)를 코딩하는 방법을 보여주는 튜토리얼의 목표를 설명합니다. EA는 RSI 지표를 사용하여 과매도 및 과매수 조건에 따라 매수 및 매도 신호를 생성합니다. Toby는 또한 손절매, 이익실현, 역방향 신호에 대한 거래 종료 옵션이 EA에 포함될 것이라고 언급했습니다.

Toby는 MetaEditor에서 새 EA 파일을 생성하여 시작하고 기존 코드를 정리합니다. 그런 다음 매직 넘버, 로트 크기, RSI 기간, RSI 수준, 손절매, 이익실현, 역방향 신호에 대한 거래 마감 옵션과 같은 EA의 입력 매개변수를 정의합니다. 그는 이러한 입력 매개변수에 기본값을 할당하고 각각을 설명하는 주석을 추가합니다.

입력 매개변수를 정의한 후 Toby는 전역 변수 섹션 생성으로 이동합니다. 그는 RSI 표시 핸들에 대한 변수, RSI 값을 저장하기 위한 버퍼, 현재 틱을 저장하기 위한 틱 유형 변수, 포지션을 열고 닫기 위한 거래 개체, 막대당 하나의 거래만 열리도록 하기 위한 두 개의 날짜/시간 변수를 선언합니다. 그는 또한 CTrade 클래스에 액세스하는 데 필요한 #include 지시어를 포함합니다.

다음으로 Toby는 OnInit() 함수에서 입력 매개변수 유효성 검사를 구현합니다. 각 입력 매개변수가 지정된 기준을 충족하는지 확인하고 잘못된 입력이 있으면 오류 메시지를 표시합니다. 그는 Alert() 함수를 사용하여 오류 메시지를 인쇄하고 오류가 발생하면 OnInit() 함수에서 반환합니다.

입력 유효성 검사 외에도 Toby는 무역 개체에 대한 매직 넘버를 설정하고 RSI 표시기 핸들을 생성합니다. 그는 핸들 생성이 성공했는지 확인하고 실패하면 오류 메시지를 표시합니다. 또한 값 작업을 단순화하기 위해 RSI 버퍼에 대한 시리즈를 설정합니다.

OnDeinit() 함수에서 Toby는 IndicatorRelease() 함수를 사용하여 RSI 표시기를 해제하여 리소스를 확보합니다.

OnTick() 함수로 이동하여 Toby는 SymbolInfoTick() 함수를 사용하여 현재 틱을 가져오는 것으로 시작합니다. 그는 틱 검색이 성공했는지 확인하고 실패하면 오류 메시지를 표시합니다. 그는 향후 사용을 위해 현재 틱의 요청 및 입찰 가격을 전역 변수 currentTick에 할당합니다.

다음으로 Toby는 CopyBuffer() 함수를 사용하여 RSI 표시기 값을 검색합니다. 그는 값을 rsiValues라는 변수에 할당하고 검색이 성공했는지 확인합니다. 그는 추가 분석을 위해 두 개의 RSI 값을 버퍼에 저장합니다.

필요한 데이터가 검색되면 Toby는 이제 OnTick() 함수에서 거래 논리를 구현할 수 있습니다. 다만, 본문에 제공된 코드가 잘려서 나머지 내용이 빠져있습니다.

이 자습서에서는 입력 매개 변수 정의, 입력 유효성 검사, 전역 변수 선언, RSI 표시기 처리 및 현재 틱 검색을 포함하여 EA의 초기 설정을 다룹니다. 튜토리얼은 후속 단계에서 거래 논리를 구현하기 위한 기반을 설정합니다.

Code a simple RSI EA in mql5 | MT5 Programming
Code a simple RSI EA in mql5 | MT5 Programming
  • 2023.01.08
  • www.youtube.com
Today I will show you how to code a simple RSI EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Expe...
 

mql5의 놀라운 RSI 거래 봇! | MT5 프로그래밍



mql5의 놀라운 RSI 거래 봇! | MT5 프로그래밍

안녕하세요, 토비입니다. 오늘은 승률 100% 전략을 코딩하는 방법을 알려드리겠습니다. 이 자습서에서는 기존 EA(Expert Advisor)를 수정하고 RSI 지표에 필터를 추가합니다. 코딩 과정을 단계별로 안내해 드리겠습니다. 시작하자!

1단계: 전략 설정 MetaEditor에서 작업할 것입니다. 이전 비디오에서 만든 EA를 엽니다. 아직 못 보신 분들은 참고하시라고 링크 걸어드립니다. "RSI_MA_Filter_EA"와 같은 새 이름으로 파일을 저장합니다.

2단계: 입력 수정 필터를 구현하려면 이동 평균 기간 입력을 추가해야 합니다. 이동 평균이 실행되는 시간 프레임에 대한 입력도 포함합니다. 손절매, 이익실현, 반대 신호 입력은 그대로 유지하겠습니다.

3단계: 전역 변수 조정 전역 변수 섹션에서 이동 평균과 구별하기 위해 RSI 표시기의 핸들 및 버퍼 이름을 바꿔야 합니다. 이동 평균에 대한 핸들과 버퍼를 추가합니다. 또한 시가 매수 및 시가 매도와 관련된 불필요한 변수를 제거할 수 있습니다.

4단계: onInit 함수 변경 onInit 함수에서 이동 평균 기간 입력에 대한 검사를 추가합니다. 또한 종가 대신 시가를 사용하도록 RSI 핸들을 수정합니다. 그런 다음 이동 평균 지표에 대한 핸들과 버퍼를 생성합니다.

5단계: Untick 함수 업데이트 untick 함수 내에서 먼저 현재 틱이 새로운 바 오픈 틱인지 확인합니다. 그렇지 않은 경우 돌아가서 다음 막대 열림 틱을 기다립니다. 이 검사를 수행하기 위해 사용자 지정 함수를 추가합니다. 그런 다음 이동 평균 값을 검색하여 버퍼에 저장합니다. 또한 이동 평균 필터를 포함하도록 매수 및 매도 포지션을 여는 조건을 조정할 것입니다.

6단계: 컴파일 및 테스트 필요한 모든 변경을 수행한 후 코드를 컴파일하여 오류를 확인합니다. 모든 것이 성공적으로 컴파일되면 전략 테스터에서 EA 테스트를 진행할 수 있습니다. 2012년부터 현재까지의 과거 데이터를 사용하여 시각적 테스트를 실행하고 RSI 및 이동 평균 기간, 손절매, 이익실현, 반대 신호에서 거래를 마감하는 옵션에 대한 적절한 입력을 선택합니다.

이 자습서를 따라 100% 승률로 전략을 코딩하는 방법을 배웠습니다. 기존 EA를 수정하고 RSI 표시기에 이동 평균 필터를 추가했습니다. 파일을 저장하고 오류 없이 컴파일하십시오. 이제 전략 테스터를 사용하여 MetaTrader 5 플랫폼에서 전략을 테스트할 수 있습니다. 미래의 코딩 노력에 행운을 빕니다!

Amazing RSI trading bot in mql5! | MT5 programming
Amazing RSI trading bot in mql5! | MT5 programming
  • 2023.01.15
  • www.youtube.com
Today I will show you how to code a RSI trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Ex...
 

Donchian 채널 맞춤 지표 EA | MT5 프로그래밍



Donchian 채널 맞춤 지표 EA | MT5 프로그래밍

이봐, 토비야. 오늘은 MQL5에서 커스텀 인디케이터를 코딩하는 방법을 보여드리겠습니다. 우리는 Donchian 채널 지표를 만들고 나중에 이를 사용하여 수익성 있는 EA(Expert Advisor)를 개발할 것입니다. EA가 준비되면 몇 가지 백 테스트를 실행하여 성능을 평가합니다. 결과에서 볼 수 있듯이 전략은 매우 잘 수행됩니다. 시작하자!

이제 Strategy Tester에서 결과를 분석해 보겠습니다. Donchian Channel Expert Advisor는 유망한 결과를 보여줍니다. 따라서 첫 번째 단계는 전략을 정의하는 것입니다. 사용자 지정 Donchian 채널 표시기를 코딩하고 이를 사용하여 Expert Advisor를 생성합니다. 차트의 기본 전략 아이디어를 요약해 보겠습니다.

파란색 선은 이 비디오에서 코딩할 Donchian 채널 표시기를 나타냅니다. Donchian 채널은 이전 n-바의 최고 최고 및 최저 최저를 표시합니다. 많은 거래자들은 Donchian 채널을 사용하여 가격이 상위 밴드 위로 교차할 때 매수 거래에 들어가는 브레이크아웃 전략을 개발합니다. 그러나 이 EA에서는 반대 접근 방식을 살펴보겠습니다. 가격이 Donchian 채널의 상단 밴드 위로 교차할 때마다 매도 거래를 할 것입니다. 마찬가지로 가격이 Donchian 채널의 하단 밴드 아래로 교차하면 매수 포지션을 취합니다. 또한 포인트 또는 채널의 비율을 기준으로 손절매를 설정합니다. 또한 채널 크기를 고려하기 위해 Donchian 채널 EA에 필터를 추가할 수 있습니다.

이제 메타 편집기로 이동하여 맞춤형 Donchian 채널 표시기 코딩을 시작하겠습니다.

메타 편집기에서 새 사용자 지정 표시기 파일을 생성하여 시작하겠습니다. 불필요한 주석을 제거하고 대괄호를 정렬하여 코드를 약간 정리합니다. 다음으로 지표의 속성을 정의합니다. 별도의 창이 아닌 기본 차트 창에 표시되도록 지정합니다. 또한 인디케이터가 가질 버퍼 및 플롯의 수를 선언합니다(이 경우에는 2개).

계속해서 사용자 지정 지표에 대한 입력을 정의합니다. 이러한 입력을 통해 사용자는 지표를 차트에 적용할 때 지표를 사용자 정의할 수 있습니다. Donchian 채널의 기간, 채널의 오프셋(백분율) 및 채널 색상에 대한 입력을 생성합니다.

코드를 컴파일한 후 지표에 필요한 변수를 정의하는 전역 변수 섹션으로 이동합니다. Donchian 채널의 상한 및 하한 값에 대한 버퍼와 상한 및 하한 값을 저장할 추가 변수와 첫 번째 막대 인덱스를 생성합니다.

OnInit 함수에서 버퍼를 초기화하고 차트에서 지표를 식별하는 데 사용할 지표 약식 이름을 설정합니다.

마지막으로 OnCalculate 함수에서 Donchian 채널 지표에 대한 계산을 수행합니다. 차트에 진행하기에 충분한 막대가 있는지 확인합니다. 그렇지 않으면 0을 반환합니다. 그렇지 않으면 시가를 사용하여 각 막대의 상한값과 하한값을 계산합니다. 이 값을 해당 버퍼에 저장합니다.

코드가 오류나 경고 없이 컴파일되면 사용자 지정 표시기를 테스트할 수 있습니다. 차트를 열고 네비게이터로 이동하여 내 Donchian 채널 지표를 찾습니다. 차트에 끌어다 놓습니다. 표시기 설정에서 원하는 기간, 오프셋 및 색상을 지정합니다.

Donchian channel custom Indicator EA | MT5 programming
Donchian channel custom Indicator EA | MT5 programming
  • 2023.01.29
  • www.youtube.com
Today I will show you how to code a Donchian channel custom indicator EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a...
 

mql5의 멋진 Donchian 채널 거래 봇! | MT5 프로그래밍



mql5의 멋진 Donchian 채널 거래 봇! | MT5 프로그래밍

사용자 지정 지표를 차트에 추가하면 Donchian 채널이 파란색 선으로 표시되는 것을 볼 수 있습니다. Donchian 채널 표시기는 이전 'n' 막대의 최고 최고 및 최저 최저를 보여줍니다. 일반적으로 가격이 Donchian 채널의 상단 밴드 위로 교차할 때 트레이더가 구매 거래에 진입하고 하단 밴드 아래로 교차할 때 거래를 매도하는 브레이크아웃 전략을 만드는 데 사용됩니다.

그러나 이번 EA(Expert Advisor)에서는 정반대의 접근 방식을 테스트하고자 합니다. 가격이 상단 밴드 위로 교차할 때 매수하는 대신 우리는 매도하고 그 반대도 마찬가지입니다. 따라서 가격이 Donchian Channel의 상단 밴드 위로 교차할 때마다 매도 포지션을 취하고 하단 밴드 아래로 교차하면 매수 포지션을 취합니다.

또한 각 거래에 대해 포인트 또는 채널의 백분율로 손절매를 설정할 것입니다. 채널 크기에 따라 Donchian 채널 EA에 필터를 추가하는 것도 고려할 수 있습니다. 이제 MetaEditor로 이동하여 맞춤형 Donchian 채널 표시기 코딩을 시작하겠습니다.

MetaEditor에서 왼쪽 상단 모서리에 있는 "새로 만들기"를 클릭하고 "사용자 지정 표시기"를 선택한 후 "다음"을 클릭하여 새 사용자 지정 표시기 파일을 만듭니다. 파일 이름을 "MyDonchianChannel"로 지정하고 "다음" 및 "마침"을 클릭하여 프로세스를 완료합니다. 파일이 생성되면 불필요한 주석을 제거하고 대괄호를 정렬하여 코드를 정리합니다. 다음으로 코드를 컴파일하여 오류나 경고가 있는지 확인합니다.

이제 사용자 지정 표시기의 속성을 정의하겠습니다. 기본 차트 창에 표시되기를 원하므로 "indicator_chart_window" 속성을 true로 설정합니다. 또한 표시기에 대한 버퍼 및 플롯의 수를 정의해야 합니다. 두 줄(위쪽과 아래쪽)이 있으므로 "indicator_buffers"를 2로, "indicator_plots"를 2로 설정합니다.

다음으로 사용자 지정 지표에 대한 입력 매개변수를 정의합니다. Donchian 채널의 기간, 오프셋 비율 및 표시선 색상에 대한 입력이 필요합니다. 적절한 유형(주기 및 오프셋의 경우 정수, 색상의 경우 색상)을 사용하여 이러한 입력을 정의하고 각 입력에 대한 기본값과 설명을 설정합니다.

코드를 다시 컴파일하여 오류나 경고가 없는지 확인하십시오.

이제 커스텀 인디케이터의 "onCalculate" 함수 코딩으로 넘어가겠습니다. 먼저 차트의 막대 수가 입력 기간에 1을 더한 값보다 작은지 확인합니다. 그렇다면 지표를 계산할 막대가 충분하지 않으므로 0으로 반환합니다. 다음으로 Donchian Channel 계산을 시작하려는 첫 번째 막대를 나타내는 "first" 변수를 설정합니다. 이전 계산을 수행하지 않은 경우(previous_calculated가 0) 입력 기간에 "first"를 설정합니다. 그렇지 않으면 previous_calculated 빼기 1로 설정합니다. 이제 for 루프를 사용하여 막대를 반복해야 합니다. "첫 번째" 막대에서 루프를 시작하고 현재 막대가 차트의 총 막대 수보다 적을 때까지 계속합니다. 각 루프 반복이 끝날 때 막대 카운터를 늘립니다.

루프 내에서 각 막대의 시가를 사용하여 Donchian 채널의 상한값과 하한값을 계산합니다. 이 값을 각각 "상위" 및 "하위" 변수에 저장합니다.

오프셋을 계산하려면 상위 값에서 하위 값을 빼고 입력 오프셋을 100으로 나눈 값을 곱합니다. 이렇게 하면 오프셋 값이 포인트 또는 채널의 백분율로 표시됩니다. 마지막으로 버퍼 인덱스와 바 카운터를 사용하여 계산된 값을 해당 버퍼에 저장합니다. 버퍼에 값을 계산하고 저장한 후 각 플롯에 대한 표시기 레이블을 설정해야 합니다. 이러한 레이블은 지표의 속성 창에 표시됩니다.

SetIndexLabel() 함수를 사용하여 버퍼 인덱스와 레이블을 매개변수로 전달하여 상위 및 하위 플롯에 대한 레이블을 할당합니다. 다음으로 SetIndexStyle() 및 SetIndexColor() 함수를 사용하여 표시선의 색상을 설정합니다. 버퍼 색인, 선 스타일(예: STYLE_SOLID) 및 각 선에 대해 원하는 색상을 지정합니다.

마지막으로 표시기를 시각적으로 더 매력적으로 만들기 위해 몇 가지 추가 코드를 추가합니다. indicator_shortname 속성을 빈 문자열로 설정하여 표시기의 이름을 숨길 수 있습니다. 또한 ObjectCreate() 및 ObjectSetText() 함수를 사용하여 상단 밴드의 현재 값으로 차트 레이블을 추가할 수 있습니다.

코드를 다시 한 번 컴파일하여 오류나 경고가 없는지 확인하십시오.

축하해요! 사용자 지정 Donchian 채널 표시기를 성공적으로 코딩했습니다. 이제 Expert Advisor에서 이 지표를 사용하여 거래 전략을 구현할 수 있습니다.

다음 단계에서는 탈주 전략에 따라 거래를 실행하기 위해 Donchian 채널 지표를 활용할 EA(Expert Advisor) 코딩으로 넘어갈 것입니다. MetaEditor에서 새 파일을 열고 이름을 "DonchianChannelEA"로 지정한 다음 "Expert Advisor" 옵션을 선택합니다. "다음" 및 "마침"을 클릭하여 파일을 생성합니다. 불필요한 주석을 제거하고 대괄호를 정렬하여 초기 코드를 정리합니다.

먼저 EA에 대한 입력 매개변수를 정의합니다. 여기에는 로트 크기, 손절매, 이익 실현, Donchian 채널의 기간 및 오프셋이 포함됩니다. 적절한 유형을 사용하여 이러한 입력을 정의하고 각 입력에 대한 기본값과 설명을 설정합니다. 다음으로 OnInit() 함수를 코딩합니다. 이 함수 내에서 필요한 매개변수로 iCustom() 함수를 호출하여 Donchian 채널 표시기를 초기화합니다.

지표 핸들, 상위 대역 값 및 하위 대역 값을 저장할 변수를 생성합니다. ArraySetAsSeries() 함수를 사용하여 배열을 시리즈로 설정하여 올바른 인덱싱을 보장합니다. 이제 거래 논리를 처리할 기본 OnTick() 함수 코딩으로 이동하겠습니다.

Donchian 채널을 계산하기에 충분한 막대가 있는지 확인하여 시작하십시오. 그렇지 않은 경우 0으로 반환합니다. CopyBuffer() 함수를 사용하여 표시기에서 현재 상위 및 하위 밴드 값을 가져옵니다. 이제 매수 신호를 확인하겠습니다. 가격이 상단 밴드 위로 교차하면 OrderSend() 함수를 사용하여 매도 포지션을 엽니다. 적절한 주문 유형(OP_SELL), 로트 크기, 손절매 및 이익실현 수준을 설정합니다. OrderSend() 함수에서 반환된 잠재적 오류를 처리해야 합니다.

마찬가지로 매도 신호를 확인하십시오. 가격이 하단 밴드 아래로 교차하면 OrderSend() 함수를 사용하여 매수 포지션을 엽니다. 적절한 주문 유형(OP_BUY), 로트 크기, 손절매 및 이익실현 수준을 설정합니다.

오류나 경고가 없도록 코드를 컴파일하십시오.

그게 다야! Donchian Channel Expert Advisor에 대한 코딩을 완료했습니다. 이제 데모 계정에서 EA를 테스트하거나 과거 데이터를 사용하여 백테스트하여 성능을 평가할 수 있습니다. EA를 철저히 테스트하고 실제 거래 계정에서 사용하기 전에 위험 관리 기술 구현을 고려하십시오. 제공된 코드는 기본 구현이며 특정 거래 요구 사항에 맞게 추가 수정 또는 개선이 필요할 수 있습니다.

Awesome Donchian Channel trading bot in mql5! | MT5 programming
Awesome Donchian Channel trading bot in mql5! | MT5 programming
  • 2023.02.02
  • www.youtube.com
Today I will show you how to code a Donchian channel trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully w...
사유: