MQL4-DLL 번들에서 문자열을 전달할 때 이러한 문제를 발견했습니다. MQL4 코드에서 DLL 의 함수를 호출 하고 문자열을 전달합니다.
#import "MyDll.dll"
void passSymbol(string symb);
void start() {
passSymbol(Symbol());
}
dll에서 도구 이름과 함께 이 줄을 수락합니다.
_DLLAPI int __stdcall passSymbol(char* symbol) {
указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще. }
그리고 어느 시점에서(정상적으로 작동하려면 반나절) dll이 갑자기 도구 이름 대신 이해할 수 없는 문자가 포함된 왼쪽 문자열을 가져옵니다. mql5에서 비슷한 코드를 확인할 수 있습니까? 메모리에 대한 포인터로 볼 수 있는 것이 MQL4에서 잘못되었거나 스레드 문자열에 대한 액세스 충돌이 터미널 내부에서 가끔 발생합니다.
이중 배열 및 int 변수는 이러한 문제 없이 올바르게 전달됩니다.
나중에 MQL5-DLL 번들에 대한 시간이 나타날 때 테스트를 작성하지만 지금 이 순간도 테스트하고 있다면 각 프로세스를 반복하여 dll에 문자열을 전달하는 안정성을 확인하는 테스트를 작성하십시오. 오랜 시간 동안 틱.
그리고 모든 것이 이미 오래전에 완료되었다면(C, Delphi, ...) 왜 바퀴를 재발명합니까?
IMHO MT5의 문제는 처음부터 시작되었습니다. 바로 이 제품이 해결하도록 설계된 것에 대한 명확한 비전이 없다는 것입니다. 현대화되고 MT4 제품을 기반으로 하지만 속도 및 고급 기능 면에서 새 버전으로 업그레이드되거나 잘 계획된 구조와 확장성(예: 비즈니스 클래스 포함, 또는 거래 프레임워크, 명확하게 정의된 특정 작업 클래스를 수행하고, 일반적인 기능과 널리 사용 가능한 소프트웨어 지원 도구를 갖춘 일부 최신 프로그래밍 언어/환경을 기반으로 함). 반대를 통합하려는 시도, 말하자면 "가장 재능 있는 독주자"의 즉흥적 방법으로 일종의 설탕에 절인 설탕을 양조하여 이 딜레마를 해결하는 것은 완전히 성공적이지 않은 것 같습니다.
이것이 누군가에게 건설의 그림자가없는 순수한 홍수로 보이면 두 번째로 우리는 당신을 목욕탕으로 데려갈 것입니다. 그렇지 않으면 완전히 쏠 것입니다 :)
MQL은 프로그래밍 기술이 거의 없는 트레이더를 대상으로 합니다. 인형을 위한 A la Basic.
나는 그런 입장에 대해 반대할 것이 없습니다. 그것도 감사합니다.
그러나 MQL5를 " 분석 시스템 개발을 위한 본격적인 자급자족 환경. 타사 프로그램도 사용할 필요가 없는 그런 환경 "으로 포지셔닝하는 것은 심각한 주장입니다. 어떤 종류의 소화 가능한 수프 세트와 코어를 "연결"하려면 개인 애호가가 아니라 훌륭한 건축가의 지도 하에 전문 프로그래머로 구성된 전체 팀의 작업에 수년이 걸릴 것입니다. 나는 예산과 관리에 대해 아무 말도 할 수 없습니다. 이들은 이미 프로젝트의 다른 수준입니다.
열심히 일하는 회사 직원들을 응원하고 싶습니다. 그들의 노고에 감사하다는 말을 전하고 싶습니다. 그러나 우리는 진실을 직시해야 합니다. MQL5는 목표 달성의 한 단계일 뿐입니다.
통화 속도를 확인하는 것은 매우 간단합니다. 예를 들어 대략 다음과 같이 계산할 수 있습니다.
Quad Q9400 @ 2.66Ghz에서 초당 57,000건의 전화를 받았습니다. 동일한 코드는 제어 및 바인딩이 없기 때문에 MetaTrader 4에서 초당 약 20,000,000번의 호출을 제공합니다.
MetaTrader 5에서 DLL 호출 손실을 줄이기 위해 확실히 노력할 것입니다.
기본적으로 활성화되고 dll 호출을 위해 이러한 래퍼를 삽입하는 특수 컴파일러 지시문을 만드는 것이 좋습니다. 비활성화된 상태에서는 이러한 래퍼를 삽입하지 않는 것이 좋습니다. 디버그 및 릴리스 모드와 같습니다. 모두 동일하지만 때로는 57K로는 충분하지 않습니다. 같은 시간이 dll의 시간으로 소모됩니다.
HideYourRichess : 기본적으로 활성화되고 dll 호출을 위해 이러한 래퍼를 삽입하는 특수 컴파일러 지시문을 만드는 것이 좋습니다. 비활성화된 상태에서는 이러한 래퍼를 삽입하지 않는 것이 좋습니다. 디버그 및 릴리스 모드와 같습니다. 모두 동일하지만 때로는 57K로는 충분하지 않습니다. 같은 시간이 dll의 시간으로 소모됩니다.
빌드 240에서는 래퍼가 단순화되었으며 이제 호출 속도는 초당 19,911,000 호출입니다.
MQL4-DLL 번들에서 문자열을 전달할 때 이러한 문제를 발견했습니다. MQL4 코드에서 DLL 의 함수를 호출 하고 문자열을 전달합니다.
dll에서 도구 이름과 함께 이 줄을 수락합니다.
그리고 어느 시점에서(정상적으로 작동하려면 반나절) dll이 갑자기 도구 이름 대신 이해할 수 없는 문자가 포함된 왼쪽 문자열을 가져옵니다.
mql5에서 비슷한 코드를 확인할 수 있습니까? 메모리에 대한 포인터로 볼 수 있는 것이 MQL4에서 잘못되었거나 스레드 문자열에 대한 액세스 충돌이 터미널 내부에서 가끔 발생합니다.
이중 배열 및 int 변수는 이러한 문제 없이 올바르게 전달됩니다.
나중에 MQL5-DLL 번들에 대한 시간이 나타날 때 테스트를 작성하지만 지금 이 순간도 테스트하고 있다면 각 프로세스를 반복하여 dll에 문자열을 전달하는 안정성을 확인하는 테스트를 작성하십시오. 오랜 시간 동안 틱.
따옴표 내보내기가 dll을 통해서만 가능하다면 내보낸 각 악기에 대한 스크립트를 걸어야 한다는 것이 밝혀졌습니다. 많다면? 예를 들어 50?
하나의 스크립트에서 여러 악기에 대한 견적을 전송할 수 있다는 것을 이해하지만 이것은 틱이 손실되지 않는 DDE에 대한 본격적인 대체가 아닙니다.
사실 우리는 "견적 발행을 위한 인터페이스 제공" 작업이 없습니다.
우리의 임무는 분석 시스템의 개발을 위한 본격적인 자급자족 환경을 만드는 것입니다 . 타사 프로그램도 사용할 필요가 없는 환경.
사실 우리는 "견적 발행을 위한 인터페이스 제공" 작업이 없습니다.
우리의 임무는 분석 시스템 개발을 위한 완전하고 자급자족할 수 있는 환경을 만드는 것입니다. 타사 프로그램도 사용할 필요가 없는 환경.
GUI가 매우 약합니다. 로직을 작성하는 데 2일이 걸렸고, 계산된 정보를 어떻게든 표시하는 데 하루가 걸렸습니다.
결과적으로 나는 모든 것을 포기했습니다 - 나는 데이터 전송 ( https://www.mql5.com/en/forum/382 )을 만들고 삶을 즐깁니다.
개발자가 너무 높은 목표를 설정하고 있습니까?
그리고 모든 것이 이미 오래전에 완료되었다면(C, Delphi, ...) 왜 바퀴를 재발명합니까?
GUI가 매우 약합니다. 로직을 작성하는 데 2일이 걸렸고, 계산된 정보를 어떻게든 표시하는 데 하루가 걸렸습니다.
결과적으로 나는 모든 것을 포기했습니다 - 나는 데이터 전송 ( https://www.mql5.com/en/forum/382 )을 만들고 삶을 즐깁니다.
개발자가 너무 높은 목표를 설정하고 있습니까?
그리고 모든 것이 이미 오래전에 완료되었다면(C, Delphi, ...) 왜 바퀴를 재발명합니까?
IMHO MT5의 문제는 처음부터 시작되었습니다. 바로 이 제품이 해결하도록 설계된 것에 대한 명확한 비전이 없다는 것입니다. 현대화되고 MT4 제품을 기반으로 하지만 속도 및 고급 기능 면에서 새 버전으로 업그레이드되거나 잘 계획된 구조와 확장성(예: 비즈니스 클래스 포함, 또는 거래 프레임워크, 명확하게 정의된 특정 작업 클래스를 수행하고, 일반적인 기능과 널리 사용 가능한 소프트웨어 지원 도구를 갖춘 일부 최신 프로그래밍 언어/환경을 기반으로 함). 반대를 통합하려는 시도, 말하자면 "가장 재능 있는 독주자"의 즉흥적 방법으로 일종의 설탕에 절인 설탕을 양조하여 이 딜레마를 해결하는 것은 완전히 성공적이지 않은 것 같습니다.
이것이 누군가에게 건설의 그림자가없는 순수한 홍수로 보이면 두 번째로 우리는 당신을 목욕탕으로 데려갈 것입니다. 그렇지 않으면 완전히 쏠 것입니다 :)
2 피사라
뿌리를 보라
MQL은 프로그래밍 기술이 거의 없는 트레이더를 대상으로 합니다. 인형을 위한 A la Basic.
나는 그런 입장에 대해 반대할 것이 없습니다. 그것도 감사합니다.
그러나 MQL5를 " 분석 시스템 개발을 위한 본격적인 자급자족 환경. 타사 프로그램도 사용할 필요가 없는 그런 환경 "으로 포지셔닝하는 것은 심각한 주장입니다. 어떤 종류의 소화 가능한 수프 세트와 코어를 "연결"하려면 개인 애호가가 아니라 훌륭한 건축가의 지도 하에 전문 프로그래머로 구성된 전체 팀의 작업에 수년이 걸릴 것입니다. 나는 예산과 관리에 대해 아무 말도 할 수 없습니다. 이들은 이미 프로젝트의 다른 수준입니다.
열심히 일하는 회사 직원들을 응원하고 싶습니다. 그들의 노고에 감사하다는 말을 전하고 싶습니다. 그러나 우리는 진실을 직시해야 합니다. MQL5는 목표 달성의 한 단계일 뿐입니다.
PS 모스크바는 즉시 건설되지 않았습니다.
통화 속도를 확인하는 것은 매우 간단합니다. 예를 들어 대략 다음과 같이 계산할 수 있습니다.
Quad Q9400 @ 2.66Ghz에서 초당 57,000건의 전화를 받았습니다. 동일한 코드는 제어 및 바인딩이 없기 때문에 MetaTrader 4에서 초당 약 20,000,000번의 호출을 제공합니다.
MetaTrader 5에서 DLL 호출 손실을 줄이기 위해 확실히 노력할 것입니다.
기본적으로 활성화되고 dll 호출을 위해 이러한 래퍼를 삽입하는 특수 컴파일러 지시문을 만드는 것이 좋습니다. 비활성화된 상태에서는 이러한 래퍼를 삽입하지 않는 것이 좋습니다. 디버그 및 릴리스 모드와 같습니다. 모두 동일하지만 때로는 57K로는 충분하지 않습니다. 같은 시간이 dll의 시간으로 소모됩니다.
우리는 2001년부터 거대한 거래자 커뮤니티와 함께 4세대 거래 언어를 체계적으로 만들었습니다. 경쟁자들은 죽었고, 그들의 관리 언어는 발전하지 않았지만 우리는 일했고, 일했고, 계속 일할 것입니다.
Renat :
우리는 일했고, 일했고, 계속 일할 것입니다.
증조부 레닌이 유언했듯이.
;)
기억이 안나는데 이미 물어본거 같은데...그리고 MKL5를 사용하여 간단한 dll을 만들 수 있습니다.
간단히 말해서 편집기에서 작성하고 컴파일 ...?