시스템트레이딩

모멘텀 MA 최소 수익을 위한 시스템 트레이딩 안내
MetaTrader5
모멘텀 MA 최소 수익을 위한 시스템 트레이딩 안내

EA 개요 이 EA는 커스텀 지표 '모멘텀 MA'의 신호를 기반으로 거래합니다. 신호는 지표의 두 선이 교차할 때 발생하며, 'BUY' 포지션을 열기 위한 신호는 교차가 '100' 이하일 때만 유효하고, 'SELL' 포지션을 열기 위한 신호는 교차가 '100' 이상일 때만 유효합니다. 주의: '테이크 프로핏'은 포인트 단위(1.00055-1.00045=10 포인트), '스톱 로스'는 금액 단위로 설정됩니다. 포지션은 설정한 '테이크 프로핏' 수준에 도달하거나 '스톱 로스' 수준에 도달했을 때 종료됩니다. 이 EA는 트레일링 기능이 없습니다. EA 최적화 방법 초기 최적화를 위해 다음 파라미터를 추천합니다. 그림 1. 모멘텀 MA 최소 수익 특징: EA는 작업 시간대에 맞게 최적화할 수 있습니다 ('작업 시간대'). 바당 하나의 '시장 진입' 거래만 가능하며, 이는 내부 파라미터로 입력 파라미터와는 관계가 없습니다. ' 내부 바 ' 모드로 작업할 때 (파라미터 '신호 검색 ...'   는 ' 바 #0 (모든 틱에서) ') 현재 바는 바 #0이며, ' 새 바가 생성될 때만 ' 모드에서는 ' 바 #1 (새 바에서) ) 현재 바는 바 #1입니다. 이제 각 파라미터 그룹에 대해 자세히 설명드리겠습니다: 거래 설정: '작업 시간대' - 작업 시간대입니다. 지표가 생성되고 새 바가 검색되는 시간대입니다. 스톱 로스, 테이크 프로핏 및 트레일링은 포인트 단위로 설정됩니다. 모든 파라미터 ('스톱 로스', '테이크 프로핏', '트레일링 스톱')는 '0.0'으로 설정하여 비활성화할 수 있습니다. 트레일링 작동 방식은 트레일링 스톱 코드의 그림에서 확인할 수 있습니다. 포지션 규모 관리 (로트 계산) 로트는 영구적일 수 있습니다 ('머니 매니지먼트'를 '고정 로트'로 설정하고, 로트 크기를 '머니 매니지먼트의 값'로 설정) 또는 동적일 수 있습니다 - 거래당 리스크 비율로 ('머니 매니지먼트'를 '거래당 리스크 비율'로 설정하고, 리스크 비율을 '머니 매니지먼트의 값'로 설정). 최소 로트에 해당하는 고정 로트를 설정할 수도 있습니다 - '머니 매니지먼트'를 '최소 로트'로 설정합니다. 추가 기능: '포지션: 하나만' 플래그를 'true'로 설정하면 EA가 시장에 하나의 포지션만 가질 수 있습니다. 경고: '포지션: 하나만'을 'true'로 설정하면 '포지션: 반대 포지션 닫기'가 'true'로 설정되어도 무시되지 않습니다! 즉, 반대 포지션이 먼저 닫힙니다. '포지션: 반전' 플래그는 신호 반전을 담당합니다. '포지션: 반대 포지션 닫기' 플래그는 'true'로 설정하면 포지션을 열기 전에 반대 포지션을 제거합니다. '로그 인쇄'는 모든 작업의 상세 로그를 인쇄합니다. '프리징 및 스톱 레벨 계수' 파라미터는 심볼의 스톱 및 프리징 레벨이 0일 때의 계수를 설정합니다. 추천 값은 '3'입니다.

2022.04.28
새로운 바와 캔들 시작 감지하기 - 메타트레이더 4를 위한 팁
MetaTrader4
새로운 바와 캔들 시작 감지하기 - 메타트레이더 4를 위한 팁

