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

 

mql5의 놀라운 고/저 브레이크 아웃 트레이딩 봇! | 1 부



mql5의 놀라운 고/저 브레이크 아웃 트레이딩 봇! | 1 부

Toby, 이 비디오에서 저는 최고점과 최저점을 사용하여 수익성 있는 브레이크아웃 전략을 만드는 것과 관련된 새로운 프로젝트를 소개하고 싶습니다. 주요 아이디어는 현재 기호의 최고 및 최저 가격을 식별하고 이러한 수준을 사용하여 잠재적 브레이크 포인트를 결정하는 것입니다. 이것이 어떻게 작동하는지 이해하기 위해 차트를 살펴보겠습니다.

시작하려면 마지막 n개의 막대를 관찰하고 가장 높은 가격과 가장 낮은 가격을 식별합니다. 가격이 고가를 돌파하면 매수 포지션을 취합니다. 반대로 가격이 저점 아래로 떨어지면 매도 포지션을 취합니다. 간단한 개념이지만 손절매를 추가하고 포인트로 이익을 얻음으로써 이를 향상시킬 것입니다. 또한 필터를 구현하여 전략을 개선하고 모든 최고점과 최저점에서의 거래를 피할 것입니다.

개념을 증명할 거래 기회를 기다리자. 여기에서 우리는 가격이 낮은 수준 아래로 떨어졌기 때문에 매도 포지션을 가지고 있고 우리는 이익으로 거래를 마감했습니다. 이는 우리 전략의 기본 기반 역할을 하며 추가 구성 요소를 통합하여 이를 더욱 개선할 수 있습니다.

이제 메타 편집기로 전환하고 코딩을 시작하겠습니다. YouTube 폴더에 새 파일을 만들고 이름을 "Toby's Breakout EA"로 지정합니다. 파일에서 EA에 필요한 입력을 정의합니다. 여기에는 매직 넘버, 로트 크기, 고려할 막대 수, 손절매, 이익실현이 포함됩니다. 적절한 기본값을 설정하고 각 입력을 설명하는 주석을 제공합니다.

다음으로 onInit 함수로 이동하여 사용자 입력이 유효한지 확인합니다. 이 유효성 검사를 처리하기 위해 checkInputs라는 별도의 함수를 만들 것입니다. 입력이 잘못된 경우 오류 메시지가 표시되고 EA가 시작되지 않습니다.

onInit 함수 내에서 제공된 입력을 사용하여 거래 개체의 매직 넘버도 설정합니다. 이렇게 하면 나중에 EA에서 열린 포지션을 필터링하고 관리할 수 있습니다.

이제 onTick 함수를 살펴보겠습니다. 현재 틱과 이전 틱 값을 저장하는 것으로 시작하겠습니다. 이를 통해 가격 움직임을 추적하고 중요한 수준을 넘었는지 판단할 수 있습니다. SymbolInfoTick 함수를 사용하여 현재 틱을 검색하고 오류가 발생하면 오류 메시지를 표시하고 EA를 중지합니다.

나중에 countOpenPositions, normalizePrice 및 closePositions의 세 가지 사용자 지정 함수를 포함합니다. 이러한 기능은 포지션 관리, 오픈 포지션 수 계산, 가격 정상화, 필요할 때 포지션 마감에 도움이 됩니다.

onTick 기능으로 돌아가서 매수 및 매도에 대한 열린 포지션을 계산하는 것으로 시작합니다. 이 과정에서 오류가 발생하면 사용자 지정 함수에서 이미 처리했기 때문에 오류 메시지를 표시하지 않고 EA를 중지합니다. 그런 다음 열려 있는 구매 포지션이 있는지, 높은 수준이 0이 아닌지 확인합니다. 이것은 우리가 높은 수준을 설정했고 기존 구매 포지션이 없음을 확인합니다.

여기에서 돌파 전략의 논리를 계속 코딩할 수 있습니다. 판매 위치와 낮은 수준에 대해 유사한 검사를 구현할 것입니다. 이러한 if 문은 각 수준의 돌파에 따라 매수 또는 매도 포지션을 취할지 여부를 결정하는 데 도움이 됩니다.

기본 구조가 마련되면 더 많은 구성 요소와 필터를 추가하여 전략을 더욱 강화할 수 있습니다. 여기에는 거래 신호를 개선하고 전반적인 성과를 개선하기 위한 추가 입력 매개변수 및 조건이 포함될 수 있습니다.

그것은 초기 코딩 프로세스를 다룹니다. 이러한 단계를 따르면 최고점과 최저점을 기반으로 획기적인 EA를 생성할 수 있으며 이는 추가 개발 및 최적화를 위한 출발점 역할을 할 수 있습니다.

알고리즘:

  1. 먼저, 우리는 포지션을 열고 청산하고자 하는 수준(높은 수준과 낮은 수준)을 정의합니다.
  2. 오픈 매수 및 매도 포지션(count_buy 및 count_sell)의 수를 추적하기 위해 변수를 초기화합니다.
  3. 시장의 각 틱에서 입찰 및 요청 가격을 포함하여 이전 틱의 데이터를 검색합니다.
  4. 잠재적 구매 포지션을 확인하기 위해 이전 틱의 매도 가격을 높은 수준과 비교합니다. 매도 호가가 고가보다 높고 열린 매수 포지션이 없는 경우 지정된 랏 크기를 사용하여 매수 포지션을 열고 손절매를 한 후 이익을 얻습니다. count_buy 변수를 증가시키고 구매 포지션이 열렸음을 나타내는 메시지를 표시합니다.
  5. 잠재적 매도 포지션을 확인하기 위해 이전 틱의 입찰가를 낮은 수준과 비교합니다. 매수 호가가 최저가보다 낮고 오픈 매도 포지션이 없는 경우 지정된 랏 사이즈를 사용하여 매도 포지션을 오픈하고 손절매, 이익실현합니다. count_sell 변수를 증가시키고 매도 포지션이 열렸음을 나타내는 메시지를 표시합니다.
  6. 또한 필요한 경우 포지션 마감을 고려해야 합니다. 열려 있는 매수 포지션이 있고 이전 틱의 매도 가격이 높은 수준 아래로 떨어지면 모든 매수 포지션을 청산합니다. count_buy 변수를 줄이고 구매 포지션이 마감되었음을 나타내는 메시지를 표시합니다.
  7. 마찬가지로 오픈 매도 포지션이 있고 이전 틱의 매수 호가가 낮은 수준보다 높으면 모든 매도 포지션을 청산합니다. count_sell 변수를 줄이고 매도 포지션이 마감되었음을 나타내는 메시지를 표시합니다.

알고리즘은 미리 정의된 높은 수준과 낮은 수준과 관련하여 입찰 및 요청 가격을 기반으로 잠재적인 진입 및 종료 지점을 지속적으로 확인합니다. 조건이 충족되면 포지션을 열고 가격이 반대 방향으로 움직일 때 포지션을 닫습니다.

Stunning high / low breakout trading bot in mql5! | Part 1
Stunning high / low breakout trading bot in mql5! | Part 1
  • 2023.02.09
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this first part we will calculate the high and low level. Th...
 

고/저 탈주 거래 봇 mql5 | 2 부



고/저 탈주 거래 봇 mql5 | 2 부

