Основы языка / Объектно-ориентированное программирование / Шаблоны функций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
질문해 주셔서 감사합니다. 데이터는 D1의 iATR에서 가져왔으며 주 표시기는 더 작은 시간 프레임에서 작동하며 BarsCalculated()도 -1과 동일한 오류를 반환합니다. 내 생각에는 기능이 있지만 표시기가 없습니다(런타임 시). 동일한 기기의 다른 창에 표시기를 생성하면 모든 것이 작동합니다. 디버그 모드에서도 작동합니다. 하지만 내 질문은 이것이 버그입니까 아니면 내가 뭔가를 놓치고 있습니까?
시스템 dll에서 함수 호출 문제. 작업은 특정 포트에 매달려 메시지를 수신하는 간단한 TCP 서버를 MQL5에 작성하는 것입니다.
ws2_32.dll에서 WSAStartup(), WSAClenup(), socket(), bind(), accept(), listen(), recv() 함수를 가져왔습니다. 서버를 중지하려고 할 때까지 모든 것이 정확하게 작동합니다. 서버를 중지하고 스크립트를 올바르게 종료하려고 시도한 후 터미널이 충돌합니다.
과학적 찌르기의 방법을 이용하여 recv() 함수에 이르렀습니다.
첨부 파일에 (171) 줄이 있습니다.
int bytesCnt = recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0 );
형식으로 가져오는 경우:
int bytesCnt = 10 ; //recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);
서버는 오류 없이 중지됩니다. 나는 f-th를 사용하여 네트워크와 작업하는 예를 MSDN에서 보았고 모든 것을 유추했습니다.
tyn : 질문해 주셔서 감사합니다. 데이터는 D1의 iATR에서 가져왔으며 주 표시기는 더 작은 시간 프레임에서 작동하며 BarsCalculated()도 -1과 동일한 오류를 반환합니다. 내 생각에는 기능이 있지만 표시기가 없습니다(런타임 시). 동일한 기기의 다른 창에 표시기를 생성하면 모든 것이 작동합니다. 디버그 모드에서도 작동합니다. 하지만 내 질문은 이것이 버그입니까 아니면 내가 뭔가를 놓치고 있습니까?
나는 최근에이 문제로 어려움을 겪었습니다. 결정했습니다. 얼마나 최적인지는 모르겠지만 결정했습니다. iFractals에서 데이터만 가져왔는데 상관없습니다. 왜 TF에 대해 물었습니까? 내 관찰에 따르면 다음과 같은 일이 발생합니다. 예를 들어 표시기는 M15에서 작동합니다. 지표 데이터가 M1에서 M15까지 요청되면 모든 것이 정상이며 요청 시 데이터를 즉시 사용할 수 있습니다(첫 번째 호출이 아닌 경우). 데이터가 M30에서 요청되면(반복하지만 표시기 자체는 M15 TF에서 작동함) M30을 통해 데이터에 액세스하는 순간 새 양초 가 없습니다(예비 요청이 필요하거나 데이터가 틱임) 늦은). 아래와 같이 결정했습니다. 현재 촛불에서 BarsCalculated()의 결과를 기억합니다. 다음에 BarsCalculated()가 1만큼 값을 더 반환하자마자(새 양초가 형성됨) BarsCalculated()의 새 값을 기억하고 데이터를 복사합니다. 그러나이 순간 (이전 TF의 표시기 데이터 모양)은 현재 TF의 새 양초 형성과 일치하지 않습니다.
예, BarsCalculated()는 데이터가 전혀 없을 때 -1을 반환합니다. 내가 아는 한 이는 첫 번째 실행에서만 발생합니다. 즉, 인디케이터의 핸들을 받고 즉시 데이터를 요청할 때입니다. 또한 기다려야 합니다.
잘못된 변환 시 StringToTime 은 TimeGMT () 를 반환합니다 . 예를 들어 StringToTime (" 0" ) - 인수가 구문 분석되지 않은 경우.
예를 들어 StringToTime (" 10/24/2014") - D'2014.10.24 00:00:00'을 사용하여 인수를 구문 분석할 때 일반 시간을 반환합니다.
이건 괜찮아? 왜 TimeGMT ()입니까? 이것은 MT4 및 내 컴퓨터의 현재 시간 에서 -2시간입니다.
EA 코드에서 동일한 매개변수를 사용하는 동일한 기능이 제대로 작동합니까? "
내 코드는 디버거에서 작동하지만 일반 모드에서는 작동하지 않습니다.
정상적으로 사용할 수 없는 경우 iXXX와 같은 표시기가 필요한 이유는 무엇입니까?
오래 전에 오류 4806에 대한 질문이 있었습니다. " 사용자 지정 표시기 에 CopyBuffer 기능을 배치하면 오류 4806이 발생하는 이유는 무엇입니까?
EA 코드에서 동일한 매개변수를 사용하는 동일한 기능이 제대로 작동합니까? "
내 코드는 디버거에서 작동하지만 일반 모드에서는 작동하지 않습니다.
정상적으로 사용할 수 없는 경우 iXXX와 같은 표시기가 필요한 이유는 무엇입니까?
안녕하세요. CopyBuffer에 대한 데이터는 표시기가 실행 중인 동일한 TF에서 가져온 것입니까?
BarsCalculated() 함수를 사용하여 문제를 해결해 보셨습니까?
특정 클래스에 속하는 경우 MQL OOP에서 포인터 유형을 확인하는 방법(JavaScript의 instanceof 유형 또는 C++의 typeid)
안녕하세요. CopyBuffer에 대한 데이터는 표시기가 실행 중인 동일한 TF에서 가져온 것입니까?
BarsCalculated() 함수를 사용하여 문제를 해결해 보셨습니까?
안녕하세요.
시스템 dll에서 함수 호출 문제. 작업은 특정 포트에 매달려 메시지를 수신하는 간단한 TCP 서버를 MQL5에 작성하는 것입니다.
ws2_32.dll에서 WSAStartup(), WSAClenup(), socket(), bind(), accept(), listen(), recv() 함수를 가져왔습니다. 서버를 중지하려고 할 때까지 모든 것이 정확하게 작동합니다. 서버를 중지하고 스크립트를 올바르게 종료하려고 시도한 후 터미널이 충돌합니다.
과학적 찌르기의 방법을 이용하여 recv() 함수에 이르렀습니다.
첨부 파일에 (171) 줄이 있습니다.
형식으로 가져오는 경우:
서버는 오류 없이 중지됩니다. 나는 f-th를 사용하여 네트워크와 작업하는 예를 MSDN에서 보았고 모든 것을 유추했습니다.
누구든지 문제를 해결하는 방법에 대한 아이디어가 있습니까?
질문해 주셔서 감사합니다. 데이터는 D1의 iATR에서 가져왔으며 주 표시기는 더 작은 시간 프레임에서 작동하며 BarsCalculated()도 -1과 동일한 오류를 반환합니다. 내 생각에는 기능이 있지만 표시기가 없습니다(런타임 시). 동일한 기기의 다른 창에 표시기를 생성하면 모든 것이 작동합니다. 디버그 모드에서도 작동합니다. 하지만 내 질문은 이것이 버그입니까 아니면 내가 뭔가를 놓치고 있습니까?
나는 최근에이 문제로 어려움을 겪었습니다. 결정했습니다. 얼마나 최적인지는 모르겠지만 결정했습니다. iFractals에서 데이터만 가져왔는데 상관없습니다. 왜 TF에 대해 물었습니까? 내 관찰에 따르면 다음과 같은 일이 발생합니다. 예를 들어 표시기는 M15에서 작동합니다. 지표 데이터가 M1에서 M15까지 요청되면 모든 것이 정상이며 요청 시 데이터를 즉시 사용할 수 있습니다(첫 번째 호출이 아닌 경우). 데이터가 M30에서 요청되면(반복하지만 표시기 자체는 M15 TF에서 작동함) M30을 통해 데이터에 액세스하는 순간 새 양초 가 없습니다(예비 요청이 필요하거나 데이터가 틱임) 늦은). 아래와 같이 결정했습니다. 현재 촛불에서 BarsCalculated()의 결과를 기억합니다. 다음에 BarsCalculated()가 1만큼 값을 더 반환하자마자(새 양초가 형성됨) BarsCalculated()의 새 값을 기억하고 데이터를 복사합니다. 그러나이 순간 (이전 TF의 표시기 데이터 모양)은 현재 TF의 새 양초 형성과 일치하지 않습니다.
예, BarsCalculated()는 데이터가 전혀 없을 때 -1을 반환합니다. 내가 아는 한 이는 첫 번째 실행에서만 발생합니다. 즉, 인디케이터의 핸들을 받고 즉시 데이터를 요청할 때입니다. 또한 기다려야 합니다.
표시기 핸들을 생성한 직후에는 데이터가 준비되지 않았으므로 데이터를 요청할 수 없습니다. 초기화 및 재계산 프로세스는 복잡하고 많은 요인에 따라 달라집니다.
올바른 전략은 onit에서 핸들을 만들고 첫 번째 틱이 도착할 때 데이터로 작업하는 것입니다.
표시기 핸들을 생성한 직후에는 데이터가 준비되지 않았으므로 데이터를 요청할 수 없습니다. 초기화 및 재계산 프로세스는 복잡하고 많은 요인에 따라 달라집니다.
올바른 전략은 onit에서 핸들을 만들고 첫 번째 틱이 도착할 때 데이터로 작업하는 것입니다.