흠, 이 라이브러리에 대해 아무것도 몰랐습니다. 그리고 실제로 사용하는 방법, 어떤 기능이 있습니까?
MT와 R 사이의 변수와 배열의 양방향 전송. 거기에 인용하고 결과와 명령을 되돌립니다. 기능 설명: /** * dll 버전을 반환합니다. 반환 값의 상위 16비트 *는 메이저 버전과 하위 16비트 마이너입니다. 이것 * RInit()에서 이 헤더 파일과 * zzdll이 함께 맞습니다. */ int RGetDllVersion();
/** * 이것은 직접 호출을 의미하지 않으며, * 성공적인 버전 확인 후 RInit()에 의해 호출됩니다. * 새 R 세션을 시작하려면 RInit()를 호출해야 합니다. */ long RInit_(문자열 명령줄, int 디버그 수준);
/** * R 세션을 종료합니다. deinit() 함수에서 이것을 호출하십시오. * 이후 핸들은 더 이상 유효하지 않습니다. */ 무효 RDeinit(긴 핸들);
/** * 이 핸들에 속한 R 세션이 다음과 같으면 true를 반환합니다. * 아직 실행 중입니다. R은 치명적인 오류가 발생하면 종료됩니다. *당신이 보내는 코드. 처음에 이것을 확인해야합니다 * 기능을 시작하고 모든 작업을 중지합니다. 마지막 * 충돌 이전의 명령은 로그에서 찾을 수 있습니다. * R이 더 이상 실행되지 않으면 이 라이브러리는 아무 것도 내보내지 않습니다. * 더 많은 로그 메시지가 표시되고 모든 명령을 자동으로 무시합니다. */ bool RIsRunning(긴 핸들);
/** * R이 여전히 명령을 실행 중이면 true를 반환합니다(결과 * RExecuteAsync()에 대한 호출에서 */ bool RIsBusy(긴 핸들);
/** * 코드를 실행하고 기다리지 마십시오. 그러나 모든 후속 호출 * 실행 중인 스레드가 하나만 있을 수 있으므로 대기합니다. * 주어진 시간. RIsBusy()를 사용하여 완료되었는지 확인 */ 무효 RExecuteAsync(긴 핸들, 문자열 코드);
/** * 코드를 실행하고 완료될 때까지 기다립니다. 이것은하지 않을 것입니다 * 무엇이든 반환합니다. 기본적으로 다음과 같은 결과를 얻을 수 있습니다. * RGet*() 함수, 표현식 평가도 * 코드를 실행하기만 하면 유일한 차이점은 다음과 같습니다. * RGet*() 함수는 추가로 구문 분석 및 반환을 시도합니다. * RExecute()가 실행되는 동안의 출력은 대기하고 *모든 출력을 무시합니다. */ 무효 RExecute(긴 핸들, 문자열 코드);
/** * 변수 이름에 bool을 할당합니다. R에서는 이 유형을 "논리적"이라고 합니다. */ void RassignBool(긴 핸들, 문자열 변수, 부울 값);
/** * 변수 이름에 정수를 할당합니다. */ void RassignInteger(긴 핸들, 문자열 변수, 정수 값);
/** * 변수 이름에 double을 할당합니다. */ 무효 RassignDouble(긴 핸들, 문자열 변수, 이중 값);
/** * 변수 namd에 문자열을 할당합니다. R에서는 이 유형을 "문자"라고 합니다. */ void RassignString(긴 핸들, 문자열 변수, 문자열 값);
/** * 변수 이름에 벡터를 할당합니다. 사이즈가 맞지 않을 경우 * 실제 배열 크기에 따라 좋지 않은 일이 발생할 수 있습니다. */ 무효 RassignVector(긴 핸들, 문자열 변수, 이중 &vectr[], 정수 크기);
/** * 변수에 문자 벡터(문자열 배열)를 할당합니다. 필요한 경우 * 요소를 사용하는 경우 이 명령 후에 변환하는 코드를 실행해야 합니다. 에 * 최신 버전의 R 문자열 벡터는 다음보다 더 많은 메모리가 필요하지 않습니다. * 요소에 새로운 요소를 추가하는 것이 더 쉽습니다. */ 무효 RassignStringVector(긴 핸들, 문자열 변수, 문자열 &vectr[], 정수 크기);
/** * 변수 이름에 행렬을 할당합니다. 행렬은 다음과 같이 행 번호를 가져야 합니다. * 첫 번째 차원(byrow=TRUE는 원시 데이터에 사용됨). 이 기능은 많은 * 처음부터 추가하여 거대한 행렬(수백 행)을 만드는 것보다 빠릅니다. * 모든 행에 대해 RRowBindVector()가 있는 끝에 새 행. 이 기능은 최적화되어 있습니다. * 파일 IO를 사용하여 단일 함수 호출로 엄청난 처리량 * 원시 바이너리 데이터. 소수의 요소만 포함하는 매우 작은 행렬 및 벡터의 경우 * 이것은 오버헤드가 너무 커서 다른 기능이 더 빨라질 수 있습니다. 일단 당신은 * R로 전송된 수천 개의 행이 있는 행렬이 있어야 합니다. * RRowBindVector() 만 사용하여 단일 새 항목이 도착할 때 천천히 추가로 확장하십시오. * 항상 전체 행렬의 새 복사본을 보내는 대신 데이터 벡터. */ 무효 RassignMatrix(긴 rhandle, 문자열 변수, 이중 &matr[], int 행, int 열);
/** * 행렬이나 데이터 프레임에 행을 추가합니다. 실행됩니다 * 변수 <- rbind(변수, 벡터) * 크기가 실제 배열 크기와 일치하지 않으면 나쁜 일이 발생할 수 있습니다. */ 무효 RAppendMatrixRow(긴 핸들, 문자열 변수, 이중 &vectr[], 정수 크기);
/** * 변수가 존재하면 true를 리턴하고 그렇지 않으면 false를 리턴합니다. */ bool REExists(긴 핸들, 문자열 변수);
/** * 표현식을 평가하고 bool을 반환합니다. 표현식은 모든 R 코드일 수 있습니다. * 논리적으로 평가됩니다. 논리형 벡터인 경우에만 * 첫 번째 요소가 반환됩니다. */ bool RGetBool(긴 핸들, 문자열 표현식);
/** * 표현식을 평가하고 정수를 반환합니다. 표현식은 모든 R 코드일 수 있습니다. * 정수로 평가됩니다. 부동 소수점이면 다음과 같습니다. * 반올림됨, 벡터인 경우 첫 번째 요소만 반환됩니다. */ int RGetInteger(긴 핸들, 문자열 표현식);
/** * 표현식을 평가하고 double을 반환합니다. 표현식은 모든 R 코드일 수 있습니다. * 벡터인 경우 부동 소수점 숫자로 평가됩니다. * 첫 번째 요소만 반환됩니다. */ 이중 RGetDouble(긴 핸들, 문자열 표현식);
/** * 표현식을 평가하고 이중 벡터를 반환합니다. 표현 수 * 부동 소수점 숫자의 벡터로 평가되는 모든 것입니다. * 반환 값은 복사할 수 있는 요소의 수입니다. *정렬. 크기보다 크지는 않지만 작을 수도 있습니다. * 크기가 일치하지 않으면 디버그 수준 1에서 경고가 출력됩니다. * >>> 100000개 요소로 제한됨 */ int RGetVector(긴 핸들, 문자열 표현식, 이중 &vectr[], 정수 크기);
/** * 디버깅 목적으로 print(expression)를 수행합니다. 아웃 것이다 * 디버그 레벨 0에서 디버그 모니터로 전송됩니다. */
분명히 새로운 유형에 대한 예약어입니다.
예약되어 있을 뿐만 아니라 이미 작동하고 있습니다.
예약되어 있을 뿐만 아니라 이미 작동하고 있습니다.
도움말을 검색해도 아무 것도 나타나지 않습니다.
그리고 매트릭스가 유용할 것입니다.
변수를 통한 크기 설정 작업
정수 m1=2; 정수 m2=2;
행렬 m(m1, m2);
그리고 이전에는 동적 배열을 통해 증기 목욕을 해야 했습니다.
도움말을 검색해도 아무 것도 나타나지 않습니다.
여기 에서 정보 만 있습니다 .
그리고 매트릭스가 유용할 것입니다.
변수를 통한 크기 설정 작업
정수 m1=2; 정수 m2=2;
행렬 m(m1, m2);
그리고 이전에는 동적 배열을 통해 증기 목욕을 해야 했습니다.
글쎄요, Renat은 일반적으로 MQL5에서 머신 러닝을 약속했습니다. 예를 들어 ONNX에 대한 지원입니다. 우리는 볼 것이다)
두 차의 교차점은 아직 누구도 능가하지 못했다
... 그리고 지연은 NS 예측에 의해 감소될 수 있습니다))
누군가 SanSanych 패키지 https://www.mql5.com/en/code/17468 을 사용하여 R에 연결하는 경우:
R.mqh 파일에서 변수 이름 벡터 및 행렬 은 컴파일하는 동안 오류가 발생하기 시작했습니다. 다른 이름으로 이름을 바꾸면 모든 것이 작동합니다. 나는 vector와 matr을 사용했다.
편집기는 int , double 과 같은 데이터 유형과 같이 이러한 단어를 파란색으로 강조 표시합니다. 분명히 새로운 유형에 대한 예약어입니다.
흠, 이 라이브러리에 대해 아무것도 몰랐습니다. 그리고 실제로 사용하는 방법, 어떤 기능이 있습니까?
요컨대, 모든 것이 헛된 것이며 시장은 MO로 속일 수 없습니다.
나는 징후와 표적을 발견했으며, 그 분류의 분포는 첫 번째 그림에 나와 있습니다.
이 데이터 세트에서 훈련된 컷버스트의 테스트 및 훈련 모델의 정확도는 93%였습니다.
두 번째 그림은 대상별 거래의 균형 및 자기자본 차트를 보여줍니다.
세 번째 그림은 훈련된 catbust 모델의 신호에 따른 거래의 균형과 자산의 그래프를 보여줍니다.
신사 숙녀 여러분, 가자.
대상은 무엇이며 어떻게 찾았습니까?
트롤을 조이려고 했습니까?
오류의 균형만 보면(+1은 정확함 -1은 클래스 1에 대해 올바르지 않음) 결과가 많이 다른가요?
흠, 이 라이브러리에 대해 아무것도 몰랐습니다. 그리고 실제로 사용하는 방법, 어떤 기능이 있습니까?
MT와 R 사이의 변수와 배열의 양방향 전송. 거기에 인용하고 결과와 명령을 되돌립니다.
기능 설명:
/**
* dll 버전을 반환합니다. 반환 값의 상위 16비트
*는 메이저 버전과 하위 16비트 마이너입니다. 이것
* RInit()에서 이 헤더 파일과
* zzdll이 함께 맞습니다.
*/
int RGetDllVersion();
/**
* 이것은 직접 호출을 의미하지 않으며,
* 성공적인 버전 확인 후 RInit()에 의해 호출됩니다.
* 새 R 세션을 시작하려면 RInit()를 호출해야 합니다.
*/
long RInit_(문자열 명령줄, int 디버그 수준);
/**
* R 세션을 종료합니다. deinit() 함수에서 이것을 호출하십시오.
* 이후 핸들은 더 이상 유효하지 않습니다.
*/
무효 RDeinit(긴 핸들);
/**
* 이 핸들에 속한 R 세션이 다음과 같으면 true를 반환합니다.
* 아직 실행 중입니다. R은 치명적인 오류가 발생하면 종료됩니다.
*당신이 보내는 코드. 처음에 이것을 확인해야합니다
* 기능을 시작하고 모든 작업을 중지합니다. 마지막
* 충돌 이전의 명령은 로그에서 찾을 수 있습니다.
* R이 더 이상 실행되지 않으면 이 라이브러리는 아무 것도 내보내지 않습니다.
* 더 많은 로그 메시지가 표시되고 모든 명령을 자동으로 무시합니다.
*/
bool RIsRunning(긴 핸들);
/**
* R이 여전히 명령을 실행 중이면 true를 반환합니다(결과
* RExecuteAsync()에 대한 호출에서
*/
bool RIsBusy(긴 핸들);
/**
* 코드를 실행하고 기다리지 마십시오. 그러나 모든 후속 호출
* 실행 중인 스레드가 하나만 있을 수 있으므로 대기합니다.
* 주어진 시간. RIsBusy()를 사용하여 완료되었는지 확인
*/
무효 RExecuteAsync(긴 핸들, 문자열 코드);
/**
* 코드를 실행하고 완료될 때까지 기다립니다. 이것은하지 않을 것입니다
* 무엇이든 반환합니다. 기본적으로 다음과 같은 결과를 얻을 수 있습니다.
* RGet*() 함수, 표현식 평가도
* 코드를 실행하기만 하면 유일한 차이점은 다음과 같습니다.
* RGet*() 함수는 추가로 구문 분석 및 반환을 시도합니다.
* RExecute()가 실행되는 동안의 출력은 대기하고
*모든 출력을 무시합니다.
*/
무효 RExecute(긴 핸들, 문자열 코드);
/**
* 변수 이름에 bool을 할당합니다. R에서는 이 유형을 "논리적"이라고 합니다.
*/
void RassignBool(긴 핸들, 문자열 변수, 부울 값);
/**
* 변수 이름에 정수를 할당합니다.
*/
void RassignInteger(긴 핸들, 문자열 변수, 정수 값);
/**
* 변수 이름에 double을 할당합니다.
*/
무효 RassignDouble(긴 핸들, 문자열 변수, 이중 값);
/**
* 변수 namd에 문자열을 할당합니다. R에서는 이 유형을 "문자"라고 합니다.
*/
void RassignString(긴 핸들, 문자열 변수, 문자열 값);
/**
* 변수 이름에 벡터를 할당합니다. 사이즈가 맞지 않을 경우
* 실제 배열 크기에 따라 좋지 않은 일이 발생할 수 있습니다.
*/
무효 RassignVector(긴 핸들, 문자열 변수, 이중 &vectr[], 정수 크기);
/**
* 변수에 문자 벡터(문자열 배열)를 할당합니다. 필요한 경우
* 요소를 사용하는 경우 이 명령 후에 변환하는 코드를 실행해야 합니다. 에
* 최신 버전의 R 문자열 벡터는 다음보다 더 많은 메모리가 필요하지 않습니다.
* 요소에 새로운 요소를 추가하는 것이 더 쉽습니다.
*/
무효 RassignStringVector(긴 핸들, 문자열 변수, 문자열 &vectr[], 정수 크기);
/**
* 변수 이름에 행렬을 할당합니다. 행렬은 다음과 같이 행 번호를 가져야 합니다.
* 첫 번째 차원(byrow=TRUE는 원시 데이터에 사용됨). 이 기능은 많은
* 처음부터 추가하여 거대한 행렬(수백 행)을 만드는 것보다 빠릅니다.
* 모든 행에 대해 RRowBindVector()가 있는 끝에 새 행. 이 기능은 최적화되어 있습니다.
* 파일 IO를 사용하여 단일 함수 호출로 엄청난 처리량
* 원시 바이너리 데이터. 소수의 요소만 포함하는 매우 작은 행렬 및 벡터의 경우
* 이것은 오버헤드가 너무 커서 다른 기능이 더 빨라질 수 있습니다. 일단 당신은
* R로 전송된 수천 개의 행이 있는 행렬이 있어야 합니다.
* RRowBindVector() 만 사용하여 단일 새 항목이 도착할 때 천천히 추가로 확장하십시오.
* 항상 전체 행렬의 새 복사본을 보내는 대신 데이터 벡터.
*/
무효 RassignMatrix(긴 rhandle, 문자열 변수, 이중 &matr[], int 행, int 열);
/**
* 행렬이나 데이터 프레임에 행을 추가합니다. 실행됩니다
* 변수 <- rbind(변수, 벡터)
* 크기가 실제 배열 크기와 일치하지 않으면 나쁜 일이 발생할 수 있습니다.
*/
무효 RAppendMatrixRow(긴 핸들, 문자열 변수, 이중 &vectr[], 정수 크기);
/**
* 변수가 존재하면 true를 리턴하고 그렇지 않으면 false를 리턴합니다.
*/
bool REExists(긴 핸들, 문자열 변수);
/**
* 표현식을 평가하고 bool을 반환합니다. 표현식은 모든 R 코드일 수 있습니다.
* 논리적으로 평가됩니다. 논리형 벡터인 경우에만
* 첫 번째 요소가 반환됩니다.
*/
bool RGetBool(긴 핸들, 문자열 표현식);
/**
* 표현식을 평가하고 정수를 반환합니다. 표현식은 모든 R 코드일 수 있습니다.
* 정수로 평가됩니다. 부동 소수점이면 다음과 같습니다.
* 반올림됨, 벡터인 경우 첫 번째 요소만 반환됩니다.
*/
int RGetInteger(긴 핸들, 문자열 표현식);
/**
* 표현식을 평가하고 double을 반환합니다. 표현식은 모든 R 코드일 수 있습니다.
* 벡터인 경우 부동 소수점 숫자로 평가됩니다.
* 첫 번째 요소만 반환됩니다.
*/
이중 RGetDouble(긴 핸들, 문자열 표현식);
/**
* 표현식을 평가하고 이중 벡터를 반환합니다. 표현 수
* 부동 소수점 숫자의 벡터로 평가되는 모든 것입니다.
* 반환 값은 복사할 수 있는 요소의 수입니다.
*정렬. 크기보다 크지는 않지만 작을 수도 있습니다.
* 크기가 일치하지 않으면 디버그 수준 1에서 경고가 출력됩니다.
* >>> 100000개 요소로 제한됨
*/
int RGetVector(긴 핸들, 문자열 표현식, 이중 &vectr[], 정수 크기);
/**
* 디버깅 목적으로 print(expression)를 수행합니다. 아웃 것이다
* 디버그 레벨 0에서 디버그 모니터로 전송됩니다.
*/
무효 RPrint(긴 핸들, 문자열 표현식);
MT와 R 사이의 변수와 배열의 양방향 전송. 거기에 인용하고 결과와 명령을 되돌립니다.
정보 감사합니다. 이 가능성을 알고 있습니다. 거기/여기에 큰 지연이 있습니까?
두 차의 교차점은 아직 누구도 능가하지 못했다