이번 영상에서는 하이로우 코팅이 적용된 블랙 아우디 작업을 이어갑니다. 이전 세션에 대한 후속 조치로 이제 거래 로직을 통합하고 몇 가지 추가 구성 요소를 소개합니다. 먼저 포지션에 대한 손절매를 계산하겠습니다. 손절매 입력이 0이면 변수 "SL"을 0으로 설정하여 손절매가 없음을 나타냅니다. 그렇지 않으면 현재 입찰가에서 입력 손절매를 뺀 값에 포인트 값을 곱한 값으로 설정합니다.

다음으로 테이크프로핏을 계산합니다. 이익 실현 입력이 0이면 변수 "TP"를 0으로 설정합니다. 그렇지 않으면 현재 매도 가격에 입력 이익 실현에 포인트 값을 곱한 값으로 설정합니다. 일관된 가격 가치를 보장하기 위해 "정규화된 가격" 기능을 사용하여 손절매를 정상화하고 이익을 얻습니다.

거래 로직이 준비되면 이전에 cTrade 클래스를 사용하여 선언된 거래 개체를 사용하여 포지션을 엽니다. 매수 포지션의 경우 현재 기호, 랏 크기에 대한 입력 랏, 가격에 대한 현재 입찰가, 손절매에 대한 손절매 변수, 이익실현에 대한 이익실현 변수를 사용합니다. 마찬가지로 매도 포지션의 경우 현재 매도호가를 가격으로 사용합니다. 이 위치를 다른 위치와 차별화하기 위해 "High-Low Record EA" 전문 고문에 속한다는 설명을 추가합니다.

코드를 컴파일한 후 테스트를 위해 MetaTrader로 전환합니다. 시간 프레임과 기간을 지정하여 시각적 테스트를 설정했습니다. 기본 입력으로 테스트를 실행하고 높은 값과 낮은 값을 관찰합니다. "오픈 프라이스 전용" 모드를 사용하면 고가 또는 저가를 넘을 때 포지션이 열리는 것을 볼 수 있습니다. 다음 단계에서는 열린 틱에 대해서만 조치를 취하도록 EA의 틱 모드를 변경합니다. 이는 안정적인 시스템을 만들기 위한 보다 안정적이고 빠른 테스트 환경을 제공합니다.

앞으로 우리는 룩백 기간의 맨 처음이나 끝에서 극단 지점에서 거래되는 것을 방지하기 위해 인덱스 필터를 구현합니다. 필터링해야 하는 룩백 기간 내 막대의 백분율을 나타내는 "인덱스 필터"라는 입력을 도입합니다. 예를 들어 룩백 기간이 50개이고 인덱스 필터가 10으로 설정된 경우 처음 5개 또는 마지막 5개 막대 내의 극단 지점이 필터링됩니다. 이 범위를 시각화하기 위해 차트에 직사각형을 그립니다. 필요한 전역 변수를 추가하고 초기 값을 설정하고 "OnTick" 함수에서 변경하여 "I Highest" 및 "I Lowest" 함수를 사용하여 높은 인덱스와 낮은 인덱스를 계산합니다.

또한 "Index Filter" 입력을 포함하고 해당 값의 유효성을 검사하도록 "CheckInputs" 함수를 업데이트합니다. 또한 인덱스 및 필터 설정을 기반으로 극단 지점을 필터링해야 하는지 확인하는 "CheckIndexFilter"라는 새 함수를 만듭니다. 구현을 완료하기 위해 코드를 컴파일하고 시각적 테스트를 진행합니다. 인덱스 필터에 따라 극단 지점이 정의된 범위 내에 있을 때만 포지션이 열리는지 확인합니다. 다음 세그먼트에서는 요구 사항에 더 잘 맞도록 EA의 틱 모드를 수정할 계획입니다. 오픈 틱 모드로 전환하여 EA가 오픈 틱에서만 독점적으로 작동할 수 있도록 하여 시스템 안정성과 효율성을 향상시킬 것입니다.

틱 모드를 오픈 틱 모드로 수정한 후 EA에 대한 추가 개선 사항을 진행합니다. 개선 사항 중 하나는 시간 필터를 추가하는 것입니다. 시간 필터를 구현하기 위해 "시작 시간" 및 "종료 시간"이라는 두 가지 새로운 입력을 도입했습니다. 이러한 입력을 통해 거래가 허용되어야 하는 시간 범위를 지정할 수 있습니다. 예를 들어 시작 시간을 8시로 설정하고 종료 시간을 18시로 설정하면 EA는 오전 8시에서 오후 6시 사이에만 포지션을 엽니다. 시간 필터를 통합하기 위해 "CheckInputs" 기능을 업데이트하여 새 입력의 유효성을 검사하고 시작 시간이 종료 시간보다 짧은지 확인합니다. 또한 위치를 열기 전에 지정된 범위에 대해 현재 시간을 확인하도록 "OnTick" 기능을 수정합니다.

시간 필터를 적용한 상태에서 코드를 컴파일하고 시각적 테스트를 실행하여 지정된 시간 범위 내에서만 포지션이 열리는지 확인합니다. 다음으로 확산 필터를 추가하는 또 다른 개선 사항으로 이동합니다. 스프레드 필터를 사용하면 최대 허용 스프레드를 정의할 수 있으며 그 범위를 초과하면 EA가 포지션을 열지 않습니다. 확산 필터를 구현하기 위해 "최대 확산"이라는 새 입력을 도입합니다. "OnTick" 기능에는 포지션을 열기 전에 현재 스프레드가 허용 범위 내에 있는지 확인하는 검사가 포함됩니다.

또한 "CheckInputs" 기능을 업데이트하여 "Max Spread" 입력의 유효성을 검사하고 양수 값인지 확인합니다. 스프레드 필터가 구현되면 코드를 컴파일하고 시각적 테스트를 수행하여 스프레드가 지정된 최대값 미만일 때만 포지션이 열리는지 확인합니다. 마지막으로 차트에서 열린 포지션의 수를 추적하고 표시하는 기능을 소개합니다. "Position Count"라는 새로운 전역 변수를 생성하고 0으로 초기화합니다. "OnTick" 기능에서 포지션이 열릴 때마다 포지션 카운트를 증가시킵니다.

차트에 포지션 카운트를 표시하기 위해 "ObjectSetText" 함수를 활용하여 현재 카운트를 보여주는 텍스트 객체를 생성합니다. 각 눈금의 최신 카운트 값으로 텍스트 개체를 업데이트합니다. 코드가 컴파일되면 시각적 테스트를 실행하여 차트에 표시된 포지션 수를 관찰하고 열린 포지션의 수를 정확하게 반영하는지 확인합니다.

이러한 개선 사항을 구현하여 EA의 기능과 성능을 크게 개선했습니다. 시간 필터, 스프레드 필터 및 포지션 카운트 디스플레이는 거래 프로세스에 대한 더 나은 제어 및 가시성을 제공합니다.

다음 비디오에서는 EA의 성능을 더욱 향상시키기 위한 추가 최적화 및 미세 조정 기술을 살펴보겠습니다.

High / low breakout trading bot mql5 | Part 2
High / low breakout trading bot mql5 | Part 2
  • 2023.02.12
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this second part we will code the trade logic to open positi...
 

mql5의 멋진 촛대 패턴 EA! | 파트 3



mql5의 멋진 촛대 패턴 EA! | 파트 3

