초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 850

 
Artyom Trishkin :
곡선 표시기를 편집합니다. 그는 상황에 맞는 메뉴의 명령에서 발생하는 완전한 재계산을 통해서만 당신을 위해 선을 그릴 수 있습니다.
알렉세이 빅토로프 :

mql4에도 있습니다.

고맙습니다.

 
목발을 짚고 나왔다.) 시간이 걸리는 수직선 을 수동으로 드래그 한 후 표시기를 업데이트해야했습니다. 오브젝트 드래깅 이벤트 기능을 사용하고 그 안에 TF를 원래대로 되돌리는 기능을 넣었습니다. 어떤 이유로 업데이트가 몇 초 정도 지연되어 트리거됩니다. TF를 전환하는 기능이나 무언가가 너무 느리게 작동하여 이해하지 못했습니다.
 
khorosh :
목발을 짚고 나왔다.) 시간이 걸리는 수직선 을 수동으로 드래그 한 후 표시기를 업데이트해야했습니다. 오브젝트 드래깅 이벤트 기능을 사용하고 그 안에 TF를 원래대로 되돌리는 기능을 넣었습니다. 어떤 이유로 업데이트가 몇 초 정도 지연되어 트리거됩니다. TF를 전환하는 기능이나 무언가가 너무 느리게 작동하여 이해하지 못했습니다.

이 기능은 비동기식입니다. 이벤트 큐에 명령을 넣은 결과만 반환합니다.

즉각적인 업데이트를 위해 차트 전환 명령 후 ChartRedraw() 명령을 실행합니다.

물론 일반적으로 잘못된 접근 방식입니다. 선이 이동된 후에만 차트를 업데이트해야 하는 경우 표시기 재계산 주기는 OnCalculate()가 아니라 ChartEvent()에서 호출되어야 합니다. 새 데이터가 있는 라인 재계산 주기(일부 데이터에는 라인이 필요합니까?)

아니면 표시기가 단순히 올바르게 만들어지지 않고 현재 데이터의 0 막대를 업데이트하지 않고 이를 깼습니까?

 
ilyav :

누군가 MT5에서 어드바이저 코드를 수정하도록 도와줄 수 있습니까?

매뉴얼을 읽었지만 컴파일할 때 2개의 경고를 물리칠 수 없습니다.

'xxx' 선언은 전역 선언을 숨깁니다.

그리고

유형 변환으로 인한 데이터 손실 가능성

내가 지원하는 어드바이저

방금 바보같이 전역 변수의 이름을 수정하고 유형을 정렬했습니다.

게으름을 극복하기 위해 10,000,000 루블을 지불 할 수 있습니다.

파일:
 
Artyom Trishkin :

방금 바보같이 전역 변수의 이름을 수정하고 유형을 정렬했습니다.

게으름을 극복하기 위해 10,000,000루블을 지불할 수 있습니다.

정말 감사합니다.

어떻게 고쳤는지 보여드리기 부끄럽습니다)

int CountTrades(긴 PositionID1)

 
Artyom Trishkin :

이 기능은 비동기식입니다. 이벤트 큐에 명령을 넣은 결과만 반환합니다.

즉각적인 업데이트를 위해 차트 전환 명령 후 ChartRedraw() 명령을 실행합니다.

물론 일반적으로 잘못된 접근 방식입니다. 선이 이동된 후에만 차트를 업데이트해야 하는 경우 표시기 재계산 주기는 OnCalculate()가 아니라 ChartEvent()에서 호출되어야 합니다. 새 데이터가 있는 라인 재계산 주기(일부 데이터에는 라인이 필요합니까?)

아니면 표시기가 단순히 올바르게 만들어지지 않고 현재 데이터의 0 표시줄을 업데이트하지 않고 이를 깼습니까?

표시기는 마지막으로 계산되지 않은 막대를 계산합니다. 그리고 수직을 드래그한 후 수직의 새로운 시간을 읽은 후 완전히 다시 계산해야 합니다. 여기에서 그것에 대해 쓰고 작동 방식에 대한 스크린샷을 게시했습니다.

감사합니다. 아이디어를 시도해 보겠습니다. 일반적으로 나는 지표에 약하고 항상 고문에 주로 종사했습니다.

 
Artyom Trishkin :

이 기능은 비동기식입니다. 이벤트 큐에 명령을 넣은 결과만 반환합니다.

즉각적인 업데이트를 위해 차트 전환 명령 후 ChartRedraw() 명령을 실행합니다.

물론 일반적으로 잘못된 접근 방식입니다. 선이 이동된 후에만 차트를 업데이트해야 하는 경우 표시기 재계산 주기는 OnCalculate()가 아니라 ChartEvent()에서 호출되어야 합니다. 새 데이터가 있는 라인 재계산 주기(일부 데이터에는 라인이 필요합니까?)

아니면 표시기가 단순히 올바르게 만들어지지 않고 현재 데이터의 0 표시줄을 업데이트하지 않고 이를 깼습니까?

조언해주신대로 했습니다. 모든 것이 훌륭했습니다. 이제 드래그 직후 표시기가 완전히 다시 그려집니다. 다시 한번 감사합니다.

 
khorosh :

조언해주신대로 했습니다. 모든 것이 훌륭했습니다. 이제 드래그 직후 표시기가 완전히 다시 그려집니다. 다시 한번 감사합니다.

별말씀을요. 그러나 그는 OnCalculate() 를 그려야 합니까?

결국 차트에 던졌을 때 그는 여전히 선의 움직임에 대해 알지 못하지만 선을 그려야합니다.

 
Artyom Trishkin :

별말씀을요. 그러나 그는 OnCalculate()에서 그려야 합니까, 안 합니까?

결국 차트에 던졌을 때 그는 여전히 선의 움직임에 대해 알지 못하지만 선을 그려야합니다.

지표가 차트에 배치되면 init()에서 수직이 생성되고 일부 시간이 초기에 여기에 설정됩니다(예: Time[10]). OnChartEvent() 및 OnCalculate()에서 코드를 복제했습니다. OnChartEvent에서만 모든 막대에 대해 재계산을 수행했습니다.

 
khorosh :

지표가 차트에 배치되면 init()에서 수직이 생성되고 일부 시간이 초기에 여기에 설정됩니다(예: Time[10]). OnChartEvent() 및 OnCalculate()에서 코드를 복제했습니다. OnChartEvent에서만 모든 막대에 대해 재계산을 수행했습니다.

예를 들어 필요한 형식 매개 변수로 Refresh() 함수를 만들고 필요할 때 호출하는 것이 더 좋지 않습니까?

그런데 날짜 범위와 함께 Bars()를 사용하여 OnCalculate() 함수 외부의 표시기에서 Rates_total을 가져올 때 표시기가 정지될 수 있습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

iBarShift와 유사함

니콜라이 셈코 , 2018.04.05 23:47

지금은 이 옵션 을 보완하고 싶지만 이미 서비스 데스크 구독을 취소한 Bars 기능 정지 버그 를 우회하도록 하고 있습니다.

이 버그의 핵심은 Bars 함수의 start_timestop_time 이 모두 같은 막대 안에 있거나 미래에 있는 경우(0 막대 오른쪽), 이 함수는 10초 이상 멈춥니다.

아마도 조금 후에 나는 여전히 정확한 더 빠른 버전을 만들 것이지만 더 복잡합니다.


사유: