MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 579 1...572573574575576577578579580581582583584585586...1953 새 코멘트 Artyom Trishkin 2018.07.05 20:51 #5781 PolarSeaman : 막대가 현재 기간에 닫힐 때까지 초를 계산하는 방법을 알지 못했습니다. 돕다. 기능을 주셨어요. PolarSeaman 2018.07.05 21:14 #5782 Artyom Trishkin : 기능을 주셨어요. 예, 하지만 주석에서 위의 코드는 매초 부드럽게 계산되고 기능이 경련합니다. M1에서는 60개 막대 중 3~4번은 경고가 없습니다. #property strict #define MILLISEC_TIMER_INTERVAL 500 //--- input parameters input int s_clo= 2 ; input int Period_= 13 , Shift_= 0 ; input ENUM_MA_METHOD Method_MA_= MODE_SMA ; input ENUM_APPLIED_PRICE Apply_to_= PRICE_CLOSE ; double ma_fast; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { if (! EventSetMillisecondTimer (MILLISEC_TIMER_INTERVAL)) { Print ( "Не могу запустить таймер" ); return INIT_FAILED ; } return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { //--- destroy timer EventKillTimer (); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTimer () { RefreshRates (); //--- ma_fast= 0 ; if (SecondsToCandleClose( Symbol (), 0 )>=s_clo) return ; { ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_, 0 ); Alert ( "ma_fast" ,ma_fast, "время откр. бара " , Time [ 0 ]);} } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ long SecondsToCandleClose( const string symbol_name, const ENUM_TIMEFRAMES timeframe) { datetime array[]; return ( CopyTime (symbol_name,timeframe, 0 , 1 ,array)== 1 ? PeriodSeconds (timeframe)+array[ 0 ]- TimeCurrent () : 0 ); } //+------------------------------------------------------------------+ double ma( int period, int ma_shift, ENUM_MA_METHOD ma_method, ENUM_APPLIED_PRICE ap_price, int shift) { return (ND( iMA ( NULL ,( int ) 0 ,period,ma_shift,ma_method,ap_price,shift))); } // double ND( double A) { return ( NormalizeDouble (A, Digits )); } // Artyom Trishkin 2018.07.05 21:56 #5783 PolarSeaman : 예, 하지만 주석에서 위의 코드는 매초 부드럽게 계산되고 기능이 경련합니다. M1에서는 60개 막대 중 3~4번은 경고가 없습니다. 함수 가 TimeCurrent()를 사용 하기 때문에 - 마지막 견적이 도착한 시간. 이 시간을 계산된 오프셋이 있는 로컬 TimeLocal()로 바꿔야 합니다(이미 이에 대해 들었습니다). PolarSeaman 2018.07.05 22:31 #5784 Artyom Trishkin : 이 시간을 계산된 오프셋이 있는 로컬 TimeLocal()로 바꿔야 합니다(이미 이에 대해 들었습니다). 이 작업을 올바르게 수행하는 방법을 몰라서 H1이 틱 없이 닫힐 때까지 시간을 계산하는 코드를 찾았고 사용하려고 합니다. 함수에서 TimeCurrent()를 대체했지만 원하지 않습니다. 닫기 몇 초 전을 보여줍니다. #property strict #property indicator_chart_window //--- input parameters #define MILLISEC_TIMER_INTERVAL 500 int timeOffset; datetime ServerLocalOffset; datetime prevTime,myTime,localtime; bool newBar = false ; datetime sec; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- indicator buffers mapping EventSetMillisecondTimer (MILLISEC_TIMER_INTERVAL); datetime srvtime,tmpOffset; RefreshRates (); srvtime = TimeCurrent (); // Modified localtime = TimeLocal ()+ TimeGMTOffset (); if ( TimeHour (srvtime)> TimeHour (localtime)){ // Server Time is still ahead of us int newOffset = TimeHour (srvtime)- TimeHour (localtime); ServerLocalOffset = (newOffset* 60 * 60 ); } else if ( TimeHour (srvtime)< TimeHour (localtime)){ // Server Time is Behind us int newOffset = TimeHour (localtime)- TimeHour (srvtime); ServerLocalOffset = (newOffset* 60 * 60 ); } else { // No modification required ServerLocalOffset = srvtime; } localtime = TimeLocal ()-ServerLocalOffset; tmpOffset = TimeSeconds (srvtime) - TimeSeconds (localtime); if (tmpOffset < 30 && tmpOffset >= 0 ){ timeOffset = TimeSeconds (srvtime) - TimeSeconds (localtime); } return ( INIT_SUCCEEDED ); } void OnDeinit ( const int reason) { EventKillTimer (); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return (rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer () { //--- datetime localtime; localtime = TimeLocal ()+( TimeGMTOffset ()+( 60 * 60 )); sec= Time [ 0 ]+ Period ()* 60 -localtime-timeOffset; // if (SecondsToCandleClose( Symbol (), 0 )<= 2 ){ Alert ( "время откр. бара " , Time [ 0 ]);} Comment ( " Time 1: " , TimeToStr (sec, TIME_SECONDS ), " Time 2: " , TimeToStr (SecondsToCandleClose( Symbol (), 0 ), TIME_SECONDS )); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ long SecondsToCandleClose( const string symbol_name, const ENUM_TIMEFRAMES timeframe) { datetime array[]; return ( CopyTime (symbol_name,timeframe, 0 , 1 ,array)== 1 ? PeriodSeconds (timeframe)+array[ 0 ]-sec : 0 ); } //// Tigerfreerun 2018.07.06 13:03 #5785 코드에서 아이디어를 구현하는 방법을 알려주십시오. 주문이 열렸지만 지금은 아무 것도 없는 경우 = 경고. 뭐 이런거 같은데.. 이중 x=0; If ( OrdersTotal >0) {x=1;} If (OrdersTotal <x) {Alert ;} x=0; Alekseu Fedotov 2018.07.06 13:09 #5786 Tigerfreerun : 코드에서 아이디어를 구현하는 방법을 알려주십시오. 주문이 열린 주문인 경우 현재는 경고가 아닙니다. 뭐 이런거 같은데.. 이중 x=0; (OrdersTotal >0) {x=1;}인 경우 If (OrdersTotal <x) {Alert ;} x=0; If ( OrdersTotal ==0) {Alert ;} Tigerfreerun 2018.07.06 13:32 #5787 Alekseu Fedotov : If (OrdersTotal ==0) {Alert ;} 그런 다음 신호가 주기적으로 발생합니다. 그리고 주문이 열리지 않은 경우에도 마찬가지입니다. 아이디어는 1) 오픈 주문 2) 이제 사라졌습니다 3)1 경고 Vladimir Tkach 2018.07.06 14:30 #5788 얘들아! 차트에 많은 개체가 있습니다. 하지만 연락할 때 Comment ( ObjectsTotal ()); 그는 그들 중 세 가지만 있다고 보고합니다. 그는 왜 화살을 세지 않습니까? Ihor Herasko 2018.07.06 14:55 #5789 Tigerfreerun : 코드에서 아이디어를 구현하는 방법을 알려주십시오. 주문이 열렸지만 지금은 아무 것도 없는 경우 = 경고. 뭐 이런거 같은데.. 이중 x=0; (OrdersTotal >0) {x=1;}인 경우 If (OrdersTotal <x) {Alert ;} x=0; 그렇게 하세요. 코드는 거의 정확합니다. 한 단어만 빠졌습니다. static double x= 0 ; If ( OrdersTotal > 0 ) {x= 1 ;} If ( OrdersTotal <x) {Алерт ; x= 0 ;} Galim_V 2018.07.06 18:05 #5790 Vladimir Tkach : 얘들아! 차트에 많은 개체가 있습니다. 하지만 연락할 때 그는 그들 중 세 가지만 있다고 보고합니다. 그는 왜 화살을 세지 않습니까? Wingdings 글꼴 문자에서 왔기 때문일 수 있습니다. 1...572573574575576577578579580581582583584585586...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
막대가 현재 기간에 닫힐 때까지 초를 계산하는 방법을 알지 못했습니다. 돕다.
기능을 주셨어요.
기능을 주셨어요.
예, 하지만 주석에서 위의 코드는 매초 부드럽게 계산되고 기능이 경련합니다. M1에서는 60개 막대 중 3~4번은 경고가 없습니다.
예, 하지만 주석에서 위의 코드는 매초 부드럽게 계산되고 기능이 경련합니다. M1에서는 60개 막대 중 3~4번은 경고가 없습니다.
함수 가 TimeCurrent()를 사용 하기 때문에 - 마지막 견적이 도착한 시간. 이 시간을 계산된 오프셋이 있는 로컬 TimeLocal()로 바꿔야 합니다(이미 이에 대해 들었습니다).
이 시간을 계산된 오프셋이 있는 로컬 TimeLocal()로 바꿔야 합니다(이미 이에 대해 들었습니다).
이 작업을 올바르게 수행하는 방법을 몰라서 H1이 틱 없이 닫힐 때까지 시간을 계산하는 코드를 찾았고 사용하려고 합니다. 함수에서 TimeCurrent()를 대체했지만 원하지 않습니다. 닫기 몇 초 전을 보여줍니다.
코드에서 아이디어를 구현하는 방법을 알려주십시오.
If (OrdersTotal ==0) {Alert ;}
얘들아!
차트에 많은 개체가 있습니다.
하지만 연락할 때
그는 그들 중 세 가지만 있다고 보고합니다.
그는 왜 화살을 세지 않습니까?
코드에서 아이디어를 구현하는 방법을 알려주십시오.
그렇게 하세요. 코드는 거의 정확합니다. 한 단어만 빠졌습니다.
얘들아!
차트에 많은 개체가 있습니다.
하지만 연락할 때
그는 그들 중 세 가지만 있다고 보고합니다.
그는 왜 화살을 세지 않습니까?