이 비디오에서 Toby는 자신을 소개하고 MetaTrader5에서 캔들스틱 패턴 EA(Expert Advisor)를 계속 개발하는 데 중점을 둘 것이라고 발표합니다. 첫 번째 백 테스트를 수행하고 결과를 얻는 데 필요한 핵심 논리를 작성하는 것이 목표입니다. Toby는 시청자가 아직 보지 않았다면 시리즈의 이전 부분을 확인하도록 권장합니다.

Toby는 메타 편집기를 열고 이전 비디오에서 중단한 부분부터 코딩을 시작합니다. 그는 이미 매수 및 매도 포지션을 열기 위한 코드를 구현했지만 이제 조건 확인을 추가해야 한다고 설명합니다. 이를 위해 Toby는 구매 및 판매 거래 모두에 대한 조건을 확인하기 위해 호출할 수 있는 사용자 지정 함수를 만들 계획입니다.

코딩 프로세스를 시작하기 전에 Toby는 기존 코드에 실수가 없는지 확인하려고 합니다. 그는 코드를 컴파일하여 오류나 경고를 확인합니다.

다음으로 Toby는 "조건 확인"이라는 사용자 지정 함수의 논리 작성을 진행합니다. 이 함수는 for 루프를 사용하여 각 조건을 반복합니다. 루프 내에서 "하나의 조건 확인"이라는 또 다른 사용자 지정 함수를 호출하여 각 개별 조건을 평가합니다.

Toby는 매수/매도 거래에 대한 매개변수와 확인할 조건의 지수를 취하는 "하나의 조건 확인" 기능을 생성합니다. 이 함수 내에서 조건이 활성인지 확인하는 것과 같은 다양한 검사가 수행됩니다. 조건이 비활성이면 함수는 관련이 없음을 나타내는 true를 반환합니다.

조건을 확인하기 위해 Toby는 막대 데이터를 가져와야 합니다. 그는 시가, 고가, 저가 및 종가를 포함하는 미리 정의된 구조인 mql rate 유형의 변수를 선언합니다. rate 배열을 시리즈로 설정하고 copy rate 함수를 사용하여 조건에 필요한 데이터를 검색합니다.

막대 데이터를 성공적으로 얻은 후 Toby는 조건을 비교하고 평가하는 데 사용할 변수 A와 B의 값을 설정합니다. 값은 open, high, low, close, range, body, ratio 또는 value와 같은 조건 모드에 따라 결정됩니다. 매수 또는 매도 거래인지 여부를 고려하여 그에 따라 값이 할당됩니다.

값이 설정되면 Toby는 코드를 컴파일하여 실수나 오류가 있는지 확인합니다.

Toby는 모드 B 조건에 대한 프로세스를 반복하여 변수 및 사례에 필요한 조정을 수행합니다.

마지막으로 Toby는 코드에 실수가 없는지 확인하고 코드 논리 이해의 중요성을 강조하면서 비디오를 마무리합니다.

Awesome candlestick pattern EA in mql5! | Part 3
Awesome candlestick pattern EA in mql5! | Part 3
  • 2023.03.09
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

mql5에서 궁극의 촛대 패턴 EA를 코딩해 봅시다! | 1 부



mql5에서 궁극의 촛대 패턴 EA를 코딩해 봅시다! | 1 부

안녕하세요, Toby입니다. 이 비디오에서는 제 채널에서 새로운 EA 코딩 프로젝트를 시작합니다. 우리는 캔들스틱 패턴에 집중하고 Doji, Morning Star, Rising Star 등과 같은 다양한 패턴을 거래할 수 있는 EA를 만들 것입니다. EA에는 다양한 조건을 표시하는 패널도 있습니다. 나는 이미 EA와 몇 가지 예비 테스트를 수행했으며 결과는 특히 다른 기호에서 매우 흥미로웠습니다. 저는 이 접근법이 매우 효과적인 전략으로 이어질 수 있다고 믿습니다. 다이빙하자!

EA 코딩을 시작하기 전에 일반적인 전략 아이디어에 대해 논의해 봅시다. 진행하면서 만들려는 목표를 이해하는 것이 중요합니다. 개념을 설명하기 위해 간단한 다이어그램을 만들었습니다. 우리 EA는 각 바의 공개 가격으로 독점적으로 작업할 것입니다. 예를 들어 현재 막대(인덱스 0)와 이전 막대(인덱스 1)를 고려해 봅시다. Doji, Morning Star, Evening Star, Rising Star 등과 같은 다양한 차트 패턴 또는 캔들스틱 패턴을 거래할 수 있는 EA를 만들고 싶습니다.

이를 달성하기 위해 다른 조건을 정의합니다. 예를 들어 막대 2의 고가가 막대 1의 최고가보다 높아야 하는 조건을 설정할 수 있습니다. 또 다른 조건은 막대 3의 시가가 막대 3의 종가보다 낮아야 한다는 것입니다. 완고한 촛불. 이러한 조건을 결합하여 다음 막대가 열릴 때 매수 거래를 트리거할 수 있습니다. 매도 신호에 대해 유사한 조건을 역으로 적용할 수 있습니다.

또한 각 캔들의 시가, 고가, 저가, 종가뿐만 아니라 범위 크기 또는 몸체 크기와 같은 다른 요소도 고려하고 싶습니다. 예를 들어 본체 크기를 촛대의 전체 범위로 나누어 계산할 수 있습니다. 이 계산은 Doji 막대를 식별하는 데 도움이 될 수 있습니다. 50포인트보다 큰 신체 크기를 요구하는 것과 같이 특정 값을 설정할 수도 있습니다. 이러한 옵션을 통해 단일 EA를 사용하여 다양한 패턴을 생성하고 테스트할 수 있습니다. 흥미진진한 여행이 될 것을 약속드립니다!

이제 MetaEditor로 이동하여 코딩을 시작하겠습니다. 하지만 시작하기 전에 여러분의 피드백이 필요합니다. 이 영상이 도움이 되셨다면 오늘 밤 푹 자고 싶으시면 좋아요를 남겨주세요. 또한 다크 모드와 기본 흰색 배경 사이를 전환하는 것을 고려하고 있습니다. 귀하의 선호도에 투표할 수 있도록 설문 조사를 생성하겠습니다. 어두운 모드에서 모든 것을 올바르게 읽을 수 있는지 댓글로 알려주세요.

좋아, 코딩하자! MetaEditor에서 내 YouTube 폴더 아래에 새 EA를 만듭니다. 이름을 '캔들 패턴 EA'로 하겠습니다. 깨끗한 템플릿으로 시작하여 불필요한 주석을 제거하고 코드 구조를 구성합니다. 컴파일하고 오류가 없는지 확인한 후 다음 단계를 진행합니다.

동일한 MetaTrader 인스턴스에서 실행되는 다른 EA와의 충돌을 피하기 위해 이 EA의 고유 식별자여야 하는 매직 넘버와 같은 입력 섹션에서 몇 가지 주요 매개변수를 정의합니다. 임의의 숫자를 할당해 보겠습니다.

여기에는 초기 설정 및 입력 매개변수가 포함됩니다. 이제 다음 부분으로 넘어갈 준비가 되었습니다. 계속 지켜봐!

Let's code the ultimate candlestick pattern EA in mql5! | Part 1
Let's code the ultimate candlestick pattern EA in mql5! | Part 1
  • 2023.03.01
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. In this first part we will create the conditions for the candlestick pa...
 

mql5의 촛대 패턴 EA! | 2 부



