Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Собственно, для советника работающего по onTick, в режиме "Только цены открытия" при тестировании все вычисления индикаторов и вызов функции OnTick() в экспертах происходит только один раз на бар.
потому что вы берете каждый раз новое время тика, и оно конечно не равно предыдущему.
이전 기능에서 막대의 시작 시간을 가져왔습니다. 여기에서 틱이 아닌 막대의 시간을 사용하십시오.
코드에서 어떤 매개변수로 변경할 것인지 멍청한 사람에게 설명하십시오.
틱 시간이 아닌 바 시간을 설명하는 방법은 무엇입니까?
멍청한 사람에게 코드에서 어떤 매개변수로 변경할지 설명하세요.
틱 시간이 아닌 바 시간을 설명하는 방법은 무엇입니까?
멍청한 사람에게 코드에서 어떤 매개변수로 변경할지 설명하세요.
틱 시간이 아닌 바 시간을 설명하는 방법은 무엇입니까?
여기에 모든 것이 일반적으로 설명되는 이벤트 처리기 "새 막대" 입니다.
일반적으로 우리는 질문을 하기 전에 기사와 기본 코드를 보는 데 너무 게으르지 않습니다.
Вот тут все популярно описано Обработчик события "новый бар"
일반적으로 우리는 질문을 하기 전에 기사와 기본 코드를 보는 데 너무 게으르지 않습니다.
여기 mql4에서 다섯 줄로 새 막대 가 있는지 여부를 확인할 수 있습니다. 그리고 이제 많은 파일이 작성되었습니다. 어디에 둘지, 프로그램 내부에 무엇을 쓸지 명확하지 않습니다 ...
요컨대, 전문가가 있다면 내가 고통받지 않도록 코드의 예를 제공하십시오. 그리고 나 자신도 누구라도 도서관에 보낼 수 있습니다. 심지어 전자적이거나 심지어 실제입니다.
의심의 여지가 없지만 보여주기 위해 mql4 및 mql5에서 동일한 Expert Advisor를 만들고 테스트 결과를 비교한 사람이 있습니까? 코드가 올바르게 변환되면 완벽해야 합니다. 아니면 내가 틀렸어..?
여기 저기에 bar-by-bar가 있고 mql5에서 로직이 onTick에 있다면 비슷하게 나올 것입니다.
유일한 차이점은 스프레드에 있습니다. 5-ke 기록에는 스프레드가 포함되어 있습니다. 4-ke 테스터에서 실행 확산은 터미널의 현재 확산과 같습니다.
테스트가 "모든 틱"이라면 아마도 훨씬 적을 것입니다. 틱 생성 알고리즘은 버전이 다릅니다.
여기 mql4에서 다섯 줄로 새 막대 가 있는지 여부를 확인할 수 있습니다. 그리고 이제 많은 파일이 작성되었습니다. 어디에 둘지, 프로그램 내부에 무엇을 쓸지 명확하지 않습니다 ...
요컨대, 전문가가 있다면 내가 고통받지 않도록 코드의 예를 제공하십시오. 그리고 나 자신도 누구라도 도서관에 보낼 수 있습니다. 심지어 전자적이거나 심지어 실제입니다.
잠시만, lastbar 변수를 정적 또는 전역 수준으로 선언하고 전역 수준에서 iTime 배열을 선언합니다.
페이지에는 isNewBar 함수가 포함된 예제가 있습니다.
https://www.mql5.com/ru/forum/2804/38752#comment_38752
1. mql4와 mql5에서 같은 전략을 테스트한 결과를 물어본 것은 헛되지 않았다.
나는 조건이 진입 요건을 충족하면 새로운 막대에서 시장에 진입하고 지표가 역 신호를 나타내면 포지션을 닫고 새로운 막대에서 다시 진입했습니다.
mql4에서 이 절차를 사용하여 새 막대에 입력했습니다.
void Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. 새 막대
정적 날짜 시간 New_Time=0; // 현재 막대의 시간
New_Bar=거짓; // 새 막대가 없습니다.
if(New_Time!=Time[0]) // 시간 비교
{
New_Time=시간[0]; // 이제 시간은
New_Bar=참; // 새로운 바를 얻었다
}
}
내 전략에 따라 mql4에서 로봇을 테스트한 결과는 다음과 같습니다.
새 막대를 결정하기 위해 보낸 절차에 감사합니다. 그들은 일한다. 오래 기다리지 않도록 새로운 바에 Alert를 작성하는 스크립트를 작성하고 M1에서 확인했습니다.
그러나 동일한 전략은 mql5 EA의 두 절차에서 완전히 다른 결과(및 동일한 결과)를 제공합니다.
내가 상의를 찢고 발을 구르는 것이 헛된 것이 아닙니다. 결과를 반복하고 싶지만 일치하지 않습니다.
mql4에서 onStart 함수는 다음과 같습니다.
정수 시작()
{
게틴();
Fun_New_Bar();
if (New_Bar==false) return(0);
(총()>0) 경우
{
닫기판매종료();
닫기구매종료();
}
if(총()<1)
{
오픈바이();
오픈셀();
}
리턴(0);
}
mlq5에서도 거의 동일합니다.
무효 OnTick()
{
게틴();
if (NewBar())
{
if (총()>0) TryToClose();
if(총()<1)
{
OpenBuy(Lot,10,"EUR/USD(구매)",102406);
OpenSell(Lot,10,"EUR/USD(판매)",102406);
}
}
}
표시기 매개변수 처리를 위한 GetIn 및 Total() - mql4에 필요한 매직 또는 mql5에 필요한 기호가 있는 위치 수를 제공합니다.
돕다.
불일치의 원인을 찾은 것 같아요. 당신은 믿지 않을 것입니다. MT4와 MT5는 견적 내역이 다릅니다. 조금 다른 것 같지만 전략은 엄청난 차이로 테스트됩니다!!!!
다음은 여러 터미널에 있는 하나의 플롯입니다.
자세히 보시면 차이가 있습니다. 작은? 그리고 전략 테스트 결과의 차이는 무엇입니까? 그것도 작은가요???
개발자에게 연락하겠습니다! 무슨 베타!!!