MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 578

 
PolarSeaman :

내가 직접 생각해낸 것은 아닙니다 . " 코드가 작동하도록 OnTimer()의 데이터를 업데이트해야 합니다. "

어떻게 필요합니까?

오프라인 일정이 있나요?

 
올빼미가 매달린 시간과 다른 시간 프레임에서 바닥 지표를 얻는 방법을 알려주실 수 있습니까?
 
Galim_V :
올빼미가 매달린 시간과 다른 시간 프레임에서 바닥 지표를 얻는 방법을 알려주실 수 있습니까?

1. 새를 왜 매달았습니까? 불쌍하지 않아?

2. 적어도 한 번 열었을 때 도움이 되었습니까? 지표 데이터를 얻기 위한 함수의 처음 두 매개변수는 값을 가져와야 하는 차트의 기호와 기간 을 지정하는 데 사용되기 때문에 모든 시간대에서 Expert Advisor에서 지표 데이터를 가져오는 것은 문제가 되지 않습니다.

결국 편집기에 코드를 입력하더라도 함수의 형식 변수 목록이 매우 방해가 되어 표시되며 도구 설명에서 기호와 기간을 볼 수 있습니다. 당신이 그들에게주의를 기울이지 않은 것이 이상합니다.

 
Artyom Trishkin :

오프라인 일정이 있나요?

아니요.

 
PolarSeaman :

아니요.

그렇다면 왜 불필요하게 지속적인 새로 고침을 합니까?

시간이 필요하세요? 시간은 마지막 틱: TimeCurrent() 또는 마지막 현지 시간: TimeLocal()을 가져올 수 있습니다.

주말에 마지막 틱 시간을 얻으면 타이머가 도움이되지 않습니다. 시간은 금요일의 마지막 틱 또는 마지막 근무일의 마지막 틱이됩니다. 그리고 TimeLocal()은 서버 시간을 제공하지 않습니다. 오프셋으로 다시 계산해야 합니다.

그러나 나는 당신이 결국 무엇을 얻고자 하는지 정확히 모릅니다.

 
Artyom Trishkin :

1. 새를 왜 매달았습니까? 불쌍하지 않아?

2. 적어도 한 번 열었을 때 도움이 되었습니까? 지표 데이터를 얻기 위한 함수의 처음 두 매개변수는 값을 가져와야 하는 차트의 기호와 기간 을 지정하는 데 사용되기 때문에 모든 시간대에서 Expert Advisor에서 지표 데이터를 가져오는 것은 문제가 되지 않습니다.

결국 편집기에 코드를 입력하더라도 함수의 형식 변수 목록이 매우 방해가 되어 표시되며 도구 설명에서 기호와 기간을 볼 수 있습니다. 당신이 그들에게주의를 기울이지 않은 것이 이상합니다.

2018.07.04 22:17:38.398 2016.11.10 13:00:00 Arap01 EURUSD,H1: 반올림 44.53781512605145 45.0 "일반" 모드의 확률 데이터입니다. 즉, 다음과 같이:

2=iStochastic(NULL,0,K,D,느림,Average_method,price_field,MODE_MAIN,2);

여기서 저는 M5 2=iStochastic(NULL,5,K,D,slowing,Average_method,price_field,MODE_MAIN,2);

나는 2018.07.04 22:23:05.680을 얻는다 2016.11.10 13:00:00 Arap01 EURUSD,H1: 라운드 0.0 0.0



 
Artyom Trishkin :

그러나 나는 당신이 결국 무엇을 얻고자 하는지 정확히 모릅니다.

바가 닫히기 2초 전에 경고합니다. 주말은 작동하지 않습니다.

 
PolarSeaman :

따라서 틱이 없으면 막대가 닫히기 2초 전에 경고가 필요합니다.

이것은 쉽지 않습니다. 더 정확한 타이머(최소 500ms)를 실행하고 먼저 현지 시간과 서버 시간을 동기화해야 합니다.
여기에서 이미 다음과 같이 말했습니다.

틱 도착 시 TimeCurrent()-TimeLocal() 차이를 계산합니다.
(로컬 시간과 서버 시간을 동기화하기 위해 한 번 수행됨)

- 이것은 브로커에 상대적인 오프셋입니다. 이 오프셋이 나중에 변경되면 시간을 다시 계산해야 합니다.
- 고문 시작 시(또는   바의 모습   D1) 오프셋을 고려하여 필요한 모든 시간을 현지 시간으로 다시 계산합니다.
- 우리는 타이머에서 "카운트"한 것을 기다리고 동시에 비동기화, 브로커와의 통신 손실, 로컬 화살표 번역을 확인합니다.

+/- 1초를 잡을 수 있는 동안
 
Taras Slobodyanik :

이것은 쉽지 않습니다. 더 정확한 타이머(최소 500ms)를 실행하고 먼저 현지 시간과 서버 시간을 동기화해야 합니다.
여기에서 나는 이미 당신에게 말했습니다.

+/- 1초를 잡을 수 있는 동안

고맙습니다. M5 막대가 닫힐 때까지 시간을 초 단위로 만드는 방법. 이제 H1이 표시됩니다.

 #property strict
#property indicator_chart_window
//--- input parameters
#define MILLISEC_TIMER_INTERVAL         500 
int             timeOffset;
datetime        ServerLocalOffset;
datetime        prevTime,myTime,localtime;
bool            newBar = false ;
//+------------------------------------------------------------------+
//| 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 sec;
   datetime localtime;
   localtime = TimeLocal ()+( TimeGMTOffset ()+( 60 * 60 ));
 sec= Time [ 0 ]-localtime-timeOffset;
 if (sec<= 2 ){ Alert ( "время откр. бара " , Time [ 0 ]);}
       Comment ( TimeToStr (sec, TIME_SECONDS ));
  }
//+------------------------------------------------------------------+
 
막대가 현재 기간에 닫힐 때까지 초를 계산하는 방법을 알지 못했습니다. 돕다.