mql5의 촛대 패턴 EA! | 2 부

오늘 비디오에서 저는 Toby입니다. MetaTrader 5에서 간단한 캔들스틱 패턴 EA(Expert Advisor) 코딩을 계속하겠습니다. 이제 이 코딩 시리즈의 두 번째 부분에 있습니다. 전략 아이디어를 더 자세히 설명했다면 여기에서 해당 비디오에 대한 링크를 찾을 수 있습니다. 코딩을 시작하기 전에 동영상 녹화 시 선호하는 색상 테마에 대해 YouTube에서 최근 실시한 설문 조사 결과를 공유하고 싶습니다. 140표 중 대다수(90명)가 어두운 배경을 선호했고 50명은 흰색 배경을 선호했습니다. 저는 개인적으로 어두운 배경이 눈에 더 편하고 제 자신의 EA를 녹음할 때도 사용합니다.

언급하고 싶은 또 다른 사항은 최근에 MQL5용 Visual Studio Code를 설정했다는 것입니다. 코딩 프로젝트에 Visual Studio Code를 사용하는 데 관심이 있는 경우 댓글로 알려주십시오. 이에 대한 동영상을 만들겠습니다.

이제 EA 코딩으로 돌아가 보겠습니다. 이전 비디오에서는 조건 1에 대한 입력을 중단했습니다. 이제 다른 조건을 만들고 조건 2에 대한 입력을 추가합니다. 조건 1에 대한 섹션을 복사하고 이름을 조건 2로 변경하여 입력 변수에 필요한 사항을 변경합니다. 지금은 두 가지 조건으로 간단하게 유지하지만 나중에 더 추가할 수 있습니다. 이러한 변경을 수행한 후 코드를 컴파일하여 오류나 경고가 없는지 확인합니다.

일부 시청자는 가독성을 높이기 위해 글꼴 크기를 늘려달라고 요청했습니다. 화면에서 더 많은 코드를 보는 것을 선호하지만 더 큰 글꼴 크기가 필요하다는 것을 이해합니다. 그러나 지금은 현재 글꼴 크기를 고수하겠습니다. 필요한 경우 나중에 조정할 수 있습니다.

다음으로 전역 변수 섹션에서 생성한 조건 배열에 입력을 연결합니다. 이를 수행하기 위해 "setInputs"라는 사용자 정의 함수를 생성합니다. 이 함수는 입력을 확인하기 전에 호출됩니다. setInputs 함수에 대한 코드를 작성한 후 코드를 다시 컴파일하여 정확성을 확인합니다.

계속해서 입력을 확인하여 필수 기준을 충족하는지 확인합니다. 각 입력에 대해 if 문을 사용하여 필요한 검사를 수행합니다. 잘못된 입력이 발견되면 사용자에게 경고를 표시하고 checkInputs 함수에서 false를 반환합니다. 매직 넘버를 확인하는 것으로 시작하여 0보다 작거나 같지 않은지 확인합니다. 그런 다음 로트 크기 확인, 손절매, 이익실현 입력을 진행합니다. 또한 나중에 다룰 조건 배열에 대한 검사를 추가해야 합니다.

코드를 모듈식으로 만들기 위해 setInputs 함수를 사용하여 거래 개체의 매직 넘버를 설정합니다. 이는 포지션을 찾거나 무역 관련 업무를 처리할 때 도움이 될 것입니다. 이렇게 변경한 후 코드를 다시 컴파일하여 정확성을 확인합니다.

이제 EA의 주요 동작이 이루어지는 onTick 기능으로 넘어가겠습니다. 먼저 isNewBar 함수를 사용하여 현재 틱이 바 오픈 틱인지 확인합니다. 바 오픈 틱이 아님을 나타내는 false를 반환하면 단순히 반환하고 다음 틱을 기다립니다.

다음으로 현재 기호의 눈금을 얻습니다. 이렇게 하면 입찰, 요청 및 기타 진드기 관련 정보에 액세스할 수 있습니다. SymbolInfoTick 함수를 사용하고 결과를 변수에 저장합니다. 이 작업이 실패하면 실패를 나타내는 메시지를 표시하고 onTick 함수에서 반환합니다.

그런 다음 countOpenPositions 함수를 사용하여 오픈 포지션을 계산합니다. 이를 통해 현재 시점의 공개 매수 및 매도 포지션 수를 알 수 있습니다. 이 작업이 실패하면 실패를 나타내는 오류 메시지를 표시하고 onTick 함수에서 반환합니다.

오픈 포지션 수를 얻은 후 오픈 포지션이 있는지 확인합니다. 있는 경우 열려 있는 위치의 수를 나타내는 메시지를 표시합니다. 그렇지 않으면 다음 단계로 진행합니다.

이제 for 루프를 사용하여 각 열린 위치를 반복합니다. 루프 내에서 PositionGetTicket 함수를 사용하여 위치 정보를 검색합니다. 티켓 번호를 변수에 저장하고 디버깅 목적으로 티켓 번호와 함께 메시지를 표시합니다.

다음으로 PositionGetInteger 함수와 POSITION_TYPE 속성을 사용하여 포지션의 유형(매수 또는 매도)을 확인합니다. 포지션이 구매 포지션인 경우 구매 포지션에 필요한 코드를 실행합니다. 마찬가지로 포지션이 매도 포지션인 경우 매도 포지션에 대한 코드를 실행합니다.

매수 포지션의 경우 현재 입찰가가 해당 포지션의 손절매 수준보다 낮은지 확인합니다. 그렇다면 손절가 수준에 도달했음을 나타내는 메시지를 표시하고 PositionClose 기능을 사용하여 위치를 닫습니다.

마찬가지로 매도 포지션의 경우 현재 매도 가격이 포지션의 손절매 수준보다 높은지 확인합니다. 그렇다면 손절가 수준에 도달했음을 나타내는 메시지를 표시하고 위치를 닫습니다.

필요한 포지션을 모두 닫은 후 다음 단계로 넘어가서 조건을 확인하여 새 포지션을 열어야 하는지 결정합니다. 이를 위해 checkConditions 함수를 사용합니다. checkConditions 함수가 모든 조건이 충족되었음을 나타내는 true를 반환하면 필요한 코드를 실행하여 새 위치를 엽니다. 그렇지 않으면 다음 틱으로 계속 진행합니다.

새 포지션을 여는 코드에서 볼륨, 손절매, 이익실현 및 기타 필요한 매개변수를 설정합니다. OrderSend 기능을 사용하여 거래 요청을 보내고 포지션을 엽니다. 거래 요청이 성공하면 성공적으로 포지션을 열었다는 메시지가 표시됩니다. 그렇지 않으면 오류 메시지가 표시됩니다.

마지막으로 코드를 컴파일하여 오류나 경고가 없는지 확인하고 모든 것이 성공적이면 데모 또는 라이브 계정에서 EA를 테스트할 준비가 됩니다.

이것으로 이 비디오를 마칩니다. 다음 부분에서는 추가 기능을 추가하고 전략을 개선하여 EA를 계속 구축할 것입니다. 질문이나 제안 사항이 있으면 아래 의견에 남겨주십시오. 시청해주셔서 감사하고 다음 영상에서 뵙겠습니다!

Candlestick pattern EA in mql5! | Part 2
Candlestick pattern EA in mql5! | Part 2
  • 2023.03.05
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5.As an algo trader I dev...
 

