대부분의 전문 자문가는 실시간으로 업무를 수행하며 모든 견적에 대해 장단점이 있습니다. 장점으로는 모든 틱을 실행하면 EA가 가장 작은 가격 변동을 포착할 수 있으며 이는 스캘핑 시스템에 적합합니다.
그러나 단점은 각 견적에서 실시간으로 거래를 실행하면 많은 시스템이 잘못된 신호에 취약해진다는 것입니다.
때로는 바당 한 번만 거래 조건을 확인하는 것이 더 나을 때도 있습니다. 막대가 닫힐 때까지 기다리면 조건이 발생했고 신호가 유효한지 확인할 수 있습니다. 이 기사에서 모든 틱에서 실행을 방지하는 방법을 알아보십시오. MQL4 전문가 자문은 종료를 사용하도록 프로그래밍되어 있습니다. 가격을 책정하고 잘못된 신호를 피하세요.
바당 한 번만 거래하면 전략 테스터의 결과가 더 정확하고 관련성이 높아집니다. MT4 전략 테스터의 본질적인 한계로 인해 "모든 틱"을 테스트 모델로 사용하면 틱이 일반적으로 M1 데이터를 기반으로 모델링되므로 신뢰할 수 없는 백테스팅 결과가 생성됩니다. 실시간 거래에서 발생하는 거래가 반드시 전략 테스터에서 발생하는 거래와 일치하는 것은 아닙니다.
그러나 거래를 종가에 두고 "시가만"을 테스트 모드로 사용하면 실시간 거래 테스트를 보다 정확하게 반영할 수 있습니다. 결과. 바당 한 번 거래하는 경우의 단점은 특히 바 동안 가격이 크게 변동하는 경우 거래 실행이 지연될 수 있다는 것입니다. 이는 기본적으로 응답성과 안정성 사이의 균형입니다.
각 바의 거래 조건을 확인하는 방법에는 두 가지가 있다는 것을 알고 있습니다: 1) 타임스탬프 방법, 2) 볼륨 방법,
1. 타임스탬프 방식
다음은 새로운 바 오픈 타임스탬프 방식을 확인하기 위한 코드입니다.
외부 부울 EnterOpenBar = true;
int 현재 시간;
내부 초기화(){
현재 시간 = 시간[0];
(0)을 반환;
}
start() {
if (EnterOpenBar) = true)
{
if (현재 시간!= 시간[0]){
//새 바의 첫 번째 주문 번호 찾기
//구매 및 판매 조건은 여기에 있습니다
현재 시간 = 시간[0 ];
반환(0);
}
}
Here 메서드에서는 먼저 EnterOpenBar라는 외부 변수를 선언하여 이 기능을 켜거나 끕니다.
init() 함수에서는 현재 막대의 타임스탬프를 CurrentTime에 할당합니다. 이렇게 하면 다음 막대가 열릴 때까지 거래 조건 확인이 지연됩니다.
다음으로 CurrentTime 변수의 값을 현재 막대의 타임스탬프인 Time[0]과 비교합니다. 이 두 값이 일치하지 않으면 새 막대가 감지되고 새 막대에서 계속 거래를 열 수 있습니다.
2. 거래량 방식
아래는 개통 확인에 사용된 거래 내역입니다. 새로운 막대 측정 방법에 대한 코드입니다.
외부 부울 EnterOpenBar = true;
내부 시작()
부울 OpenBar=true;
if(EnterOpenBar) if(iVolume(NULL,0,0)>1) OpenBar=false;
p>
If (OpenBar) {
// 새 바의 첫 번째 주문 번호 찾기
// 매수 및 매도 조건은 여기에 있습니다
Return ( 0);
}
볼륨 방법에는 훨씬 짧은 코드 조각이 포함되어 있기 때문에 선호합니다.
이전 방법과 마찬가지로 먼저 EnterOpenBar라는 외부 변수를 선언하여 기능을 켜고 끕니다. init() 함수에는 아무것도 필요하지 않습니다.
볼륨에 따른 오픈바 상태를 확인하려면 코드 한 줄만 넣으면 됩니다. 이 조건은 볼륨이 1인지 확인합니다. 이 경우 새 바의 첫 번째 주문 번호를 찾았으므로 OpenBar=true입니다. 볼륨이 1(>1)보다 큰 경우 OpenBar = false입니다. 더 이상 새 막대가 아니기 때문입니다.