CopyBuffer()를 호출할 때마다 표시기 핸들의 장애 여부를 확인해야 하는 이유는 무엇인가요? 내 EA에서이 절차를 한 번 수행했는데 ( 데이터 동기화를 확인한 후 첫 번째 틱이 도착하면) 나중에 오류 4807 오류 표시기 핸들이 발생하기 시작했습니다. CSymTotal=7. 핸들이 배열로 수신되었습니다:
for (int i=0;i<CSymTotal;i++)
{
H_Ind[i]=iSAR(CSymList[i],PSARTF,PSARStep,PSARMax);
}
인쇄 확인 결과 7개의 H_Ind[0..6] 모두 각각 10..15, 즉 -1과 다른 값을 가짐을 알 수 있습니다. 핸들은 유효한 것 같지만 CopyBuffer(H_Ind[0-6]...)에 대한 응답으로 CopyBuffer=-1, LastError=4807(!!!) 을 받습니다.때로는 정상적으로 진행되기도 하고 때로는 에러가 발생하기도 합니다.
이 글에서와 같은검사를 도입한 후,
if(H_Ind[CSymListItem]==INVALID_HANDLE)//--- 핸들이 유효하지 않은 경우
{
//--- создадим его снова
H_Ind[CSymListItem]=iSAR(CSymList[CSymListItem],PSARTF,PSARStep,PSARMax);
//--- 함수 종료return(0);
}
else
{
cb=CopyBuffer(H_Ind[CSymListItem],0,0,BarsCheck,PSARBuffer);
...
지금까지는 모든 것이 제대로 작동하고 있습니다. 미스터리...
내 잘못이 뭔지 모르겠어요.... 그리고 가장 중요한 것은 CopyBuffer()를 사용할 때마다 핸들의 유효성을 검사하고 다시 생성해야하는이유는 무엇입니까? 전문가 어드바이저가 작업을 마칠 때까지 저장되지 않나요? 일반적으로 꼭 필요한 기능인가요, 아니면 예제의 편의를 위해 필요한 기능인가요?
CopyBuffer()를 호출할 때마다 표시기 핸들의 장애 여부를 확인해야 하는 이유는 무엇인가요? 내 EA에서이 절차를 한 번 수행했는데 ( 데이터 동기화를 확인한 후 첫 번째 틱이 도착하면) 나중에 오류 4807 오류 표시기 핸들이 발생하기 시작했습니다. CSymTotal=7. 핸들이 배열로 수신되었습니다:
인쇄 확인 결과 7개의 H_Ind[0..6] 모두 각각 10..15, 즉 -1과 다른 값을 가짐을 알 수 있습니다. 핸들은 유효한 것 같지만 CopyBuffer(H_Ind[0-6]...)에 대한 응답으로 CopyBuffer=-1, LastError=4807(!!!) 을 받습니다.때로는 정상적으로 진행되기도 하고 때로는 에러가 발생하기도 합니다.
이 글에서와 같은검사를 도입한 후,
지금까지는 모든 것이 제대로 작동하고 있습니다. 미스터리...
내 잘못이 뭔지 모르겠어요.... 그리고 가장 중요한 것은 CopyBuffer()를 사용할 때마다 핸들의 유효성을 검사하고 다시 생성해야하는이유는 무엇입니까? 전문가 어드바이저가 작업을 마칠 때까지 저장되지 않나요? 꼭 필요한 기능인가요, 아니면 예제의 편의를 위한 기능인가요?
내 예제에서 조건은 다음과 같습니다. 핸들이 유효하면 데이터 복사를 진행합니다. 그렇지 않은 경우 지표 계산에 시간이 걸리므로 지표를 다시 만들고이 함수를 종료합니다. 복사하는 동안 지표를 다시 계산할 수 있으므로 CopyBuffer ()는 데이터가 준비되는 즉시 -1을 반환하므로 함수가 작업을 수행하므로 모든 것을 확인해야합니다.
sergey1294: 내 예제에서 조건은 다음과 같습니다. 핸들이 유효하면 데이터 복사를 진행합니다. 그렇지 않은 경우 표시기 계산에 시간이 걸리므로 표시기를 다시 만들고이 함수를 종료합니다. 복사하는 동안 표시기를 다시 계산할 수 있으므로 CopyBuffer ()는 데이터가 준비되는 즉시 -1을 반환하므로 함수가 작업을 수행하므로 모든 것을 확인해야하는 이유입니다.
네, 세르게이, 이해합니다. 기사나 작성자에게 그늘을 드리우려는 의도는 아니었습니다. 기사는 훌륭합니다. 이것은 불만이 아니라 답을 찾으려는 시도입니다. 이 주제에 대해 제가 찾은 가장 근접한 논의일 뿐입니다. 여러분도 더 정확한 답을 알고 싶지 않을까요? )
Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!
저희는 이 기사를 정말 좋아합니다. 지금까지 이러한 신호를 사용하여 시각적 마법사 소프트웨어로 10명의 전문가 어드바이저를 만들었습니다. 여기에서 확인할 수 있습니다: http://www.molanis.com/products/expert-advisor-visual-wizard/expert-advisors-mt5
Please note that these Expert Advisors were created for educational purposes and do not constitute any financial advice. Before using the following EAs, please take into account the following: THE DOWNLOAD FILES ARE IN MOL5 FORMAT (MOLANIS 5 FORMAT - A .MOL5 FILE FOR THE EA VISUAL WIZARD). TO OBTAIN THE EA FOR MT5, DOWNLOAD THE STRATEGY...
이 기사의 경우 아이디어는 매우 좋습니다. 하지만 OOP와 프로그래밍의 일반적인 개념인 추상성을 잊어버렸습니다. 함수 내부에는 하드 코딩 된 이니셜, 현재 기호, 현재 기간, 표시기 매개 변수가 있습니다. 아이디어는 좋지만 완전히 구현되지는 않았고 완벽과는 거리가 멀다. 예를 들어 - 각각 다른 기간과 다른 심볼에서 지표 선의 교차점을 확인하고 싶습니다. 둘째 - 터미널이 일시적으로 서버와의 연결이 끊어져 처리 중인 바 3개를 놓친 경우 기능은 어떻게 되나요? 신호는 있지만 입력이 누락된 것입니다. 신호 검색은 CHARGE로 수행해야 합니다. 그런 다음 신호가 이미 처리되었는지 확인해야 합니다. 교차점이 너무 많아서 스스로 놀랄 수도 있습니다. 매개 변수 (표시기 번호, 기호, 시간 프레임, 검색 시작, 검색 종료, 표시기 라인...)를 함수에 전달하는 것으로 충분합니다. - 그러면 시스템을 더 유연하게 만들 수 있고 전문가 고문은 사람이 접근 할 수없는 것, 즉 서로 다른 심볼과 다른 시간대의 선의 교차점을 볼 수 있습니다. 이것은 여기에 제공된 기능보다 훨씬 낫습니다. 또한 변수 이름 지정의 개념을 이해해야 합니다. 아무 의미 없는 이름을 가진 변수가 너무 많지만 이는 별도의 주제입니다. 이를 프로그래밍 스타일이라고 합니다. 누구나 자신만의 스타일이 있습니다. 하지만 제가 MT4에서 사용하려고 했던 개념에 조금씩 가까워지고 있는 것 같아 매우 고무적입니다.
이 기사의 경우 아이디어는 매우 좋습니다. 하지만 OOP와 프로그래밍의 일반적인 개념인 추상성을 잊어버렸습니다. 함수 내부에는 하드 코딩 된 이니셜, 현재 기호, 현재 기간, 표시기 매개 변수가 있습니다. 아이디어는 좋지만 완전히 구현되지는 않았고 완벽과는 거리가 멀다. 예를 들어 - 각각 다른 기간과 다른 심볼에서 지표 선의 교차점을 확인하고 싶습니다. 둘째 - 터미널이 일시적으로 서버와의 연결이 끊어져 처리 중인 바 3개를 놓친 경우 기능은 어떻게 되나요? 신호는 있지만 입력이 누락된 것입니다. 신호 검색은 CHARGE로 수행해야 합니다. 그런 다음 신호가 이미 처리되었는지 확인해야 합니다. 교차점이 너무 많아서 스스로 놀랄 수도 있습니다. 매개 변수 (표시기 번호, 기호, 시간 프레임, 검색 시작, 검색 종료, 표시기 라인...)를 함수에 전달하는 것으로 충분합니다. - 그러면 시스템을 더 유연하게 만들 수 있고 전문가 고문은 사람이 접근 할 수없는 것, 즉 서로 다른 심볼과 다른 시간대의 선의 교차점을 볼 수 있습니다. 이것은 여기에 제공된 기능보다 훨씬 낫습니다. 또한 변수 이름 지정의 개념을 이해해야 합니다. 아무 의미 없는 이름을 가진 변수가 너무 많지만 이는 별도의 주제입니다. 이를 프로그래밍 스타일이라고 합니다. 누구나 자신만의 스타일이 있습니다. 하지만 제가 MT4에서 사용하려고 했던 개념에 서서히 가까워지고 있는 것을 볼 수 있어 매우 고무적입니다.
이 기사는 교차로를 확인하고 싶다면 누가 그렇게하지 못하게하는 기술 작업에 따라 작성되었습니다.
여기에 실용적인 질문이 있습니다.
CopyBuffer()를 호출할 때마다 표시기 핸들의 장애 여부를 확인해야 하는 이유는 무엇인가요? 내 EA에서이 절차를 한 번 수행했는데 ( 데이터 동기화를 확인한 후 첫 번째 틱이 도착하면) 나중에 오류 4807 오류 표시기 핸들이 발생하기 시작했습니다. CSymTotal=7. 핸들이 배열로 수신되었습니다:
인쇄 확인 결과 7개의 H_Ind[0..6] 모두 각각 10..15, 즉 -1과 다른 값을 가짐을 알 수 있습니다. 핸들은 유효한 것 같지만 CopyBuffer(H_Ind[0-6]...)에 대한 응답으로 CopyBuffer=-1, LastError=4807(!!!) 을 받습니다.때로는 정상적으로 진행되기도 하고 때로는 에러가 발생하기도 합니다.이 글에서와 같은검사를 도입한 후,
지금까지는 모든 것이 제대로 작동하고 있습니다. 미스터리...
내 잘못이 뭔지 모르겠어요.... 그리고 가장 중요한 것은 CopyBuffer()를 사용할 때마다 핸들의 유효성을 검사하고 다시 생성해야하는이유는 무엇입니까? 전문가 어드바이저가 작업을 마칠 때까지 저장되지 않나요? 일반적으로 꼭 필요한 기능인가요, 아니면 예제의 편의를 위해 필요한 기능인가요?
여기에 실용적인 질문이 있습니다.
CopyBuffer()를 호출할 때마다 표시기 핸들의 장애 여부를 확인해야 하는 이유는 무엇인가요? 내 EA에서이 절차를 한 번 수행했는데 ( 데이터 동기화를 확인한 후 첫 번째 틱이 도착하면) 나중에 오류 4807 오류 표시기 핸들이 발생하기 시작했습니다. CSymTotal=7. 핸들이 배열로 수신되었습니다:
인쇄 확인 결과 7개의 H_Ind[0..6] 모두 각각 10..15, 즉 -1과 다른 값을 가짐을 알 수 있습니다. 핸들은 유효한 것 같지만 CopyBuffer(H_Ind[0-6]...)에 대한 응답으로 CopyBuffer=-1, LastError=4807(!!!) 을 받습니다.때로는 정상적으로 진행되기도 하고 때로는 에러가 발생하기도 합니다.이 글에서와 같은검사를 도입한 후,
지금까지는 모든 것이 제대로 작동하고 있습니다. 미스터리...
내 잘못이 뭔지 모르겠어요.... 그리고 가장 중요한 것은 CopyBuffer()를 사용할 때마다 핸들의 유효성을 검사하고 다시 생성해야하는이유는 무엇입니까? 전문가 어드바이저가 작업을 마칠 때까지 저장되지 않나요? 꼭 필요한 기능인가요, 아니면 예제의 편의를 위한 기능인가요?
일반적으로 질문은 좀 더 광범위하게 공식화되어야 합니다:
최대 속도 조건(루프에서)에서 7개(10개) 계측기에서 지금(!) 필요한 400(0) 표시기 값을 확실히 얻기 위해 CopyBuffer() 전후에 어떤 검사, 조건 또는 지연을 도입해야 하는가?
에 대해, 반환(0) = "아, 지금은 작동하지 않았고, 다음 번에는 작동 할 것입니다...".
그건 그렇고, 나머지 복사는 그 옆에 있습니다 ...
추신. 아마도 이미 주제를 벗어난 것 같습니다. 글쎄요, 질문은 저자가 아니라 명확히 할 수있는 모든 사람을위한 것입니다 ...
내 예제에서 조건은 다음과 같습니다. 핸들이 유효하면 데이터 복사를 진행합니다. 그렇지 않은 경우 표시기 계산에 시간이 걸리므로 표시기를 다시 만들고이 함수를 종료합니다. 복사하는 동안 표시기를 다시 계산할 수 있으므로 CopyBuffer ()는 데이터가 준비되는 즉시 -1을 반환하므로 함수가 작업을 수행하므로 모든 것을 확인해야하는 이유입니다.
네, 세르게이, 이해합니다. 기사나 작성자에게 그늘을 드리우려는 의도는 아니었습니다. 기사는 훌륭합니다. 이것은 불만이 아니라 답을 찾으려는 시도입니다. 이 주제에 대해 제가 찾은 가장 근접한 논의일 뿐입니다. 여러분도 더 정확한 답을 알고 싶지 않을까요? )
별도의 스레드에 올려야 할까요?
별도의 스레드에 넣을 수 있을까요?
https://www.mql5.com/ru/forum/1880.
여기 주제에 넣으세요. 세르게이, 기사의 범위를 벗어난 것에 대해 사과드립니다. 나는 기뻐할 것이다...))))
누군가 돈 관리를 위한 20가지 방법을 알려주면 좋겠어요 !!!!!!
이 기사의 경우 아이디어는 매우 좋습니다. 하지만 OOP와 프로그래밍의 일반적인 개념인 추상성을 잊어버렸습니다. 함수 내부에는 하드 코딩 된 이니셜, 현재 기호, 현재 기간, 표시기 매개 변수가 있습니다. 아이디어는 좋지만 완전히 구현되지는 않았고 완벽과는 거리가 멀다. 예를 들어 - 각각 다른 기간과 다른 심볼에서 지표 선의 교차점을 확인하고 싶습니다. 둘째 - 터미널이 일시적으로 서버와의 연결이 끊어져 처리 중인 바 3개를 놓친 경우 기능은 어떻게 되나요? 신호는 있지만 입력이 누락된 것입니다. 신호 검색은 CHARGE로 수행해야 합니다. 그런 다음 신호가 이미 처리되었는지 확인해야 합니다. 교차점이 너무 많아서 스스로 놀랄 수도 있습니다. 매개 변수 (표시기 번호, 기호, 시간 프레임, 검색 시작, 검색 종료, 표시기 라인...)를 함수에 전달하는 것으로 충분합니다. - 그러면 시스템을 더 유연하게 만들 수 있고 전문가 고문은 사람이 접근 할 수없는 것, 즉 서로 다른 심볼과 다른 시간대의 선의 교차점을 볼 수 있습니다. 이것은 여기에 제공된 기능보다 훨씬 낫습니다. 또한 변수 이름 지정의 개념을 이해해야 합니다. 아무 의미 없는 이름을 가진 변수가 너무 많지만 이는 별도의 주제입니다. 이를 프로그래밍 스타일이라고 합니다. 누구나 자신만의 스타일이 있습니다. 하지만 제가 MT4에서 사용하려고 했던 개념에 조금씩 가까워지고 있는 것 같아 매우 고무적입니다.
이 기사의 경우 아이디어는 매우 좋습니다. 하지만 OOP와 프로그래밍의 일반적인 개념인 추상성을 잊어버렸습니다. 함수 내부에는 하드 코딩 된 이니셜, 현재 기호, 현재 기간, 표시기 매개 변수가 있습니다. 아이디어는 좋지만 완전히 구현되지는 않았고 완벽과는 거리가 멀다. 예를 들어 - 각각 다른 기간과 다른 심볼에서 지표 선의 교차점을 확인하고 싶습니다. 둘째 - 터미널이 일시적으로 서버와의 연결이 끊어져 처리 중인 바 3개를 놓친 경우 기능은 어떻게 되나요? 신호는 있지만 입력이 누락된 것입니다. 신호 검색은 CHARGE로 수행해야 합니다. 그런 다음 신호가 이미 처리되었는지 확인해야 합니다. 교차점이 너무 많아서 스스로 놀랄 수도 있습니다. 매개 변수 (표시기 번호, 기호, 시간 프레임, 검색 시작, 검색 종료, 표시기 라인...)를 함수에 전달하는 것으로 충분합니다. - 그러면 시스템을 더 유연하게 만들 수 있고 전문가 고문은 사람이 접근 할 수없는 것, 즉 서로 다른 심볼과 다른 시간대의 선의 교차점을 볼 수 있습니다. 이것은 여기에 제공된 기능보다 훨씬 낫습니다. 또한 변수 이름 지정의 개념을 이해해야 합니다. 아무 의미 없는 이름을 가진 변수가 너무 많지만 이는 별도의 주제입니다. 이를 프로그래밍 스타일이라고 합니다. 누구나 자신만의 스타일이 있습니다. 하지만 제가 MT4에서 사용하려고 했던 개념에 서서히 가까워지고 있는 것을 볼 수 있어 매우 고무적입니다.