안녕하세요, 여러분! 오늘은 메타트레이더 4에서 새로운 바가 시작되는 시점을 감지하는 방법에 대해 이야기해볼게요. 전문가 어드바이저(Expert Advisor, EA)를 사용하고 있을 때, 새로운 틱(tick) 인용이 도착하면 메타트레이더 터미널에서 기본적으로 OnTick() 이벤트 핸들링 함수가 호출되는데, 새로운 바가 시작될 때 호출되는 기본 이벤트 핸들링 함수는 따로 없어요. 그렇다면 우리는 어떻게 새로운 바의 시작을 감지할 수 있을까요? 현재 가장 최근 바의 시작 시간을 모니터링하면 됩니다. 이 시간이 변하면 새로운 바가 시작되었다는 신호이니, 이에 반응하여 이벤트를 처리할 수 있죠. 아래에 제공된 샘플 코드는 MQL4와 MQL5 모두에 호환되는 방법을 보여줍니다: // 기본 틱 이벤트 핸들러   void OnTick()   {       // 새로운 바 체크 (MQL4와 MQL5 모두 호환)         static datetime dtBarCurrent  = WRONG_VALUE;                 datetime dtBarPrevious = dtBarCurrent;                          dtBarCurrent  = iTime( _Symbol, _Period, 0 );                 bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );       // 새로운 바 이벤트에 반응하여 처리하기         if( bNewBarEvent )         {             // 첫 틱을 받았는지 확인하고 처리하기                /* 예를 들어, 차트에 처음 부착되었을 때 바가 진행 중일 경우,                         실제로는 새로운 바의 시작이 아닐 수 있습니다. */                if( dtBarPrevious == WRONG_VALUE )               {                   // 첫 틱 또는 바 중간에서 무언가 처리하기...               }               else               {                   // 일반적인 바가 시작될 때 무언가 처리하기...               };       // 위 조건과 관계없이 무언가 처리하기...     }       else     {             // 다른 처리를 하세요...         };       // 다른 작업 수행...   }; 위 코드에서 정적 변수(static variable)는 바의 시작 시간을 추적합니다. 이 변수는 OnTick() 함수에서 반환될 때도 값을 유지하는데, 이는 현재 바의 시작 시간이 변했는지 감지하는 데 중요한 역할을 해요. 또한, EA가 처음 차트에 배치될 때 위 코드는 바가 막 열렸다고 감지하는 점도 유의해야 해요. 이러한 경우에는 특별한 처리가 필요할 수 있습니다. 마지막으로, 저의 코드베이스(CodeBase) 출판물의 소스 코드는 이제 메타에디터(MetaEditor)의 "공개 프로젝트(Public Projects)" 탭에서도 "FMIC"라는 이름으로 확인하실 수 있습니다.

