MQL4 실시간 클록(초 단위) - 페이지 3 123456 새 코멘트 [삭제] 2011.03.09 12:05 #21 brewmanz : A) MT4를 실시간 시계로 사용하지 마십시오. 이것은 개가 뒷다리로 걷게 하는 것과 비슷합니다. 완성되는 것을 보는 것은 흥미롭지만 실제로는 많은 것을 성취하지 못합니다. B) 1초를 처리하는 것이 왜 그렇게 중요한가요? 진드기에 대해 아무 일도 일어나지 않는다면 가격에는 아무 일도 일어나지 않는 것입니다. (각 댓글의 가치는 1센트) A) 왜 안 돼! PC 또는 서버 시간입니다 . 정확한 정보를 얻을 수 있을 것 같습니다. B) 그것이 왜 중요한지 ... 보자- 고주파 거래 - 틱 바이 틱이 아닌 비동기 정보를 기반으로하지 않습니다! 그것이 타당한 이유라고 생각합니다. 나는 아직도 나의 2센트를 기다리고 있다. [삭제] 2011.03.09 12:06 #22 Ais : MQL4 참조: https://docs.mql4.com/runtime/start : "스크립트와 전문가는 자체 스레드에서 작동합니다. 사용자 지정 표시기는 기본 인터페이스 스레드에서 작동합니다." 따라서 표시기는 GUI의 사용자 인터페이스에 시간을 표시합니까? 실시간 / 초 단위. AIRAT SAFIN 2011.03.09 12:37 #23 "초 단위로" 작업하려면 "Sleep()" 함수를 사용합니다. 이를 위해 메인 루틴의 실행 시간을 측정합니다. 예를 들어, 런타임은 변수 "int Runtime;"에 저장되고 let 런타임은 "RunTime < 1000"입니다. 그런 다음 "Sleep (1000 - RunTime) ;"을 호출합니다. 물론 주어진 정밀도로 다음 실행이 1000ms 내에 발생하는지 확인합니다. 하지만. MQL4 참조: https://docs.mql4.com/common/Sleep : "사용자 지정 표시기에서 Sleep() 함수를 호출할 수 없습니다. 인터페이스 스레드에서 계산하고 감속할 수 없기 때문입니다." zzuegg 2011.03.09 12:46 #24 간단한 솔루션: EA에 계산을 포함하면 괜찮습니다. 장점: icustom을 호출 할 필요가 없습니다. 표시 없음 단점: 표시기가 없습니다. 그러나 고주파 거래의 경우 사람이 느려지기 때문에 *반드시* EA를 사용해야 합니다. AIRAT SAFIN 2011.03.09 13:39 #25 "고주파"와 "저지연"은 약간 다릅니다. 그리고 시각화는 거래뿐만 아니라 분석이나 모니터링에 자주 사용됩니다. zzuegg 2011.03.09 13:47 #26 Ais : "고주파"와 "저지연"은 약간 다릅니다. 그리고 시각화는 거래뿐만 아니라 분석이나 모니터링에 자주 사용됩니다. 모니터링이 정말로 필요한 경우 행을 사용하여 표시기 동작을 다시 작성할 수 있습니다. 물론 고성능은 다릅니다. AIRAT SAFIN 2011.03.09 13:54 #27 이벤트를 시간 간격으로 분석하고 모니터링하려면 어떻게 해야 합니까? 예를 들어 1초마다. [삭제] 2011.03.09 14:22 #28 Ais : 이벤트를 시간 간격으로 분석하고 모니터링하려면 어떻게 해야 합니까? 예를 들어 1초마다. 틱 바이 틱에 대해 이야기하자마자 초고주파를 의미한다.... '고급 푸리에 변환을 사용한 초고주파 금융 데이터 분석'(2009) Finance Research Letters Vol 6, pp 47-53 (with I.Giampaoli 및 WLNg) 미리 정의된 간격의 샘플링은 T<t인 고주파수 샘플링으로 정의할 수 있습니다. zzuegg 2011.03.09 14:29 #29 #property indicator_chart_window #property indicator_buffers 8 #property indicator_color1 Black #property indicator_color2 Black #property indicator_color3 Red #property indicator_color4 Blue #property indicator_color5 Red #property indicator_color6 Red #property indicator_color7 Red #property indicator_color8 Red //---- buffers double open[]; double close[]; double high[]; double low[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; double ExtMapBuffer7[]; double ExtMapBuffer8[]; extern int MaxHistory= 200 ; extern int TimeInSeconds= 5 ; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ double a.open[]; double a.close[]; double a.high[]; double a.low[]; int init() { //---- indicators SetIndexStyle( 0 , DRAW_HISTOGRAM ); SetIndexBuffer ( 0 ,high); SetIndexStyle( 1 , DRAW_HISTOGRAM ); SetIndexBuffer ( 1 ,low); SetIndexStyle( 2 , DRAW_HISTOGRAM , STYLE_SOLID , 5 ); SetIndexBuffer ( 2 ,open); SetIndexStyle( 3 , DRAW_HISTOGRAM , STYLE_SOLID , 5 ); SetIndexBuffer ( 3 ,close); SetIndexStyle( 4 , DRAW_LINE ); SetIndexBuffer ( 4 ,ExtMapBuffer5); SetIndexStyle( 5 , DRAW_LINE ); SetIndexBuffer ( 5 ,ExtMapBuffer6); SetIndexStyle( 6 , DRAW_LINE ); SetIndexBuffer ( 6 ,ExtMapBuffer7); SetIndexStyle( 7 , DRAW_LINE ); SetIndexBuffer ( 7 ,ExtMapBuffer8); ArrayResize (a.high,MaxHistory); ArrayResize (a.low,MaxHistory); ArrayResize (a.open,MaxHistory); ArrayResize (a.close,MaxHistory); //---- return ( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void redraw(){ for ( int i= 200 ;i>= 0 ;i--){ if (i== 200 ){ open[i]= 0 ; close[i]= 0 ; high[i]= 0 ; low[i]= 0 ; } else { open[i]=a.open[i]; close[i]=a.close[i]; high[i]=a.high[i]; low[i]=a.low[i]; } } } void shift(){ for ( int i= 200 ;i> 0 ;i--){ a.open[i]=a.open[i- 1 ]; a.close[i]=a.close[i- 1 ]; a.high[i]=a.high[i- 1 ]; a.low[i]=a.low[i- 1 ]; } } extern int sleep= 100 ; int start() { int counted_bars=IndicatorCounted(); //---- bool running=true; static double price= 0 ; static int t= 0 ; static datetime t.r= 0 ; static bool updates=false; //t=TimeCurrent(); //while(running){ updates=false; if ( TimeCurrent ()>(t+TimeInSeconds)){ shift(); if (a.open[ 1 ]==EMPTY || a.open[ 1 ]== EMPTY_VALUE || a.open[ 1 ]== 0 ){ a.open[ 0 ]=Bid; a.close[ 0 ]=Bid; a.high[ 0 ]=Bid; a.low[ 0 ]=Bid; } else { a.open[ 0 ]=a.close[ 1 ]; a.high[ 0 ]=a.close[ 1 ]; a.low[ 0 ]=a.close[ 1 ]; a.close[ 0 ]=a.close[ 1 ]; } Print ( "shift " +a.open[ 0 ]+ " - " +a.open[ 1 ]); updates=true; t= TimeCurrent (); } if (price!=Bid){ price=Bid; a.close[ 0 ]=price; a.high[ 0 ]= MathMax (price,a.high[ 0 ]); a.low[ 0 ]= MathMin (price,a.low[ 0 ]); updates=true; } if (Time[ 0 ]!=t.r){ t.r=Time[ 0 ]; redraw(); } else { if (updates){ redraw(); } } if ( IsStopped ()) running=false; // Sleep(sleep); //} //---- return ( 0 ); } 적절한 수면 기능 을 사용하기 위해 EA로 쉽게 다시 코딩할 수 있습니다. 이미 했습니다. [삭제] 2011.03.09 15:23 #30 zzuegg : 적절한 수면 기능을 사용하기 위해 EA로 쉽게 다시 코딩할 수 있습니다. 이미 했습니다. 좋은 프로그램 . TimeCurrent()는 컴퓨터 가격을 얻는 데 필요한 틱 단위 가격입니다! 예를 들어 다음과 같이 합성 시계를 만들 수 있습니다. if (시간[ 0 ]!=tr){ tr=시간[ 0 ]; 다시 그리기(); 힌트를 주세요! 쭈에그 :) 123456 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
A) MT4를 실시간 시계로 사용하지 마십시오. 이것은 개가 뒷다리로 걷게 하는 것과 비슷합니다. 완성되는 것을 보는 것은 흥미롭지만 실제로는 많은 것을 성취하지 못합니다.
B) 1초를 처리하는 것이 왜 그렇게 중요한가요? 진드기에 대해 아무 일도 일어나지 않는다면 가격에는 아무 일도 일어나지 않는 것입니다.
(각 댓글의 가치는 1센트)
A) 왜 안 돼! PC 또는 서버 시간입니다 . 정확한 정보를 얻을 수 있을 것 같습니다.
B) 그것이 왜 중요한지 ... 보자- 고주파 거래 - 틱 바이 틱이 아닌 비동기 정보를 기반으로하지 않습니다! 그것이 타당한 이유라고 생각합니다.
나는 아직도 나의 2센트를 기다리고 있다.
MQL4 참조: https://docs.mql4.com/runtime/start : "스크립트와 전문가는 자체 스레드에서 작동합니다. 사용자 지정 표시기는 기본 인터페이스 스레드에서 작동합니다."
따라서 표시기는 GUI의 사용자 인터페이스에 시간을 표시합니까? 실시간 / 초 단위.
"초 단위로" 작업하려면 "Sleep()" 함수를 사용합니다.
이를 위해 메인 루틴의 실행 시간을 측정합니다.
예를 들어, 런타임은 변수 "int Runtime;"에 저장되고 let 런타임은 "RunTime < 1000"입니다.
그런 다음 "Sleep (1000 - RunTime) ;"을 호출합니다. 물론 주어진 정밀도로 다음 실행이 1000ms 내에 발생하는지 확인합니다.
하지만.
MQL4 참조: https://docs.mql4.com/common/Sleep : "사용자 지정 표시기에서 Sleep() 함수를 호출할 수 없습니다. 인터페이스 스레드에서 계산하고 감속할 수 없기 때문입니다."
간단한 솔루션:
EA에 계산을 포함하면 괜찮습니다.
장점:
icustom을 호출 할 필요가 없습니다.
표시 없음
단점:
표시기가 없습니다. 그러나 고주파 거래의 경우 사람이 느려지기 때문에 *반드시* EA를 사용해야 합니다.
"고주파"와 "저지연"은 약간 다릅니다.
그리고 시각화는 거래뿐만 아니라 분석이나 모니터링에 자주 사용됩니다.
"고주파"와 "저지연"은 약간 다릅니다.
그리고 시각화는 거래뿐만 아니라 분석이나 모니터링에 자주 사용됩니다.
모니터링이 정말로 필요한 경우 행을 사용하여 표시기 동작을 다시 작성할 수 있습니다. 물론 고성능은 다릅니다.
이벤트를 시간 간격으로 분석하고 모니터링하려면 어떻게 해야 합니까?
예를 들어 1초마다.
이벤트를 시간 간격으로 분석하고 모니터링하려면 어떻게 해야 합니까?
예를 들어 1초마다.
틱 바이 틱에 대해 이야기하자마자 초고주파를 의미한다....
'고급 푸리에 변환을 사용한 초고주파 금융 데이터 분석'(2009) Finance Research Letters Vol 6, pp 47-53 (with I.Giampaoli 및 WLNg)
미리 정의된 간격의 샘플링은 T<t인 고주파수 샘플링으로 정의할 수 있습니다.
적절한 수면 기능을 사용하기 위해 EA로 쉽게 다시 코딩할 수 있습니다. 이미 했습니다.
좋은 프로그램 . TimeCurrent()는 컴퓨터 가격을 얻는 데 필요한 틱 단위 가격입니다!
예를 들어 다음과 같이 합성 시계를 만들 수 있습니다.
if (시간[ 0 ]!=tr){
tr=시간[ 0 ];
다시 그리기();
힌트를 주세요! 쭈에그 :)