많은 일중 추세 시스템은 개별 추세 필터를 통해 향상될 수 있습니다. 이는 최근 가격 움직임을 살펴보고 전반적인 추세가 상승, 하락 또는 중립인지를 결정하는 지표입니다. EA 필터가 포함된 MQL4 Trend Indicator 기사에서 EA가 더 큰 추세에 대해 거래할 때 불필요한 손실을 피하는 방법을 알아보세요.
트렌드 필터는 시스템이 전체 추세 방향에 거래를 배치하고 추세에 반대되는 거래를 필터링하는 방법입니다. 백테스팅을 통해 입증됨) 추세 필터는 이기는 거래보다 잃는 거래를 더 많이 걸러냅니다.
저희 시스템트레이더는 종종 M30과 같은 더 작은 기간 차트에서 흥미로운 추세 시스템을 찾거나 생성하며, 백테스트를 통해 시스템이 이 상대적인 차트에서 작동할 수 있는지 확인할 수 있습니다. 더 짧은 기간 동안 다양한 추세 기회를 활용하세요.
그러나 시각적 백테스팅을 통해 시스템이 궁극적으로 수익성이 있었음에도 불구하고 일반적인 추세에 반할 때마다 어려움을 겪었음을 알 수 있습니다. 불필요한 손실이 많습니다. . 이를 볼 때 더 큰 시간 프레임이나 기간으로 설정된 동일한 또는 대체 지표의 추세 필터를 찾아야 합니다. 이는 시스템이 시장의 더 큰 추세를 식별하고 더 큰 규모에서만 거래가 발생하도록 허용할 수 있습니다. 기간 일반적인 추세의 방향.
필터가 열릴 때 쉽게 열 수 있도록 이 추세 필터에 대한 참/거짓 부울 값도 작성하면 도움이 될 것입니다. 추가로 향상되었는지 확인하기 위해 꺼졌습니다.
간단한 추세 필터인 이동 평균 추세 필터의 구성을 살펴보고 생성 및 구현 프로세스에 대한 아이디어를 제공합니다. 트렌드 필터. 이 추세 필터를 작성하는 방법을 알게 되면 모든 추세 전략을 테스트하기 위한 올바른 추세 필터 세트를 마침내 찾을 때까지 다양한 지표를 기반으로 많은 대체 필터를 쉽게 작성할 수 있습니다.
true로 설정된 경우 종가가 이동평균보다 높을 경우에만 매수 거래를 하고 종가가 이동평균보다 낮을 경우에만 매도하는 이동평균 필터를 작성하겠습니다. 매우 간단합니다.
매수 포지션: 종가가 이동평균선 위에 있을 때.
매도 포지션: 종가가 이동평균선 아래에 있을 때.
Bool: 이동 평균 필터를 켜거나 끌지 여부를 나타냅니다. 시스템에 입력되는 주요 거래는 이동 평균 방향으로만 이루어집니다. 종가가 이동 평균보다 높을 때만 매수하고, 종가가 이동 평균 아래에 있을 때만 매도합니다. 기본값은 false입니다.
Bool: 이동 평균 필터 반전을 켜거나 끌지 여부를 나타냅니다. 주요 진입 시스템은 이동평균의 반대 방향으로만 거래됩니다. 종가가 이동평균보다 낮을 때만 매수하고, 종가가 이동평균보다 높을 때만 매도합니다. 기본값은 false입니다. 이 역필터는 자주 사용되지 않지만 백테스트를 통해 위의 MAFilter를 적용하면 전략이 심각하게 약화된다는 사실을 발견하면 유용할 수 있습니다. 그런 다음 MAFilterRev를 적용하면 충전이 가능한지 확인하고 싶을 수도 있습니다.
Int: 이동 평균의 기간입니다. 기본값은 0이며 차트의 동일한 시간 범위를 나타냅니다. 먼저 동일한 기간을 테스트한 다음 더 큰 기간에 걸쳐 테스트를 진행해야 합니다. 예를 들어, 주요 전략이 M30 차트에 설정된 경우 기본 값인 0(M30)을 사용하여 이동 평균을 테스트한 다음 60(H1), 240을 사용하여 테스트합니다. 는 H4이고, 14440은 D1입니다.
Int: 이동평균선의 기간입니다. 기본값은 50이며, 이는 추세 방향을 결정하기 위해 이동 평균에 일반적으로 사용되는 더 긴 기간입니다. 또 다른 일반적인 긴 기간은 200입니다. 각 시간대에서 해당 통화의 추세를 가장 잘 식별하는 더 긴 MA 기간을 확인하려면 25~50단계로 50~200 사이의 최적화를 설정하는 것이 좋습니다. 테스트.
int: 이동 평균의 방법 또는 모드입니다. 기본값은 1, 지수 이동 평균입니다. . 기억하세요: 메서드 매개변수에서 0 = 단순, 1 = 지수, 2 = 평활, 3 = 선형 가중치. 제 생각엔 1이나 지수형이 가장 좋은 이동 평균 유형이라고 생각합니다. 이를 테스트하는 또 다른 좋은 방법은 단순 이동 평균인 0입니다. 둘 다 매우 인기 있고 효과적인 이동 평균 패턴입니다.
다음 코드 블록은 외부 변수 섹션에 배치됩니다. 외부 부울 MAFilterRev = false; 외부 int MATime = 0 ; 외부 int MAPeriod = 50; external int MAMethod=1; 다음 코드 블록은 표시기 호출 섹션에 있습니다. if (mafilter1 || mafilter1rev) Double mafilter=iMA(NULL,MATime,MAPeriod,0,MAMethod,PRICE_CLOSE,shift);
다음은 이동 평균 교차 전략 코드에 인터리브된 MAFilter의 예입니다. 이동 평균 교차 전략을 구성하는 방법을 이전에 자세히 설명했으므로 익숙할 것입니다. MAFilter를 이동 평균 교차 기술에 추가하는 것이 중복된다고 생각할 수도 있습니다. 그러나 칭찬으로 작동하는 방식에 대한 예가 있습니다. 예를 들어, 이동 평균 크로스오버가 M30 기간의 30주기를 기반으로 거래되는 경우 H4 기간의 200주기 MAFilter로 보완되면 향상될 수 있습니다. 결국 더 긴 기간과 기간으로 이동하게 될 더 짧은 기간과 기간의 추세를 기반으로 거래하면 이익을 얻을 수 있습니다.
bool BuyCondition = false;
bool SellCondition = false;
if (
FastMACurrent > SlowMACurrent && FastMAPrevious < SlowMAPrevious){
BuyCondition=true;
if (OppositeClose) CloseSell=true;
}
if (
FastMACurrent < ; SlowMACurrent && FastMAPrevious > SlowMAPrevious){
SellCondition=true;
if (OppositeClose) CloseBuy=true;
}
if (BuyCondition
&&
(MAFilter==false || (MAFilter &&Ask>mafilter))
&&
(MAFilterRev==false || (MAFilter & &Ask
if (SellCondition
&&
(MAFilter==false || (MAFilter && Bid<mafilter))
< mafilter))
&&
(MAFilterRev==false || (MAFilter && Bid> mafilter))
OpenSell = true;
</mafilter))
위의 MT4 사용 섹션에는 5개의 코드가 있습니다. 블록. 첫 번째 코드에서는 BuyCondition에 대한 부울 값과 SellCondition에 대한 부울 값을 생성하고 둘 다 기본값을 false로 설정했습니다. 내가 구독하는 논리가 true가 될 때만 true가 되기를 원하기 때문에 처음에는 false로 설정했습니다. 코드의 두 번째 및 세 번째 블록은 이동 평균 교차를 기반으로 매수 및 매도 조건을 식별하기 시작합니다. 빠른 이동 평균이 느린 이동 평균을 교차하는 경우 BuyCondition=true; 빠른 이동 평균이 느린 이동 평균을 교차하면 SellCondition=true입니다. Basic Expert Advisor: MA Crossover에서 이러한 조건을 논의했습니다. 유일한 차이점은 OpenBuy 및 OpenSell의 부울 값 대신 BuyCondition 및 SellCondition의 부울 값에 이러한 조건을 포함한다는 점입니다. 이는 코드의 네 번째 및 다섯 번째 블록에서 참조합니다. MAFilter를 구현한 네 번째, 다섯 번째 코드 블록입니다. 각각은 "if ( )" 조건으로 시작하며 괄호 안에 세 가지 조건이 설정되어 있습니다. 첫 번째 조건인 BuyCondition 또는 SellCondition에는 이동 평균 교차에 대한 입력 논리가 포함되어 있습니다. 두 번째 조건인 MAFilter 조건은 ||로 구분된 괄호 안의 복합 명령문입니다. ("또는") 연산자입니다. 명령문의 첫 번째 부분은 MAFilter가 false(MAFilter==false)로 설정된 경우 작동하지 않음을 나타냅니다. 문의 두 번째 부분(|| 뒤)은 MAFilter가 true로 설정된 경우(bool 자체가 true를 의미하므로 == true라고 말할 필요는 없음) 다음을 계속 실행할 수 있음을 의미합니다. MAFilter 규칙< /span> . BuyCondition에서 MAFilter 규칙은 Ask가 mafilter보다 커야 한다는 것입니다(>). 참고: mafilter(소문자)의 변수는 표시기 호출 섹션의 MT4 코드 세그먼트에 정의됩니다. 세 번째 조건인 MAFilterRev 조건도 ||로 구분된 대괄호 안의 복합문입니다. ("또는") 연산자입니다. 문의 첫 번째 부분은 MAFilterRev가 false(MAFilterRev==false)로 설정된 경우 MAFilterRev가 작동하지 않음을 나타냅니다. 문의 두 번째 부분(|| 뒤)은 MAFilterRev가 true로 설정된 경우 MAFilterRev 규칙을 계속 실행할 수 있음을 나타냅니다. 보시다시피 MAFilterRev 규칙은 MAFilter 규칙과 반대입니다. MAFilter 규칙이 Ask가 mafilter보다 커야 함(>)을 나타내는 경우 MAFilterRev는 Ask가 mafilter보다 작아야 함(<)을 나타냅니다. 위의 세 가지 조건이 모두 충족되면 EA는 OpenBuy = True 또는 OpenSell=true로 진행할 수 있으며, 이는 내 코드에서 매수 또는 매도 진입 신호를 트리거합니다.
저는 MAFilter를 선택했습니다. 왜냐하면 이것이 아마도 가장 쉽고 쉬운 방법일 것이기 때문입니다. 추세의 방향 가장 효과적인 방법 중 하나입니다. 추세 필터 역할을 할 수 있는 다른 좋은 지표로는 JMA, Hull, NonLagMA 및 Slope Directional Lines와 같은 이동 평균의 변형이 있습니다. 4가지 지표를 모두 신뢰할 수 있는 추세 필터로 사용했습니다. RSI 및 Stochastics와 같은 모멘텀 오실레이터를 사용해 볼 수도 있습니다. 어떤 지표를 사용하든 다양한 기간과 기간을 시도하여 더 큰 추세를 가장 잘 걸러내는 지표를 확인해야 합니다. 추세는 기간과 관련될 뿐입니다. 일단 기간을 결정하면 추세의 개념에는 특별한 것이 없습니다. 아주 멋진 수학적 추세 필터를 찾거나 만들 필요가 없습니다. 많은 트레이더들은 추세 식별 문제를 지나치게 복잡하게 만들려고 합니다. 그들은 추세가 상승인지 하락인지를 더 정확하게 판단하기 위해 과거의 가격 움직임을 분석하는 온갖 멋진 수학적 방정식과 방법을 고안하지만 대부분의 그러한 시도는 무의미합니다. 동향을 파악하는 가장 간단하고 널리 사용되는 방법이 일반적으로 가장 좋습니다. 모든 EA가 추세 필터의 이점을 누릴 수 있는 것은 아닙니다. 일부 EA에는 추가 추세 필터 없이도 잘 작동하는 추세 표시기가 포함되어 있습니다. 다른 EA는 추세 반전이나 역추세 조건을 예측하여 당시 추세가 반대일 때 거래를 시작합니다. 모든 필터는 거래 발생을 방지한다는 점을 기억하고, 차단된 거래의 대부분이 거래 손실이 되기를 바랍니다. 일반적으로 한 번에 하나의 필터를 백테스트하고 너무 많이 사용하지 않는 것이 가장 좋습니다. 귀하의 전략은 필터 없이도 그 자체로 자립할 수 있을 만큼 훌륭해야 합니다. 좋은 전략에 적용된 트렌드 필터는 선택적 개선 사항으로 테스트되어야 합니다. 필터가 많은 또는 동일한 수의 승리 거래를 차단하는 것으로 확인되면 귀하에게 적합한 필터는 좋은 필터가 아닙니다. 5~10년 간의 긴 백테스트를 통해 거래 손실을 더 많이 방지하는 경우에만 허용됩니다.