mql5의 멋진 촛대 패턴 EA! | 파트 3



mql5의 멋진 촛대 패턴 EA! | 파트 3

이 비디오에서 Toby는 자신을 소개하고 MetaTrader5에서 캔들스틱 패턴 EA(Expert Advisor)를 계속 개발하는 데 중점을 둘 것이라고 발표합니다. 첫 번째 백 테스트를 수행하고 결과를 얻는 데 필요한 핵심 논리를 작성하는 것이 목표입니다. Toby는 시청자가 아직 보지 않았다면 시리즈의 이전 부분을 확인하도록 권장합니다.

Toby는 메타 편집기를 열고 이전 비디오에서 중단한 부분부터 코딩을 시작합니다. 그는 이미 매수 및 매도 포지션을 열기 위한 코드를 구현했지만 이제 조건 확인을 추가해야 한다고 설명합니다. 이를 위해 Toby는 구매 및 판매 거래 모두에 대한 조건을 확인하기 위해 호출할 수 있는 사용자 지정 함수를 만들 계획입니다.

코딩 프로세스를 시작하기 전에 Toby는 기존 코드에 실수가 없는지 확인하려고 합니다. 그는 코드를 컴파일하여 오류나 경고를 확인합니다.

다음으로 Toby는 "조건 확인"이라는 사용자 지정 함수의 논리 작성을 진행합니다. 이 함수는 for 루프를 사용하여 각 조건을 반복합니다. 루프 내에서 "하나의 조건 확인"이라는 또 다른 사용자 지정 함수를 호출하여 각 개별 조건을 평가합니다.

Toby는 매수/매도 거래에 대한 매개변수와 확인할 조건의 지수를 취하는 "하나의 조건 확인" 기능을 생성합니다. 이 함수 내에서 조건이 활성인지 확인하는 것과 같은 다양한 검사가 수행됩니다. 조건이 비활성이면 함수는 관련이 없음을 나타내는 true를 반환합니다.

조건을 확인하기 위해 Toby는 막대 데이터를 가져와야 합니다. 그는 시가, 고가, 저가 및 종가를 포함하는 미리 정의된 구조인 mql rate 유형의 변수를 선언합니다. rate 배열을 시리즈로 설정하고 copy rate 함수를 사용하여 조건에 필요한 데이터를 검색합니다.

막대 데이터를 성공적으로 얻은 후 Toby는 조건을 비교하고 평가하는 데 사용할 변수 A와 B의 값을 설정합니다. 값은 open, high, low, close, range, body, ratio 또는 value와 같은 조건 모드에 따라 결정됩니다. 매수 또는 매도 거래인지 여부를 고려하여 그에 따라 값이 할당됩니다.

값이 설정되면 Toby는 코드를 컴파일하여 실수나 오류가 있는지 확인합니다.

Toby는 모드 B 조건에 대한 프로세스를 반복하여 변수 및 사례에 필요한 조정을 수행합니다.

마지막으로 Toby는 코드에 실수가 없는지 확인하고 코드 논리 이해의 중요성을 강조하면서 비디오를 마무리합니다.

Awesome candlestick pattern EA in mql5! | Part 3
Awesome candlestick pattern EA in mql5! | Part 3
  • 2023.03.09
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

놀라운 결과! mql5의 촛대 패턴 EA! | 파트 4


놀라운 결과! mql5의 촛대 패턴 EA! | 파트 4

안녕하세요, 저는 토비입니다. 오늘 영상에서는 계속해서 캔들스틱 패턴 EA(Expert Advisor) 코딩을 해보겠습니다. 이 비디오에는 몇 가지 구체적인 목표가 있습니다. 먼저 EA에 패널을 추가하여 다양한 조건과 해당 매수/매도 신호를 표시합니다. 또한 EA의 기능을 확인하기 위해 추가 입력 검사를 수행할 것입니다. 마지막으로 몇 가지 백 테스트를 수행하고 몇 가지 흥미로운 결과를 여러분과 공유할 것입니다. 시작하겠습니다.

진행하기 전에 이 캔들스틱 패턴 코딩 시리즈의 이전 부분을 보지 않았다면 먼저 확인하는 것이 좋습니다. 설명에서 링크를 찾을 수 있습니다.

이 비디오에서는 EA용 그래픽 패널을 만드는 것으로 시작합니다. 패널에는 매수 및 매도 신호를 나타내는 십자 표시와 함께 다양한 조건을 나타내는 선이 포함됩니다. 조건이 충족되면 EA는 지정된 방향으로 거래를 수행합니다. 또한 전략 테스터에서 최적화를 용이하게 하기 위해 입력 검사를 구현할 것입니다.

패널 코딩을 시작하기 위해 MetaEditor를 열고 포함 폴더로 이동합니다. 포함 폴더 안에 YouTube라는 새 폴더를 만듭니다. YouTube 폴더 내에서 그래픽 패널 파일을 만듭니다. 파일의 기본 내용을 지우고 패널에 필요한 파일을 포함합니다.

다음으로 패널에 필요한 레이블을 정의합니다. 각 레이블은 숫자, 조건, 구매, 판매 등과 같은 특정 요소를 나타냅니다. 또한 각 조건에 대해 여러 줄을 표시하는 레이블 배열도 만듭니다.

레이블을 정의한 후 Panel 클래스 코딩을 진행합니다. 이 클래스는 CAppDialog 클래스에서 상속되어 멤버에 대한 액세스 권한을 부여합니다. 생성자, 소멸자, onInit, 업데이트 및 bannerChartEvent를 포함하여 패널의 레이블과 몇 가지 메서드에 대한 비공개 섹션을 만듭니다.

생성자는 패널을 초기화하고 소멸자는 정리를 처리합니다. onInit 메소드는 EA의 onInit 함수에서 호출되어 패널을 생성합니다. 업데이트 메소드는 패널의 내용을 업데이트하기 위해 매 틱마다 호출됩니다. 마지막으로 bannerChartEvent 메서드는 패널과 관련된 이벤트를 처리합니다.

createPanel 메서드 내에서 차트 ID, 이름, 하위 창 및 좌표와 같은 원하는 매개 변수를 사용하여 실제 패널을 만듭니다. 패널이 성공적으로 생성되었는지 확인하고 생성되었으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

패널 클래스가 코딩되면 전문 고문 파일에 포함합니다. 패널 객체의 인스턴스를 만들고 매직 넘버를 설정한 후 onInit 메서드를 호출합니다. 패널 생성에 실패하면 적절한 오류 메시지가 반환됩니다.

이것이 캔들스틱 패턴 코딩 시리즈의 이 부분입니다. 다음 비디오에서는 계속해서 EA에 기능을 추가하고 추가 테스트를 수행할 것입니다. 더 흥미로운 결과를 기대해 주세요.

 

mql5에서 사용자 정의 기준 코딩



mql5에서 사용자 정의 기준 코딩

안녕하세요 토비입니다. 이 비디오에서는 MQL5에서 Expert Advisor 최적화를 위한 사용자 정의 기준을 코딩하는 방법을 보여줍니다. Hilo 브래킷 EA를 예로 사용하겠습니다. 목표는 최적화 결과의 순위를 매길 때 이익 요소와 거래 수를 모두 고려하는 사용자 지정 기준을 만드는 것입니다.