2022.04.24
신규 바(캔들) 시작 감지하기 - 메타트레이더 5용 EA 작성법
MetaTrader5
신규 바(캔들) 시작 감지하기 - 메타트레이더 5용 EA 작성법

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 신규 바(캔들)의 시작을 감지하는 방법에 대해 이야기해볼까 합니다. EA(전문가 어드바이저)를 사용하면 새로운 틱(tick) 시세가 도착할 때, 메타트레이더 터미널은 기본적으로 OnTick() 이벤트 처리 함수를 호출합니다. 하지만, 신규 바가 시작되거나 열릴 때를 감지하는 기본 이벤트 처리 함수는 없습니다. 그래서 현재 가장 최근 바의 오프닝 시간을 모니터링해야 합니다. 이 시간이 변경되면 신규 바의 시작을 의미하며, 이에 반응하고 이벤트를 처리할 수 있게 됩니다. 아래의 샘플 코드는 MQL4와 MQL5에서 모두 호환되는 방법을 보여줍니다: // 기본 틱 이벤트 핸들러    void OnTick()    {       // 신규 바 확인 (MQL4 및 MQL5 호환)          static datetime dtBarCurrent  = WRONG_VALUE;                 datetime dtBarPrevious = dtBarCurrent;                          dtBarCurrent  = iTime( _Symbol, _Period, 0 );                 bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );       // 신규 바 이벤트에 반응하고 처리하기          if( bNewBarEvent )          {             // 첫 번째 틱 수신 여부를 감지하고 처리하기                /* 예를 들어, 차트에 처음 부착되었을 때                    바가 진행 중간에 위치하고,                    사실 신규 바의 시작이 아닐 때 */                if( dtBarPrevious == WRONG_VALUE )                {                   // 첫 번째 틱 또는 바 중간에서 무언가 수행...                }                else                {                   // 일반적인 바가 시작될 때 무언가 수행...                };             // 위의 조건과 관계없이 무언가 수행...          }          else          {             // 다른 작업 수행...          };       // 다른 작업 수행...    }; 위의 코드에서 정적 변수는 바의 오프닝 시간을 추적하며, OnTick() 함수에서 반환할 때에도 그 값을 유지합니다. 일반적인 지역 변수와 달리, 데이터 내용을 기억하고 함수에서 나올 때 해제되지 않습니다. 이 점이 현재 바의 오프닝 시간 변경을 감지하는 핵심입니다. 또한 EA가 차트에 처음 부착될 때, 위의 코드는 마치 바가 막 열린 것처럼 반응합니다. 이 조건은 상황에 따라 다르게 처리해야 할 수도 있습니다. 마지막으로, 모든 제 CodeBase 출판물의 소스 코드는 현재 메타에디터의 “Public Projects” 탭에서 “FMIC”라는 이름으로 확인하실 수 있습니다.

2022.04.24
DeMarker 지표를 활용한 포지션 진입 전략 - MetaTrader 5용 EA
MetaTrader5
DeMarker 지표를 활용한 포지션 진입 전략 - MetaTrader 5용 EA

트레이딩 전략 이번 포스트에서 소개할 EA의 핵심 아이디어는 'DeMarker' 지표를 활용하여 새로운 봉이 생성될 때마다 'BUY' 포지션을 여는 것입니다. 이때 'DeMarker' 지표가 'DeM: Level DOWN' 아래에 있을 경우에만 해당합니다. 반대로, 'DeMarker' 지표가 'DeM: Level UP' 위에 있을 경우에는 'SELL' 포지션을 여는 방식이죠. 기본 설정에서 'Positions: Only one' 파라미터는 'false'로 되어 있어, EA는 시장에 이미 포지션이 있어도 새로운 포지션을 열 수 있습니다. 각 새로운 포지션은 새로운 봉이 생성되는 순간에 열리며, 개시 가격이 최적인지 확인하는 과정은 없습니다. 또한 이 EA는 Stop Loss, Take Profit, 또는 Trailing 기능이 없으며, 포지션은 반대 신호가 발생했을 때만 닫히며, 이때 수익이 0보다 커야 합니다. 그림 1. DeMarker 포지션 진입량 모든 심볼에 대한 테스트 예시 그림 2. 설정 그림 3. 입력값 그림 4. 결과 이제 각 파라미터 그룹에 대해 더 자세히 알아보겠습니다: 트레이딩 설정: '작동 시간 프레임' - 지표가 생성되는 시간 프레임으로, 새로운 봉이 생성되는 시간입니다. 포지션 크기 관리 (로트 계산) 로트 크기는 영구적일 수 있으며('머니 관리'를 '상수 로트'로 설정하고, '머니 관리에 대한 값'에 로트 크기를 설정), 또는 거래당 위험 비율에 따라 동적일 수 있습니다('머니 관리'를 '거래당 위험 비율'로 설정하고, '머니 관리에 대한 값'에 위험 비율을 설정). 또한 최소 로트와 동일한 상수 로트를 설정할 수도 있습니다('머니 관리'를 '로트 최소'로 설정). 추가 기능: 'Positions: Only one'를 'true'로 설정하면 EA가 시장에 단 하나의 포지션만 가질 수 있습니다. 'Positions: Reverse' 플래그는 신호 반전을 담당하며, 'Print log'는 모든 작업의 확장된 로그를 출력합니다.

