캔버스 멋지다! - 페이지 20 1...131415161718192021222324252627...93 새 코멘트 Nikolai Semko 2019.02.14 12:12 #191 Anatoli Kazharski : 제한이 있습니다. 최대 512개의 표시기 버퍼를 만들 수 있습니다. >>> https://www.mql5.com/ru/docs/indicators 고맙습니다. 예, 수백 개의 표시기 버퍼 후에 코드의 길이 외에도 엄청난 메모리 낭비가 발생합니다. 내 버전에서는 하나의 배열이 차원과 함께 사용됩니다: 화면의 숫자 막대 + 최대. 기간. Dmitry Fedoseev 2019.02.14 12:22 #192 Nikolai Semko : Canvas에서 구현된 수백 이동 평균의 초고속 표시기. 100 MA 라인(기간 단계 10) - 계산 및 표시 시간 - 4-7밀리초 1000 MA 라인(기간 단계 1) - 계산 및 표시 시간 - 20-30밀리초 코드는 많이 테스트되지 않았습니다. 버그가 있을 수 있습니다. 두께가 1픽셀인 막대에 대해서만 구현됩니다(이러한 축척으로 강제 변환됨). 또한 화면 새로 고침 빈도가 최적화되지 않았습니다. 모든 라인이 계산되어 각 눈금에 완전히 표시됩니다. 평균 단순을 어떻게 이해했습니까? 이제 지수 에 대해서도 마찬가지입니다. Nikolai Semko 2019.02.14 12:40 #193 Dmitry Fedoseev : 평균 단순을 어떻게 이해했습니까? 이제 지수도 마찬가지일 것입니다. 이것은 단지 데모입니다. 모든 유형의 MA 구현이 가능합니다. 당신에게 필요한 것은 욕망과 필요입니다. 지수를 사용하면 코드가 약간 더 복잡해집니다. 나는 당신이 시도하는 것이 좋습니다. Nikolai Semko 2019.02.15 21:39 #194 속도를 보여주기 위해... 마우스 포인터를 통해 두 매개변수 변경 X - MA 변경의 최대 기간 Y - MA 기간 변경 단계 #include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 #property indicator_chart_window double Close []; long Total; int Ma= 0 ; int stepMa= 0 ; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit () { ChartSetInteger ( 0 , CHART_SCALE , 0 , 0 ); ChartSetInteger ( 0 , CHART_FOREGROUND , true ); CopyClose ( _Symbol , _Period ,( int )W.Right_bar,W.BarsInWind+Ma- 1 , Close ); Total= SeriesInfoInteger ( _Symbol , _Period , SERIES_BARS_COUNT ); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate ( const int rates_total, const int prev_calculated, const int begin, const double &price[]) { return (rates_total); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent ( const int id, const long &lparam, const double &dparam, const string &sparam) { static int MaOld=- 1 ,stepMaOld=- 1 ; Ma=W.MouseX+ 100 ; stepMa=W.MouseY; if (stepMa<= 0 ) stepMa= 1 ; stepMa= 1 +stepMa/ 10 ; if (stepMa>Ma) stepMa=Ma- 1 ; if (id== CHARTEVENT_CHART_CHANGE || MaOld!=Ma || stepMaOld!=stepMa) { ChartSetInteger ( 0 , CHART_SCALE , 0 , 0 ); CopyClose ( _Symbol , _Period ,( int )W.Right_bar,W.BarsInWind+Ma- 1 , Close ); nMA(); MaOld=Ma; stepMaOld=stepMa; } } //+------------------------------------------------------------------+ void nMA() { int preY= 0 ; Canvas.Erase(); double S= 0 ; for ( int i= 0 ;i<Ma; i++) S+= Close [i]; for ( int Per=Ma;Per> 0 ;) { double s=S; uint Clr=Grad(( double )Per/Ma); for ( int x= 0 ; x<W.BarsInWind;x++) { int Y=( int )(Canvas.Y(s/Per)- 0.5 ); if (x> 0 ) if ( fabs (Y-preY)> 1 ) Canvas.Line(x- 1 ,preY,x,Y,Clr); else Canvas.PixelSet(x,Y,Clr); if ((Ma+x)< ArraySize ( Close )) s=s- Close [x+Ma-Per]+ Close [Ma+x]; else break ; preY=Y; } for ( int j= 0 ; j<stepMa; j++) if (Per> 0 ) {S=S- Close [Ma-Per]; Per--;} else break ; } Canvas.Update(); } //+------------------------------------------------------------------+ uint Grad( double p) { static uint Col[ 6 ]={ 0xFF0000FF , 0xFFFF00FF , 0xFFFF0000 , 0xFFFFFF00 , 0xFF00FF00 , 0xFF00FFFF }; if (p> 0.9999 ) return Col[ 5 ]; if (p< 0.0001 ) return Col[ 0 ]; p=p* 5 ; int n=( int )p; double k=p-n; argb c1,c2; c1.clr=Col[n]; c2.clr=Col[n+ 1 ]; return ARGB( 255 ,c1.c[ 2 ]+ uchar (k*(c2.c[ 2 ]-c1.c[ 2 ])+ 0.5 ), c1.c[ 1 ]+ uchar (k*(c2.c[ 1 ]-c1.c[ 1 ])+ 0.5 ), c1.c[ 0 ]+ uchar (k*(c2.c[ 0 ]-c1.c[ 0 ])+ 0.5 )); } //+------------------------------------------------------------------+ 파일: MultiMA.mq5 8 kb Aleksey Vyazmikin 2019.02.16 01:35 #195 Nikolai Semko : 속도를 보여주기 위해... 마우스 포인터를 통해 두 매개변수 변경 X - MA 변경의 최대 기간 Y - MA 기간 변경 단계 아름답지만 컴파일러는 맹세합니다. can't open "..\MQL5\Include\Canvas\iCanvas.mqh" include file MultiMA.mq5 9 11 Nikolai Semko 2019.02.16 01:37 #196 Aleksey Vyazmikin : 아름답지만 컴파일러는 맹세합니다. 물론 성경을 설치해야 합니다. 코드에 이 라이브러리에 대한 링크가 있습니다. Aleksey Vyazmikin 2019.02.16 02:35 #197 Nikolai Semko : 물론 성경을 설치해야 합니다. 코드에 이 라이브러리에 대한 링크가 있습니다. 고맙습니다! 모든 것이 작동했습니다! 차트를 다시 그리거나 이동할 때 표시기를 다시 그리도록 하려면 어떻게 해야 합니까? Nikolai Semko 2019.02.16 02:37 #198 Aleksey Vyazmikin : 고맙습니다! 모든 것이 작동했습니다! 차트를 다시 그리거나 이동할 때 표시기를 다시 그리 려면 어떻게 해야 합니까? 이것이 다시 그리기가 작동하는 방식입니다. Aleksey Vyazmikin 2019.02.16 03:17 #199 Nikolai Semko : 이것이 다시 그리기가 작동하는 방식입니다. 마우스를 움직일 때만 작동합니다. Nikolai Semko 2019.02.16 04:22 #200 Aleksey Vyazmikin : 마우스를 움직일 때만 작동합니다. 예, 작은 관절이 있었습니다. 수정했습니다. 고맙습니다. 1...131415161718192021222324252627...93 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
제한이 있습니다. 최대 512개의 표시기 버퍼를 만들 수 있습니다. >>> https://www.mql5.com/ru/docs/indicators
Canvas에서 구현된 수백 이동 평균의 초고속 표시기.
100 MA 라인(기간 단계 10) - 계산 및 표시 시간 - 4-7밀리초
1000 MA 라인(기간 단계 1) - 계산 및 표시 시간 - 20-30밀리초
코드는 많이 테스트되지 않았습니다. 버그가 있을 수 있습니다. 두께가 1픽셀인 막대에 대해서만 구현됩니다(이러한 축척으로 강제 변환됨). 또한 화면 새로 고침 빈도가 최적화되지 않았습니다. 모든 라인이 계산되어 각 눈금에 완전히 표시됩니다.
평균 단순을 어떻게 이해했습니까? 이제 지수 에 대해서도 마찬가지입니다.
평균 단순을 어떻게 이해했습니까? 이제 지수도 마찬가지일 것입니다.
속도를 보여주기 위해...
마우스 포인터를 통해 두 매개변수 변경
X - MA 변경의 최대 기간
Y - MA 기간 변경 단계
속도를 보여주기 위해...
마우스 포인터를 통해 두 매개변수 변경
X - MA 변경의 최대 기간
Y - MA 기간 변경 단계
아름답지만 컴파일러는 맹세합니다.
아름답지만 컴파일러는 맹세합니다.
물론 성경을 설치해야 합니다. 코드에 이 라이브러리에 대한 링크가 있습니다.
고맙습니다! 모든 것이 작동했습니다!
차트를 다시 그리거나 이동할 때 표시기를 다시 그리도록 하려면 어떻게 해야 합니까?
고맙습니다! 모든 것이 작동했습니다!
차트를 다시 그리거나 이동할 때 표시기를 다시 그리 려면 어떻게 해야 합니까?
이것이 다시 그리기가 작동하는 방식입니다.
마우스를 움직일 때만 작동합니다.
마우스를 움직일 때만 작동합니다.
예, 작은 관절이 있었습니다. 수정했습니다.
고맙습니다.