시작하려면 코딩 환경(예: Visual Studio Code)에서 EA를 열고 새 이름으로 저장합니다. 다음으로 "OnTester"라는 미리 정의된 함수를 EA에 추가합니다. 이 함수는 맞춤 기준을 계산하고 해당 값을 반환합니다. "TestStatistics" 기능을 사용하여 거래 횟수와 이익 요인을 얻을 수 있습니다. 이 두 값을 곱하여 맞춤 기준을 계산합니다.

오류가 없도록 코드를 컴파일합니다. 이제 MetaTrader로 전환하고 최적화를 수행하십시오. EA를 선택하고 사용자 정의 기준을 사용하기 위한 최적의 검색 기준으로 "Custom Max"를 선택하십시오. 최적화를 시작하고 결과를 기다립니다. 사용자 정의 기준이 이익 계수를 곱한 거래 수를 기준으로 계산되는 것을 볼 수 있습니다.

이익 요인의 가중치를 조정하려면 코드에서 "MathPower" 기능을 사용할 수 있습니다. 예를 들어 이익 계수를 4의 제곱으로 올려 더 많은 가중치를 부여할 수 있습니다. 업데이트된 순위를 보려면 최적화를 다시 컴파일하고 실행하십시오.

또한 if 문을 코드에 추가하여 거래가 100개 미만인 조합을 제외할 수 있습니다. 거래 횟수가 100 미만이면 0 값을 반환할 수 있습니다. 이렇게 하면 거래 수가 충분한 조합만 고려됩니다.

다음 단계에 따라 자신만의 사용자 지정 기준을 생성하여 Expert Advisor에 대한 최상의 최적화 결과를 순위 지정하고 선택할 수 있습니다. 변경하기 전에 수정된 EA를 새 이름으로 저장해야 합니다. 이 영상이 도움이 되셨다면 좋아요를 남겨주시고 댓글로 향후 영상에 대한 요청이나 아이디어를 자유롭게 공유해주세요. 감사합니다. 다음 영상에서 만나요!

Code a custom criteria in mql5
Code a custom criteria in mql5
  • 2023.03.31
  • www.youtube.com
In this video I show you step by step how to code a custom criteria for the Metatrader 5 strategy tester. With a custom criterion, you can create your own ra...
 

mql5의 스토캐스틱 트레이딩 봇! | 1 부



mql5의 스토캐스틱 트레이딩 봇! | 1 부

이 비디오에서는 MetaTrader 5에서 간단한 확률적 EA를 코딩하는 방법을 시연할 것입니다. 비디오가 끝날 무렵에는 백테스팅을 수행하여 지난 10년 동안 전략의 성과를 평가할 것입니다.

일반적인 전략 아이디어를 이해하는 것으로 시작하겠습니다. 우리는 널리 알려진 확률 지표를 사용할 것입니다. EA는 스토캐스틱이 낮은 수준을 교차할 때 매수 거래를 실행하고 상위 수준을 교차할 때 매도 거래를 실행합니다. 차트를 보는 동안 우리의 두뇌는 수익성 있는 거래에 집중하는 경향이 있으므로 전략을 코딩하고 백테스트하여 효과를 평가하는 것이 중요하다는 것을 기억하는 것이 중요합니다.

이제 Visual Studio Code로 전환하여 EA 코딩을 시작하겠습니다. 기본 MetaEditor를 사용하여 YouTube 폴더에 새 파일을 만들고 이름을 "Stochastic EA"로 지정합니다. 그런 다음 Visual Studio Code에서 파일을 열고 가독성을 향상시키기 위해 일부 서식을 조정합니다.

코드를 섹션으로 구성하고 include부터 시작하겠습니다. CTrade 클래스를 포함하는 "trades.mqh" 파일 하나만 포함하면 됩니다. 그런 다음 EA에 대한 입력을 정의합니다. 매직 넘버 및 로트 크기와 같은 입력에 대한 일반 섹션이 있으며, 그 다음에는 손절매, 이익 실현 및 반대 신호에 대한 거래 종료에 대한 거래 섹션이 있습니다. 그런 다음 K 기간 및 상위 수준을 포함하여 확률 지표에 대한 입력 섹션을 갖게 됩니다.

입력이 정의되면 전역 변수 섹션으로 이동하여 확률 지표 핸들, 버퍼, 현재 틱 및 거래 개체에 대한 변수를 선언합니다. 전역 변수 다음에 onInit 함수를 구현합니다. 입력 값이 허용 범위 내에 있는지 확인하는 checkInputs 함수를 사용하여 사용자 입력을 확인하는 것으로 시작하겠습니다. 입력이 올바르지 않으면 "초기 매개변수가 올바르지 않습니다."를 반환합니다.

다음으로 사용자가 제공한 입력 값을 이용하여 거래 대상에 대한 매직 넘버를 설정하겠습니다. 그런 다음 기호, 기간, K 기간, D 기간(신호선이 없는 경우 1로 설정), 감속 값, MA 방법(SMA) 및 가격 필드를 지정하여 내장 확률 함수를 사용하여 표시기 핸들을 만듭니다. (낮음/높음). 인디케이터 핸들 생성이 성공했는지 확인하겠습니다. 잘못된 핸들을 반환하면 경고 메시지가 표시되고 "초기화 실패"가 반환됩니다. 마지막으로 arraySetAsSeries 함수를 사용하여 버퍼를 설정하여 시계열임을 나타냅니다.

다음으로 각 입력의 유효성을 확인하는 checkInputs 함수를 정의합니다. 매직 넘버와 로트 크기가 허용 범위 내에 있는지 확인하고 그렇지 않으면 false를 반환합니다. 또한 로트 크기가 10보다 크지 않은지 확인하는 것과 같은 추가 검사를 추가할 수 있습니다. onInit 함수와 checkInputs 함수가 완료되면 이제 코드를 컴파일하고 비디오의 다음 단계로 진행할 수 있습니다.

이 기능은 여러 단계를 수행하도록 설계되었습니다. 먼저 현재 틱을 검색하여 전역 변수 "CT"에 저장합니다. 그런 다음 "CopyBuffer" 함수를 사용하여 지표 값을 가져옵니다. 이 함수는 오류를 확인하고 성공하면 "메인" 버퍼에 값을 저장합니다. 오류가 있으면 메시지를 인쇄하고 함수를 종료합니다.

다음 단계는 오픈 포지션의 수를 세는 것입니다. 이것은 "CountOpenPositions" 함수를 사용하여 수행되며 카운트는 "CountBuy" 및 "CountSell"의 두 정수 변수에 저장됩니다. 위치 계산에 오류가 있으면 메시지가 인쇄되고 함수가 종료됩니다.

그런 다음 함수는 매수 또는 매도 거래를 확인합니다. 공개 매수 포지션이 없는 경우(CountBuy가 0), 매수 거래를 개시해야 하는지 여부를 결정하기 위해 표시기 값을 확인합니다. 매수 거래를 시작하기 위한 조건은 현재 지표 값이 지정된 하위 수준보다 낮고 이전 지표 값이 하위 수준보다 높은 것입니다. 이러한 조건이 충족되면 구매 포지션이 시작되었음을 알리는 메시지가 인쇄됩니다. 마찬가지로 이 함수는 오픈 매도 포지션이 없는 경우 매도 거래를 확인합니다(CountSell은 0). 매도 거래를 시작하기 위한 조건은 지표 값이 지정된 상위 수준보다 높고 이전 지표 값이 상위 수준보다 낮은 경우입니다. 이러한 조건이 충족되면 매도 포지션이 시작되었음을 알리는 메시지가 인쇄됩니다.