2022.04.21
PriceChannel_Signal_v2 EA: 메타트레이더 5를 위한 최적의 트레이딩 도구
MetaTrader5
PriceChannel_Signal_v2 EA: 메타트레이더 5를 위한 최적의 트레이딩 도구

트레이딩 전략 커스텀 지표 'PriceChannel_Signal_v2'는 여기서 가져온 지표입니다. 이 지표는 'BUY' 포지션을 열기 위한 두 가지 신호, 'SELL' 포지션을 열기 위한 두 가지 신호, 'BUY'를 종료하기 위한 신호, 그리고 'SELL'을 종료하기 위한 신호를 생성합니다. 이 시스템은 Stop Loss, Take Profit, Trailing 기능이 없습니다. 포지션 오픈 예시: 이미지 1. PriceChannel_Signal_v2 EA 특징: EA는 작업 시간대에 최적화할 수 있습니다 ('작업 시간대') 바당 한 개의 '진입 거래'만 가능합니다 '인사이드 바' 모드에서 작업할 때 (파라미터 '신호 검색 기준'이 'bar #0 (매 틱마다)'일 경우 현재 바는 bar #0입니다. '새로운 바의 생성 순간에만' 모드에서 작업할 때 (파라미터 '신호 검색 기준'이 'bar #1 (새로운 바에서)'일 경우 현재 바는 bar #1입니다) 이제 각 파라미터 그룹에 대해 더 자세히 알아보겠습니다: 트레이딩 설정: '작업 시간대' - EA가 작동하는 시간대입니다. 지표가 생성되고 새로운 바가 검색되는 시간대입니다. 포지션 크기 관리 (랏 계산) 랏은 고정형 ('머니 매니지먼트'를 '고정 랏'으로 설정하고 랏 크기를 '머니 매니지먼트의 값'으로 설정) 또는 동적일 수 있습니다. 동적일 경우 거래당 리스크 비율로 설정 ('머니 매니지먼트'를 '거래당 리스크 비율'로 설정하고 리스크 비율을 '머니 매니지먼트의 값'으로 설정). 또한 최소 랏과 동일한 고정 랏을 설정할 수 있습니다 - '머니 매니지먼트'를 '랏 최소'로 설정. 추가 기능: '포지션: 단일 포지션만' 플래그를 'true'로 설정하면 EA는 시장에서 하나의 포지션만 가지게 됩니다. '로그 출력' 기능은 모든 작업의 확장된 로그를 출력합니다.

2022.04.16
CHO 스무딩 EA: 메타트레이더 5를 위한 최적의 시스템 트레이딩
MetaTrader5
CHO 스무딩 EA: 메타트레이더 5를 위한 최적의 시스템 트레이딩

트레이딩 전략 CHO 스무딩 EA는 사용자 정의 지표인 'CHO 스무딩'을 사용합니다. 이 지표는 두 개의 선, 즉 iCHO 선(차이킨 오실레이터)과 이동 평균으로 스무딩된 iCHO 선을 사용합니다. 지표는 설정된 시간 프레임인 '작업 시간 프레임'에서 생성되며, 이 시간 프레임은 새로운 바의 형성을 결정하는 데 사용됩니다 (트레일링 및 신호 검색 매개변수에 필요할 경우). 설정에서 더 엄격한 신호를 설정할 수 있으며, 이를 위해 '영 레벨 사용' 매개변수를 '참'으로 설정해야 합니다. 트레이딩 신호: 신호는 지표의 두 선의 교차점입니다. 엄격 모드로 설정할 경우 ('영 레벨 사용' 매개변수를 '참'으로 설정), 'BUY' 신호는 반드시 영도 이하에서 발생하며, 'SELL' 신호는 영도 이상에서만 발생합니다. 그림 1. CHO 스무딩 EA 특징: EA는 작업 시간 프레임에 최적화할 수 있습니다. 한 바당 '시장 진입' 거래는 한 번만 발생할 수 있습니다 (이것은 내부 매개변수이며, 입력 매개변수와는 관련이 없습니다). '인사이드 바' 모드에서 작업할 경우 (매개변수 '신호 검색...'이 '바 #0 (모든 틱에서)'와 같을 때), 현재 바는 바 #0입니다. 새로운 바의 형성 시점에서 작업할 경우 (매개변수 '신호 검색...'이 '바 #1 (새 바에서)'와 같을 때), 현재 바는 바 #1입니다. '거래 모드 매개변수:' - 거래 방향에 대한 제약을 설정합니다. 'BUY 포지션만 허용', 'SELL 포지션만 허용', 'BUY 및 SELL 포지션 모두 허용'의 값을 가질 수 있습니다. '시간 제어 사용' 매개변수 - 거래 신호 검색을 위한 시간 인터벌을 설정합니다. '시작 시간::'시작 분'에서 '종료 시간::'종료 분'까지의 범위를 설정할 수 있습니다. 이 시간 범위는 하루 내에서 설정할 수도 있고, 하루를 넘어 설정할 수도 있습니다. 각 매개변수 그룹에 대해 좀 더 자세히 알아보겠습니다: 트레이딩 설정: '작업 시간 프레임' - 작업 시간 프레임입니다. 지표가 생성되는 시간 프레임이며, 새로운 바를 찾는 시간 프레임입니다. 손절매, 이익 실현 및 트레일링은 포인트로 설정됩니다. 모든 매개변수('손절매', '이익 실현', '트레일링 스탑')는 비활성화할 수 있으며, 이 경우 선택한 매개변수를 '0.0'으로 설정하면 됩니다. 트레일링 작동 방식은 트레일링 스탑 코드의 그림에 나와 있습니다. 포지션 크기 관리 (로트 계산) 로트는 고정형('머니 관리'를 '고정 로트'로 설정하고, 로트 크기를 '머니 관리 값'로 설정) 또는 동적형(거래당 위험 비율로 설정)으로 설정할 수 있습니다. 동적형으로 설정할 경우, '머니 관리'를 '거래당 위험 비율'로 설정하고 위험 비율을 '머니 관리 값'에 설정합니다. 또한 최소 로트와 동일한 고정 로트를 설정할 수도 있습니다 - '머니 관리'를 '최소 로트'로 설정합니다. 시간 제어: 이 섹션은 거래 신호 검색을 위한 시간 범위를 설정합니다. 시간 범위는 '시간 제어 사용'를 통해 활성화되며, 신호 검색을 위한 시간 간격을 '시작 시간::'시작 분'에서 '종료 시간::'종료 분'까지 설정합니다. 이 시간 범위는 하루 내에서 설정할 수도 있고, 하루를 넘어 설정할 수도 있습니다. 트레일링에는 영향을 주지 않습니다. 추가 기능: '포지션: 하나만 허용'이 '참'로 설정되면 EA는 시장에서 하나의 포지션만 가질 수 있습니다. 경고: '포지션: 하나만 허용'이 '참'으로 설정되면 '포지션: 반대 포지션 닫기'이 '참'으로 설정된 경우를 무시하지 않습니다. 즉, 반대 포지션은 먼저 닫힙니다. '포지션: 반전' 플래그는 신호 반전을 담당합니다. '포지션: 반대 포지션 닫기' 플래그가 '참'으로 설정되면, 포지션을 열기 전에 반대 포지션을 반드시 제거합니다. '로그 출력'은 모든 작업의 확장된 로그를 출력합니다. '프리즈 및 스탑 레벨 계수' 매개변수는 이 심볼의 스탑 및 프리즈 레벨이 0일 때의 계수를 설정합니다. 추천 값은 '3'입니다.

2022.04.13
처음 이전 8 9 10 11 12 13 14 15 16 17 18 다음 마지막