오류, 버그, 질문 - 페이지 1593 1...158615871588158915901591159215931594159515961597159815991600...3184 새 코멘트 Vladimir Pastushak 2016.06.02 15:52 #15921 제품 리콜에 대한 스마트 메시지가 오면 LC와 웹 사이트 상단에 cl이 없습니다. Yury Kirillov 2016.06.02 17:07 #15922 매직 스크립트는 시간을 되돌립니다 ;-) Vladislav Andruschenko 2016.06.02 17:11 #15923 Vladimir Pastushak : 제품 리콜에 대한 스마트 메시지가 오면 LC와 웹 사이트 상단에 cl이 없습니다. 항상 이랬어요, 어디선가 저에게 사이트에서 해보라고 했던 기억이 납니다. 후기를 남겨도 이상하고, 바로 물어봐도 2개월이 지나야 알게 되는 게 이상해서요. :-) Alexey Volchanskiy 2016.06.03 08:48 #15924 버그는 아니지만 공유해야합니다 쓰기 if ((!IsRunOnTester() && TimeCurrent () >= D'2016.06.31 23:59' )) // для тестировщиков, ограничение работы по времени 컴파일러는 경고를 발행합니다. 잘못된 날짜 *****.mq4 115 46 그것은 또한 날짜의 정확성에 대한 문자열 날짜를 확인합니다, 나는 충격을 받았습니다) (6월 30일) Andriy Voitenko 2016.06.03 10:46 #15925 분명히 이것은 아무도 귀찮게하지 않지만 여전히 다시 쓸 것입니다. 실제 작업: 사용 가능한 메모리의 총 크기가 약 100%인 배열을 만들고 빠르게 숫자로 채우고 계산을 수행하고 해제합니다. 나는 사용 가능한 메모리의 양을 얻으려고합니다. int mem_free_mb=( int ) TerminalInfoInteger ( TERMINAL_MEMORY_AVAILABLE ); 결과: 23987MB, 12141MB의 실제 메모리가 있습니다. 두 배 작습니다. 나는 이 수치가 화성인을 위한 것이라는 것을 이해하지만 여전히 그것을 테스트하기 위해 스크립트를 믿고 작성합니다. //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart () { #define PARTS 5 srand ( GetTickCount ()); //--- int mem_free_mb=( int ) TerminalInfoInteger ( TERMINAL_MEMORY_AVAILABLE ); //mem_free_mb=5300;//<--- Столько показывает 'Доступной' в диспетчере задач. long mem_for_calc=( long )(( double )mem_free_mb* 1024 * 1024 ); long mem_one_part=( long ) floor (( double )mem_for_calc/PARTS); if (mem_one_part>= INT_MAX - 1 ) mem_one_part= INT_MAX - 1 ; //--- printf ( "Memory for calc: %0.f MB, parts: %d, part: %0.f MB" ,mem_for_calc/ 1024 / 1024 ,PARTS,mem_one_part/ 1024 / 1024 ); char array1[]; char array2[]; char array3[]; char array4[]; char array5[]; int res= ArrayResize (array1,( int )mem_one_part); Print ( "Array1 Resize: " ,res); if (res< 1 ) return ; printf ( "Reserved: %0.f MB" , 1.0 *mem_one_part/ 1024 / 1024 ); res= ArrayResize (array2,( int )mem_one_part); Print ( "Array2 Resize: " ,res); if (res< 1 ) return ; printf ( "Reserved: %0.f MB" , 2.0 *mem_one_part/ 1024 / 1024 ); res= ArrayResize (array3,( int )mem_one_part); Print ( "Array3 Resize: " ,res); if (res< 1 ) return ; printf ( "Reserved: %0.f MB" , 3.0 *mem_one_part/ 1024 / 1024 ); res= ArrayResize (array4,( int )mem_one_part); Print ( "Array4 Resize: " ,res); if (res< 1 ) return ; printf ( "Reserved: %0.f MB" , 4.0 *mem_one_part/ 1024 / 1024 ); res= ArrayResize (array5,( int )mem_one_part); Print ( "Array5 Resize: " ,res); if (res< 1 ) return ; printf ( "Reserved: %0.f MB" , 5.0 *mem_one_part/ 1024 / 1024 ); uint gtc= GetTickCount (); for ( int i= 0 ;i<mem_one_part;i++) { char ch=( char ) rand (); array1[i]=ch; array2[i]=ch; array3[i]=ch; array4[i]=ch; array5[i]=ch; } //--- printf ( "Spent time: %d ms" , GetTickCount ()-gtc); } 나는 일반적인 결과를 얻습니다 - array3 배열을 배포하는 것은 불가능합니다. 왜냐하면 메모리가 끝났습니다. 그런 다음 현재 사용 가능한 양을 나타내는 행의 주석 처리를 제거합니다. mem_free_mb= 5300 ; //<--- Столько показывает 'Доступной' в диспетчере задач. 그런 다음 스크립트가 성공적으로 실행됩니다. 개발자를 귀찮게 하고 싶지는 않지만 메모리 관리를 위해서는 사용 가능한 용량을 아는 것이 중요합니다. 이것을 TerminalInfoInteger 를 통해 알 수 있게 해주세요. Slava 2016.06.03 11:11 #15926 대부분의 경우 사용 가능한 모든 메모리를 얻을 수 없다는 것을 알고 계십니까? 메모리 단편화와 같은 것이 있습니다. 모든 메모리를 5개의 조각으로 나누기로 결정했지만 시스템에 필요한 크기의 연속적인 단일 메모리 조각이 없습니다. Andriy Voitenko 2016.06.03 11:33 #15927 Slawa : 대부분의 경우 사용 가능한 모든 메모리를 얻을 수 없다는 것을 알고 계십니까? 메모리 단편화와 같은 것이 있습니다. 모든 메모리를 5개의 조각으로 나누기로 결정했지만 시스템에 필요한 크기의 연속적인 단일 메모리 조각이 없습니다. 1. 먼저 TERMINAL_MEMORY_AVAILABLE 매개변수가 물리적으로 무엇을 의미하는지 알 수 있습니까? 2. 프래그먼트에 관해서는 프로그래머가 아닌 Windows 메모리 관리자가 수행해야 한다고 생각합니다. 내가 현재 사용할 수 있는 양을 아는 것이 중요합니다. 예를 들어 사용 가능한 메모리의 50%를 사용하고 싶습니다. 또 다른 실제 과제는 CopyTicks 요청입니다. 사용 가능한 메모리보다 더 많은 틱을 요청하면 '메모리 부족'이 발생합니다. coderex 2016.06.03 11:58 #15928 Andrey Voytenko : 또 다른 실제 과제는 CopyTicks 요청입니다. 사용 가능한 메모리보다 더 많은 틱을 요청하면 '메모리 부족'이 발생합니다. 옵션으로 데이터를 파일에 업로드하고 거기에서 필요한 세그먼트를 가져옵니다. Andriy Voitenko 2016.06.03 12:38 #15929 coderex : 옵션으로 데이터를 파일에 업로드하고 거기에서 필요한 세그먼트를 가져옵니다. 이것은 나를 위해 느립니다. 나는 모든 것을 기억으로 하고 싶다. 실제로 이것은 지금 수행되고 있습니다. GlobalMemoryStatusEx를 호출하고 사용 가능한 크기를 알아내기만 하면 됩니다. Alexey Navoykov 2016.06.03 12:58 #15930 Andrey Voytenko : 나는 지원한다. 이 문제는 클라우드 에이전트에서 최적화할 때 특히 심각합니다. 처음에는 그 기능에 대해 전혀 알지 못합니다. 거기에서 MQL이나 WinApi를 통해 사용 가능한 메모리의 실제 양을 결정하는 것은 불가능합니다(dll 호출이 금지되어 있기 때문에). 그렇다면 TERMINAL_MEMORY_AVAILABLE에 어떤 실질적인 의미가 있는지 명확하지 않습니까? 덥지도 춥지도 않은데 왜 도입되었을까 1...158615871588158915901591159215931594159515961597159815991600...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
매직 스크립트는 시간을 되돌립니다 ;-)
제품 리콜에 대한 스마트 메시지가 오면 LC와 웹 사이트 상단에 cl이 없습니다.
버그는 아니지만 공유해야합니다
쓰기
컴파일러는 경고를 발행합니다.
잘못된 날짜 *****.mq4 115 46
그것은 또한 날짜의 정확성에 대한 문자열 날짜를 확인합니다, 나는 충격을 받았습니다) (6월 30일)
분명히 이것은 아무도 귀찮게하지 않지만 여전히 다시 쓸 것입니다.
실제 작업: 사용 가능한 메모리의 총 크기가 약 100%인 배열을 만들고 빠르게 숫자로 채우고 계산을 수행하고 해제합니다.
나는 사용 가능한 메모리의 양을 얻으려고합니다.
결과: 23987MB, 12141MB의 실제 메모리가 있습니다. 두 배 작습니다.
나는 이 수치가 화성인을 위한 것이라는 것을 이해하지만 여전히 그것을 테스트하기 위해 스크립트를 믿고 작성합니다.
나는 일반적인 결과를 얻습니다 - array3 배열을 배포하는 것은 불가능합니다. 왜냐하면 메모리가 끝났습니다.
그런 다음 현재 사용 가능한 양을 나타내는 행의 주석 처리를 제거합니다.
그런 다음 스크립트가 성공적으로 실행됩니다.
개발자를 귀찮게 하고 싶지는 않지만 메모리 관리를 위해서는 사용 가능한 용량을 아는 것이 중요합니다.
이것을 TerminalInfoInteger 를 통해 알 수 있게 해주세요.
대부분의 경우 사용 가능한 모든 메모리를 얻을 수 없다는 것을 알고 계십니까?
메모리 단편화와 같은 것이 있습니다. 모든 메모리를 5개의 조각으로 나누기로 결정했지만 시스템에 필요한 크기의 연속적인 단일 메모리 조각이 없습니다.
대부분의 경우 사용 가능한 모든 메모리를 얻을 수 없다는 것을 알고 계십니까?
메모리 단편화와 같은 것이 있습니다. 모든 메모리를 5개의 조각으로 나누기로 결정했지만 시스템에 필요한 크기의 연속적인 단일 메모리 조각이 없습니다.
1. 먼저 TERMINAL_MEMORY_AVAILABLE 매개변수가 물리적으로 무엇을 의미하는지 알 수 있습니까?
2. 프래그먼트에 관해서는 프로그래머가 아닌 Windows 메모리 관리자가 수행해야 한다고 생각합니다.
내가 현재 사용할 수 있는 양을 아는 것이 중요합니다. 예를 들어 사용 가능한 메모리의 50%를 사용하고 싶습니다.
또 다른 실제 과제는 CopyTicks 요청입니다. 사용 가능한 메모리보다 더 많은 틱을 요청하면 '메모리 부족'이 발생합니다.
또 다른 실제 과제는 CopyTicks 요청입니다. 사용 가능한 메모리보다 더 많은 틱을 요청하면 '메모리 부족'이 발생합니다.
옵션으로 데이터를 파일에 업로드하고 거기에서 필요한 세그먼트를 가져옵니다.
이것은 나를 위해 느립니다. 나는 모든 것을 기억으로 하고 싶다. 실제로 이것은 지금 수행되고 있습니다. GlobalMemoryStatusEx를 호출하고 사용 가능한 크기를 알아내기만 하면 됩니다.
나는 지원한다. 이 문제는 클라우드 에이전트에서 최적화할 때 특히 심각합니다. 처음에는 그 기능에 대해 전혀 알지 못합니다. 거기에서 MQL이나 WinApi를 통해 사용 가능한 메모리의 실제 양을 결정하는 것은 불가능합니다(dll 호출이 금지되어 있기 때문에).
그렇다면 TERMINAL_MEMORY_AVAILABLE에 어떤 실질적인 의미가 있는지 명확하지 않습니까? 덥지도 춥지도 않은데 왜 도입되었을까