거래 논리가 구현된 후 입력 매개변수 "ClosedSignal"이 true로 설정된 경우 함수는 모든 판매 위치를 닫습니다. 매개변수 값이 2인 "ClosePositions" 기능을 사용하여 모든 매도 포지션을 청산합니다. 위치를 닫는 데 오류가 있으면 함수가 종료되고 메시지가 인쇄됩니다. 다음으로 이 함수는 입력 매개변수를 기반으로 손절매 및 이익 실현 값을 계산합니다. 입력 정지 손실 값이 0이면 정지 손실은 0으로 설정됩니다. 그렇지 않으면 현재 틱 가격과 입력 손절매 값을 기준으로 계산됩니다. 테이크 프로핏 값을 계산하기 위해 동일한 프로세스를 따릅니다.

포지션을 열기 전에 함수는 "NormalizePrice" 함수를 사용하여 손절매 및 이익 실현 가격을 정규화합니다. 정규화에 오류가 있으면 함수가 종료됩니다. 마지막으로 함수는 거래 개체의 "PositionOpen" 메서드를 사용하여 포지션을 엽니다. 포지션은 유형(매수 또는 매도), 거래량, 가격, 손절매 및 이익 실현 값에 따라 열립니다. 주문 코멘트도 포함되어 있습니다.

이 기능은 오류가 없는지 확인하기 위해 컴파일된 다음 과거 데이터를 사용하여 MetaTrader에서 테스트하여 지정된 조건에 따라 원하는 거래 시작 및 종료가 발생하는지 확인할 수 있습니다. 위치를 연 후 함수는 "GetLastError" 함수를 사용하여 오류를 확인합니다. 오류가 있으면 메시지를 인쇄하고 종료합니다.

마지막으로 이 함수는 전역 변수 "LastTick" 및 "LastSignal"을 각각 현재 틱 및 신호 유형(매수 또는 매도)으로 업데이트합니다. 이는 향후 계산을 위해 마지막으로 처리된 틱 및 신호를 추적하기 위해 수행됩니다.

이 함수는 현재 틱 검색, 지표 값 가져오기, 열린 포지션 수 계산, 거래 기회 확인, 지정된 조건에 따라 포지션 열기, 필요한 경우 매도 포지션 닫기, 손절매 계산 및 이익 실현 값, 가격 정상화, 포지션 열기 , 오류를 처리하고 전역 변수를 업데이트합니다.

MetaTrader 5 환경에서 이 기능을 사용하려면 전문 고문 또는 스크립트에 통합하고 거래 전략에 따라 입력 매개변수 및 지표 값을 사용자 지정해야 합니다. 또한 포지션 관리, 오류 처리 및 기타 거래 작업 수행을 위해 다른 기능을 구현해야 할 수도 있습니다.

제공된 설명은 제공된 정보를 기반으로 한 일반적인 이해이며 실제 구현은 사용되는 특정 거래 플랫폼 및 프로그래밍 언어에 따라 다를 수 있습니다.

Stochastic trading bot in mql5! | Part 1
Stochastic trading bot in mql5! | Part 1
  • 2023.04.13
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will create a fully working stochastic Expert Advisor for Metat...
 

MetaTrader 5용 확률적 EA | 2 부



MetaTrader 5용 확률적 EA | 2 부

이 비디오에서 Toby는 자신을 호스트로 소개하고 확률 지표를 사용하여 거래 전략을 개선하기 위한 간단한 필터에 대해 논의할 것이라고 언급합니다. 토비는 스토캐스틱 지표뿐만 아니라 다른 지표에도 필터를 적용할 수 있다고 언급한다.

Toby는 코딩 자습서의 첫 번째 부분에서 EA(Expert Advisor) 및 지표의 핵심 논리를 다루었다고 설명합니다. 이 부분에서는 전략을 강화하기 위해 다른 진입 신호와 필터를 추가할 계획입니다. 코딩을 시작하기 전에 Toby는 목표를 이해하는 것의 중요성을 강조합니다. 그들은 표시기의 하단 및 상단 영역 종료에 기반한 두 번째 유형의 진입 신호와 신호를 반전시키는 옵션을 포함하여 EA에 추가하려는 구성 요소를 설명합니다.

그런 다음 Toby는 MQL5 코딩에 권장하는 편집기인 Visual Studio Code로 전환할 것을 제안합니다. 그들은 작업할 코드가 첫 번째 파트에서 생성된 EA라고 언급합니다. 제대로 작동하는지 확인하기 위해 컴파일한 후 코딩을 진행합니다.

첫 번째 단계는 다른 모드에 대한 enum(열거형)을 사용하여 신호 모드에 대한 입력을 추가하는 것입니다. "exit cross normal", "entry cross normal", "exit cross reversed" 및 "entry cross reversed"와 같은 옵션을 사용하여 "signal mode"라는 열거형을 만듭니다. Toby는 각 옵션의 의미와 이것이 거래 전략에 미치는 영향을 설명합니다.

열거형을 추가한 후 Toby는 이를 코드의 입력으로 추가하고 기본 옵션을 "exit cross normal"로 지정합니다. 또한 코드를 컴파일하여 오류가 있는지 확인합니다.

다음으로 Toby는 OnTick() 함수에서 신호 모드를 사용하여 새 신호를 확인할 계획입니다. 코드를 단순화하고 복잡한 if 문을 피하기 위해 Toby는 "체크 신호"라는 별도의 함수를 작성하여 신호 논리를 처리하기로 결정했습니다. 그들은 이 함수가 거래를 개시해야 하는지 여부를 나타내는 부울 값을 반환한다고 설명합니다.

Toby는 두 개의 매개변수를 사용하는 "확인 신호" 함수를 생성합니다. 하나는 매수 또는 매도 신호를 확인하는지 여부를 지정하는 부울 매개변수이고 다른 하나는 오픈 포지션 수에 대한 정수 매개변수입니다. 함수와 매개변수의 목적을 설명하는 주석을 추가합니다. 또한 위치가 이미 열려 있는 경우 거짓을 반환하는 확인을 추가합니다.

다음으로 Toby는 선택한 신호 모드를 기반으로 크로스오버를 확인하는 코드를 추가합니다. "상단 출구 교차", "상단 진입 교차", "하단 출구 교차" 및 "하단 진입 교차"와 같은 각 교차 옵션에 대한 부울 변수를 생성합니다. 확률 지표 버퍼의 값을 참조하여 각 교차 조건의 논리를 설명합니다.

크로스오버 검사를 추가한 후 Toby는 코드를 컴파일하여 오류가 없는지 확인합니다. 또한 누락된 if 문을 추가하고 컴파일 오류를 수정합니다.

"신호 확인" 기능과 교차 확인이 있으면 Toby는 OnTick() 함수로 돌아가서 구매 및 판매 위치를 확인하기 위한 기존 if 문을 "신호 확인" 함수에 대한 호출로 대체합니다. 그들은 적절한 매개변수를 전달하고 오픈 포지션 카운트를 함수에 전달하고 거래를 열기 전에 true를 반환하는지 확인합니다.

