mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 83 1...767778798081828384858687888990...247 새 코멘트 Aleksey Vyazmikin 2018.04.13 09:05 #821 fxsaber : 내 대답을 다시 읽으십시오. 짧은 소스를 열고 이해하고 ... 이익을 얻으십시오! 물론, 나는 소스를 열었습니다. 그렇지 않으면 어떻게. 사실, MT5에 이 모든 것이 필요하다고 표시하지는 않았지만 아이디어를 찾고 있습니다... GetBarSize() 함수에서 이 작업이 해결된 줄(아이디어가 숨겨져 있음)을 말해 줄 수 있습니까? #property show_inputs extern int Width = 1280 ; extern int Height = 800 ; #import "user32.dll" int GetClientRect( int hWnd, int lpRect[] ); #import #define BORDER_SIZE 44 int GetBarSize() { int Rect[ 4 ], PrevBars, PrevRect, Res = 1 ; int hwnd = WindowHandle ( Symbol (), Period ()); GetClientRect(hwnd, Rect); PrevRect = Rect[ 2 ] - BORDER_SIZE; PrevBars = WindowBarsPerChart (); PrevBars += PrevBars; while (PrevBars <= PrevRect) { Res += Res; PrevBars += PrevBars; } return (Res); } string StrNumToLen( string Num, int Len ) { Len -= StringLen (Num); while (Len > 0 ) { Num = "0" + Num; Len--; } return (Num); } void start() { int Pos = WindowFirstVisibleBar (), Step, i = 1 ; string Directory = Width + "x" + Height + "_" + Symbol () + Period () + " (" + TimeToStr ( Time [Pos], TIME_DATE ) + "-" + TimeToStr ( Time [ 0 ], TIME_DATE ) + ")/" ; Pos += 2 ; Step = 1 + (Width - BORDER_SIZE) / GetBarSize(); while (Pos >= 0 ) { WindowScreenShot (Directory + StrNumToLen(i, 5 ) + ".gif" , Width, Height, Pos); i++; Pos -= Step; } return ; } fxsaber 2018.04.13 09:14 #822 알렉세이 비아즈미킨 : 물론, 나는 소스를 열었습니다. 그렇지 않으면 어떻게. 사실, MT5에 이 모든 것이 필요하다고 표시하지는 않았지만 아이디어를 찾고 있습니다... GetBarSize() 함수에서 이 작업이 해결된 줄(아이디어가 숨겨져 있음)을 말해 줄 수 있습니까? int GetBarSize( const ulong Chart = 0 ) { return ( 1 << ( int ) ChartGetInteger (Chart, CHART_SCALE )); } Aleksey Vyazmikin 2018.04.13 09:33 #823 fxsaber : 바보가 된 것 같아 "<<"은(는) 무슨 뜻인가요? 그리고 그래프의 규모는 얼마입니까? Ihor Herasko 2018.04.13 09:43 #824 알렉세이 비아즈미킨 : 바보가 된 것 같아 "<<"은(는) 무슨 뜻인가요? 이것은 비트 단위 왼쪽 시프트 입니다. 1(이진 표현 0000 0001)은 ChartGetInteger에서 반환된 값만큼 왼쪽으로 이동합니다. 대체로 이것은 2의 거듭제곱에 대한 지수입니다. 결과는 1바당 픽셀 수입니다. Aleksey Vyazmikin 2018.04.13 09:47 #825 이호르 헤라스코 : 이것은 비트 단위 왼쪽 시프트 입니다. 1(이진 표현 0000 0001)은 ChartGetInteger에서 반환된 값만큼 왼쪽으로 이동합니다. 대체로 이것은 2의 거듭제곱에 대한 지수입니다. 결과는 1바당 픽셀 수입니다. 설명 감사합니다 한번 해보겠습니다! fxsaber : 고맙습니다! fxsaber 2018.04.13 12:11 #826 Rosh, 검색에 도움을 주셔서 대단히 감사합니다! 거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼 오류, 버그, 질문 일리아스 , 2016.08.24 11:08 배열("내부") 은 배열이 할당된 요소 수 아래에 할당된 저장합니다. 예비 작업 논리(조건부 코드): ArrayResize (arr, int size, int reserve) { if (arr.allocated<size) if (!ArrayAllocateMemory(arr,size+reserve)) // -> arr.allocated=size+reserve; return (- 1 ); //--- CallConstructorsOrDestructors(arr,size); //--- arr.size=size; return (size); } 너무 나쁜 할당은 전혀 사용할 수 없습니다(배열 래퍼는 옵션이 아닙니다). 기능을 추가할까요? int ArrayAllocated( const void & array[] ); 결국 문자열에는 StringBufferLen이 있습니다. Artyom Trishkin 2018.04.14 17:14 #827 이 주제와 관련이 없는 댓글은 " 버그, 버그, 질문 "으로 이동되었습니다. Artyom Trishkin 2018.04.14 17:18 #828 이 주제와 관련이 없는 댓글은 " 버그, 버그, 질문 "으로 이동되었습니다. fxsaber 2018.04.16 11:23 #829 string Str = "123.456" ; double Num1 = StringToDouble (Str); double Num2 = ( double )Str; // Быстрее 이 옵션이 훨씬 빠름(디버그가 아닌 릴리스) double StringToDouble2( const string Str, const uint StartPos = 0 ) { const uint Size = StringLen (Str); bool Sign = false ; uint i = StartPos; while (i < Size) { const int Digit = Str[i]; if ((Digit != ' ' ) && (Digit != '\t' ) && (Digit != '\n' ) && (Digit != '\r' )) { if ((Sign = (Digit == '-' )) || (Digit == '+' )) i++; break ; } i++; } long Res = 0 ; int point = 0 ; while (i < Size) { const int Digit = Str[i]; if (!point && (Digit == '.' )) point = 1 ; else if (((Digit >= '0' ) && (Digit <= '9' ))) { Res = Res * 10 + Digit - '0' ; if (point) point *= 10 ; } else break ; i++; } if (Sign) Res = -Res; return ((point > 1 ) ? Res / ( double )point : Res); // Возможна потеря точности при делении } 체적 데이터를 구문 분석할 때 상당한 가속이 얻어집니다. Alain Verleyen 2018.04.16 11:38 #830 fxsaber : 이 옵션이 훨씬 빠름(디버그가 아닌 릴리스) 체적 데이터를 구문 분석할 때 상당한 가속이 얻어 집니다. 이를 입증하기 위해 벤치마크 코드를 제공할 수 있습니까? 1...767778798081828384858687888990...247 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
내 대답을 다시 읽으십시오. 짧은 소스를 열고 이해하고 ... 이익을 얻으십시오!
물론, 나는 소스를 열었습니다. 그렇지 않으면 어떻게. 사실, MT5에 이 모든 것이 필요하다고 표시하지는 않았지만 아이디어를 찾고 있습니다...
GetBarSize() 함수에서 이 작업이 해결된 줄(아이디어가 숨겨져 있음)을 말해 줄 수 있습니까?
물론, 나는 소스를 열었습니다. 그렇지 않으면 어떻게. 사실, MT5에 이 모든 것이 필요하다고 표시하지는 않았지만 아이디어를 찾고 있습니다...
GetBarSize() 함수에서 이 작업이 해결된 줄(아이디어가 숨겨져 있음)을 말해 줄 수 있습니까?
바보가 된 것 같아 "<<"은(는) 무슨 뜻인가요? 그리고 그래프의 규모는 얼마입니까?
바보가 된 것 같아 "<<"은(는) 무슨 뜻인가요?
이것은 비트 단위 왼쪽 시프트 입니다. 1(이진 표현 0000 0001)은 ChartGetInteger에서 반환된 값만큼 왼쪽으로 이동합니다. 대체로 이것은 2의 거듭제곱에 대한 지수입니다.
결과는 1바당 픽셀 수입니다.
이것은 비트 단위 왼쪽 시프트 입니다. 1(이진 표현 0000 0001)은 ChartGetInteger에서 반환된 값만큼 왼쪽으로 이동합니다. 대체로 이것은 2의 거듭제곱에 대한 지수입니다.
결과는 1바당 픽셀 수입니다.
설명 감사합니다 한번 해보겠습니다!
고맙습니다!
Rosh, 검색에 도움을 주셔서 대단히 감사합니다!
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
오류, 버그, 질문
일리아스 , 2016.08.24 11:08
배열("내부") 은 배열이 할당된 요소 수 아래에 할당된 저장합니다.예비 작업 논리(조건부 코드):
너무 나쁜 할당은 전혀 사용할 수 없습니다(배열 래퍼는 옵션이 아닙니다). 기능을 추가할까요?
결국 문자열에는 StringBufferLen이 있습니다.
이 옵션이 훨씬 빠름(디버그가 아닌 릴리스)
체적 데이터를 구문 분석할 때 상당한 가속이 얻어집니다.
이 옵션이 훨씬 빠름(디버그가 아닌 릴리스)
체적 데이터를 구문 분석할 때 상당한 가속이 얻어 집니다.
이를 입증하기 위해 벤치마크 코드를 제공할 수 있습니까?