코드를 다시 컴파일한 후 Toby는 EA의 논리를 테스트하기 위해 MetaTrader로 전환합니다. 그들은 EA를 선택하고 공개 가격 전용 모드를 선택하고 테스트를 위해 시각적 모드를 활성화합니다. 각 신호 모드에 대한 입력 매개변수를 구성하고 시각적 테스트를 실행합니다. Toby는 EA가 예상대로 작동하는지 확인하기 위해 철저히 테스트하는 것이 중요하다고 설명합니다.

Toby는 시각적 테스트 결과에 따라 모든 신호 모드가 올바르게 작동하고 있다고 결론을 내립니다. 그들은 튜토리얼의 다음 부분에서 필터 추가로 이동할 것을 제안합니다.

현재 신호를 확인하기 위해 "one" 및 "two" 값을 검색합니다. 그러나 버퍼를 사용하여 인덱스 0에서 시작하도록 이것을 수정하고 싶습니다. 또한 체크 신호에 대한 세 가지 값을 검색해야 합니다. 체크 클리어 바 필터가 활성화된 경우 추가 값이 필요할 수 있습니다. 이러한 변경 사항을 구현하려면 코드를 수정해야 합니다.

먼저 표시기 값을 검색할 때까지 위로 스크롤합니다. "표시기 값 가져오기" 행이 있는 "untick" 기능에서 일부 변경이 필요합니다. 첫 번째 매개변수는 표시기의 버퍼 번호를 나타냅니다. 우리는 인덱스 0에 있는 메인 라인에만 관심이 있습니다. 따라서 동일하게 유지됩니다. 그러나 시작 위치는 현재 인덱스 1로 설정되어 있으며 두 값을 검색합니다. 시작 위치를 인덱스 0으로 변경하고 최소 세 개의 값을 검색하려고 합니다. 따라서 인덱스 0에서 시작하여 0, 1, 2의 세 값을 검색하도록 코드를 수정합니다.

체크 지우기 막대 필터가 활성화되어 있으면 필터를 확인하기 위해 추가 표시기 값을 검색해야 합니다. "three"와 입력된 clear bar 값을 검색해야 합니다. 예를 들어 입력 클리어 바 값이 5로 설정되어 있으면 총 8개의 값이 필요합니다. 따라서 인덱스 0에서 시작하여 필요한 값 수까지 값을 검색하도록 그에 따라 코드를 수정합니다.

이러한 변경을 수행한 후에 검색된 값을 "Main"이라는 버퍼에 저장해야 합니다. 또한 함수가 요청된 값(입력 지우기 막대 값에 3을 더한 값)을 성공적으로 검색했는지 확인해야 합니다. 이 검사를 포함하도록 코드를 수정합니다.

다음으로 신호를 확인하는 코드를 업데이트해야 합니다. 인덱스 0에서 버퍼 Main에 액세스하는 대신 이제 교차 검사를 위해 인덱스 1과 2에서 액세스해야 합니다. 인덱스 0의 모든 인스턴스를 1로, 인덱스 1을 2로 바꿉니다.

이제 올바른 표시기 값이 있으므로 for 루프로 진행할 수 있습니다. 실수가 없도록 코드를 컴파일해야 합니다.

for 루프에서 인덱스 3에서 시작하는 클리어 바 필터를 확인하려고 합니다. 이것은 신호 크로스오버 확인 이후의 위치입니다. 카운터가 3 더하기 막대 지우기 값 미만이 될 때까지 이 루프를 계속합니다. 예를 들어 지우기 막대 값이 5로 설정되면 카운터는 8이 됩니다. 즉, 루프의 마지막 값인 인덱스 7까지 확인합니다. 이 루프의 목적은 이 막대 내에서 상단 라인의 교차가 없도록 하는 것입니다. 이러한 변경 사항을 반영하도록 코드를 업데이트합니다.

for 루프 내부에서 먼저 상위 레벨을 확인합니다. 버퍼 Main[i-1]의 값을 입력 상위 레벨과 비교합니다. 더 크고 버퍼 Main[i]의 값이 입력 상위 레벨보다 작거나 같으면 크로스오버가 있습니다. 또한 다른 방향의 크로스오버에 대한 반대 조건도 확인합니다. 그에 따라 코드를 수정합니다.

for 루프 뒤에 또 다른 if-else 문을 추가합니다. 입력 클리어 바 반전이 참이면 필터가 반전될 때 크로스오버를 원하기 때문에 참을 반환합니다. 그렇지 않으면 false를 반환합니다.

마지막으로 하위 수준 검사를 위해 유사한 if-else 문을 추가합니다. 기존 if 문을 복사하고 하위 수준 검사에 필요한 사항을 변경합니다.

이러한 변경을 수행한 후 실수가 없도록 코드를 다시 컴파일합니다. 이제 OnTick 기능에서 바 확인 지우기 기능을 사용할 수 있습니다.

OnTick 함수에서 신호를 확인하는 if 문에 체크 클리어 바 함수를 추가합니다.

최적화 프로세스를 계속 진행하겠습니다. 유로/달러 기호와 2019년부터 시작하는 시간 프레임을 선택했습니다. 공개 가격만 사용하고 빠른 일반 알고리즘을 사용합니다. 최적화 목표는 clearbars 필터에 가장 적합한 매개변수를 찾는 것입니다.

최적화를 시작하기 전에 최적화하려는 매개변수를 정의합시다. 이 경우 필터에 대해 고려할 막대 수를 결정하는 clearbars 필터의 룩백 기간을 최적화합니다. 5에서 20까지의 값을 5씩 증분하여 테스트합니다. 또한 필터의 상한 및 하한 임계값을 최적화하여 50에서 150까지의 값을 25씩 증분하여 테스트합니다.

이제 최적화를 실행하고 결과를 분석해 보겠습니다. 각 매개변수 조합의 성과를 평가하기 위해 순이익, 총 거래 및 이익 요인을 살펴보겠습니다. 이러한 메트릭을 기반으로 가장 높은 수익을 창출하는 최상의 매개변수 값을 식별할 수 있습니다.

최적화를 실행한 후 결과를 검토하고 가장 잘 수행된 매개변수 값을 식별할 수 있습니다. 룩백 기간 10, 상위 수준 임계값 100, 하위 수준 임계값 75가 가장 높은 순이익 및 이익 요인을 제공한다는 것을 알 수 있습니다.

최적의 매개변수 값을 식별한 후에는 이를 사용하여 더 큰 데이터 세트에 대한 전략을 백테스트하거나 실제 거래 계정에 배포할 수 있습니다.

최적화 결과는 이전 데이터를 기반으로 하며 향후 성능을 보장하지 않을 수 있습니다. 전략의 성과를 지속적으로 모니터링 및 평가하고 필요에 따라 매개변수를 조정하는 것이 중요합니다.

최적화된 매개변수를 사용하여 전략을 더욱 세분화하고 개선을 위한 다른 가능성을 탐색할 수 있습니다. 전략의 효율성을 향상시키기 위해 추가 필터 또는 조건을 추가하는 것을 고려할 수 있습니다.

결론적으로 최적화 프로세스는 clearbars 필터에 대한 최상의 매개변수 값을 찾는 데 도움이 되어 전략의 성과를 개선하고 잠재적으로 수익성을 높일 수 있습니다. 거래 전략의 개발 및 개선에 유용한 도구입니다.

Stochastic EA for MetaTrader 5 | Part 2
Stochastic EA for MetaTrader 5 | Part 2
  • 2023.05.01
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will improve our stochastic Expert Advisor for Metatrader 5. We...
사유: