포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 978

 
Vadim_2015 :

알고리즘은 명확하고 이해합니다. 예를 들어 모든 것이 작동합니다.

정말 감사합니다!

그리고 첫 번째 질문(최대값에 대한 질문)에서 구현 방법을 자세히 설명하지 않습니까? 가능한 경우 작은 알고리즘으로. 당신은 그것을 꽤 잘합니다 :)

나 말고 다른 누군가가 나를 이해해줘서 기쁘다.

Vadim_2015 :
안녕하세요 친애하는 포럼 사용자!

MQL4 언어를 배우기 시작했고 간단한 지표를 작성하는 동안 해결할 수 없는 문제에 부딪쳤습니다. 문제의 본질:

1_오늘의 고가를 찾는 방법, 간단한 루프 닫기[i]-열기[i+1]이 있습니다. 고가[i - 하루가 끝날 때까지]를 찾아야 합니다. 예를 들어, [i],[1],[2] 부터 하루가 끝날 때까지(PERIOD_H1) . 나는 그것을하는 방법을 모른다. 'iHigh' 기능이 있긴 한데 떨어져요.


이것이 바로 필요한 것입니다. 하루가 끝날 때까지 남은 시간에 관계없이 현재 날짜의 최고가입니다.

 double   iHigh( 
   string            symbol,           // _Symbol
   int               timeframe,       // PERIOD_D1
   int               shift             // 0
   );

질문을 올바르게 이해했다면.

 
AlexeyVik :

나 말고 다른 누군가가 나를 이해해줘서 기쁘다.

이것이 바로 필요한 것입니다. 하루가 끝날 때까지 남은 시간에 관계없이 현재 날짜의 최고가입니다.

질문을 올바르게 이해했다면.

내가 이해하기로는 조금 다릅니다. 이 같은.
bar=iBarShift( NULL , 0 ,t1, false );   //по времени, находим индекс бара
barH=iHighest( NULL , 0 ,MODE_HIGH,bar+ 1 , 1 );   //находим максимум, в этом промежутке    
 
r772ra :
내가 이해하기로는 조금 다릅니다. 이 같은.

글쎄, 그것은 정확히 나에게 조언 된 것입니다.
그러나 iHighest (NULL, MODE_HIGH, bar+1, 1)는 이 구간에서 다른 모든 것보다 높은 High 막대의 인덱스를 반환하고 귀하는 현재 날짜의 High를 물었습니다.

 
AlexeyVik :

글쎄, 그것은 정확히 나에게 조언 된 것입니다.
그러나 iHighest(NULL, MODE_HIGH, bar+1, 1)는 이 구간에서 다른 모든 것보다 높은 High bar의 인덱스를 반환하고, 당신은 오늘의 High를 물었습니다.

동의, " iHighest (NULL, MODE_HIGH, bar+1, 1)는 이 범위의 다른 모든 것보다 높음이 높은 막대의 인덱스를 반환합니다." 그리고 나는 현재 남은 날의 High를 의미합니다.

좀 더 정확하게 해볼께요...

 #property indicator_separate_window
#property indicator_buffers 1

#property indicator_label1   "longBars"

#property indicator_color1 clrBlue

#property indicator_width1 2

//---углубление в историю на...
extern int barsToProcess = 100 ;
//---indicators Buffers
double    longBarsBuffer[];        
                

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   SetIndexBuffer ( 0 ,longBarsBuffer);
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   
   IndicatorDigits( Digits );
  
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   int counted_bars=IndicatorCounted(), 
       limit;

   if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 )       
       counted_bars--;       
      
   limit= Bars -counted_bars;
   if (limit>barsToProcess)                                  
      limit=barsToProcess;
  
   double   longValue;
      
                            
   for ( int i= 0 ;i<limit;i++)
      {
       longValue = Close[i+ 1 ]-Open[i+ 3 ];
       
//--- само условие
         
       if (longValue> 0 ) 

//---собственно что необходимо получить: если на i-том баре выполнилось условие(i>0), то находим High от этого бара и 
//---до конца этого дня,я имею ввиду максимум всего этого промежутка. Примерно: Если условие выполнилось 
 //---на i=12h,то High от 12 до 00:00,
//--- если i=01:00, то High от 01:00 до 00:00, если i=22:00, то High от 22:00 до 00:00. Как то так.  Возможно ли это реализовать?  
//---Может я не правильно сделал цикл? Как его правильно организовать?
                  
       longBarsBuffer[i]=High[от i - и до конца дня] - то что необходимо получить. 
       else 
          longBarsBuffer[i]= 0.0 ; 
       

가능하면 너무 꾸짖지 마세요 :) ... 어떻게 하는지 설명 부탁드립니다.

 
Vadim_2015 :

"iHighest(NULL, MODE_HIGH, bar+1, 1)은 High가 이 범위의 다른 모든 막대보다 높은 막대의 인덱스를 반환합니다." 동의합니다. 그리고 나는 현재 남은 날의 High를 의미합니다.

좀 더 정확하게 해볼께요...

가능하면 너무 꾸짖지 마세요 :) ... 어떻게 하는지 설명 부탁드립니다.

처음에는 단순한 실책인 줄 알았는데 이제는 의심의 여지가 없습니다. 미래를 내다보실래요??? 그렇다면 Back to the Future의 Doc만이 당신을 도울 수 있습니다.
 
AlexeyVik :
처음에는 단순한 실책인 줄 알았는데 이제는 의심의 여지가 없습니다. 미래를 내다보실래요??? 그러면 Back to the Future의 Doc만이 당신을 도울 수 있습니다.

박사님이 저를 돕지 않으실 것 같아요 ... 그는 그렇게 하지 않습니다 :)

예, " 남은 현재 일의 최고가"라는 이 질문은 약간 혼란스럽습니다. 이제 막 요점에 이르렀습니다. 여러분은 이것이 오늘의 미래를 내다보기 위한 시도라고 생각할 수도 있습니다. 이것은 조금 다릅니다. 나는 가격 배열의 시작부터 끝에서 두 번째 날(어제)까지 남은 현재 날짜의 _High를 계산하고 싶었습니다. 모든 데이터가 있습니다. 그리고 마지막(오늘의) 날은 종료되는 즉시 다시 계산됩니다. 그렇지 않으면 모든 것이 당신이 말한 것처럼 보일 것입니다 _ 미래를 내다보는 시도! 가격 배열의 시작 부분에서 시작하여 끝(어제)으로 이동하면 이후에 확인된 각 막대의 높음이 변경됩니다.   그래서 오늘 남은 시간의 최고치를 빼는 방법을 물었습니다. 나는 오늘이 찍히지 않았다는 말을 끝내지 않았다. 왜냐하면 아직 완료되지 않았습니다. 죄송합니다, 나는 즉시 깨닫지 못했습니다 :). 그런 계산을 구성하는 방법을 알려주시겠습니까? 실제로 가능한가요?

 
Vadim_2015 :

박사님이 저를 도와주지 않으실 것 같아요 ... 그는 그렇게 하지 않습니다 :)

예, " 남은 현재 일의 최고가"라는 이 질문은 약간 혼란스럽습니다. 이제 막 요점에 이르렀습니다. 여러분은 이것이 오늘의 미래를 내다보기 위한 시도라고 생각할 수도 있습니다. 이것은 조금 다릅니다. 나는 가격 배열의 시작부터 끝에서 두 번째 날(어제)까지 남은 현재 날짜의 _High를 계산하고 싶었습니다. 모든 데이터가 있습니다. 그리고 마지막(오늘의) 날짜는 종료되는 즉시 다시 계산됩니다. 그렇지 않으면 모든 것이 당신이 말한 것처럼 보일 것입니다 _ 미래를 내다보는 시도! 가격 배열의 시작 부분에서 시작하여 끝(어제)으로 이동하면 이후에 확인된 각 막대의 높음이 변경됩니다.   그래서 오늘 남은 시간의 최고치를 빼는 방법을 물었습니다. 나는 오늘이 찍히지 않았다는 말을 끝내지 않았다. 왜냐하면 아직 완료되지 않았습니다. 죄송합니다, 나는 즉시 깨닫지 못했습니다 :). 그런 계산을 구성하는 방법을 알려주시겠습니까? 실제로 가능한가요?

나는 당신의 질문을 이해하려고 노력할 것입니다. 막대 중에서 최고를 찾아야 합니까 1) 전날과 오늘은 무엇입니까, 아니면 2) 오늘은 무엇입니까? iHighest() 가 도움이 될까요?
 
paladin80 :
나는 당신의 질문을 이해하려고 노력할 것입니다. 막대 중에서 최고를 찾아야 합니까 1) 전날과 오늘은 무엇입니까, 아니면 2) 오늘은 무엇입니까? iHighest() 가 도움이 될까요?

친애하는, 나는 내가 달성하고 싶은 것을 최대한 설명하려고 노력할 것입니다 ... ..나는 성공할 것입니다 ..또는 나는 모두를 완전히 혼란스럽게 할 것입니다!

2015년 2월 1일부터 다양한 가격이 있습니다. 2015년 12월 15일(오늘)까지 PERIOD_H1이 걸립니다.

1_나는 간단한 공식을 취한다 _val=닫기[i]-열기[i]

2_(val>0)인 경우 간단한 조건을 설정했습니다. 확인은 _1.02.2015부터 시작해야 합니다.

-조건이 충족되면 어떤 막대에서 이 막대에서 오늘이 끝날 때까지 _High를 찾습니다. 예: 닫기[4]-열기[4]>0 , 즉 index[i=4]가 있는 막대가 2015년 2월 1일 10:00에 속한다고 가정해 보겠습니다. 따라서 오늘 10:00 부터 오늘 의 끝인 00:00까지 _High를 찾습니다. 따라서 조건이 다른 날에 작동하면 비슷한 원칙에 따라 행동합니다. 그리고 가격의 전체 배열을 통해. 계산은 _1.02.2015부터 시작해야 합니다. 2015년 12월 14일(마지막 날)까지, 왜 마지막 날까지, - 왜냐하면 마지막 날은 아직 끝나지 않았고 하루 중 가장 높은 날은 알려지지 않았습니다. 마지막 날이 끝나자 마자 상태도 확인합니다. _1.02.2015의 데이터 이후. 2015년 12월 14일(마지막 날)까지 알려지면 미래 를 내다보려는 시도 처럼 보이지 않을 것입니다 . :)

- 조건이 충족되지 않으면 - 아무것도 하지 않으면 빈 값이 배열에 기록됩니다.

그것은 실제로 전체 "아이디어"입니다. 만드는 방법, 주기를 통해 결정하는 방법 - 절대 모릅니다!

 
Vadim_2015 :

박사님이 저를 도와주지 않으실 것 같아요 ... 그는 그렇게 하지 않습니다 :)

예, " 남은 현재 일의 최고가"라는 이 질문은 약간 혼란스럽습니다. 이제 막 요점에 이르렀습니다. 여러분은 이것이 오늘의 미래를 내다보기 위한 시도라고 생각할 수도 있습니다. 이것은 조금 다릅니다. 나는 가격 배열의 시작부터 끝에서 두 번째 날(어제)까지 남은 현재 날짜의 _High를 계산하고 싶었습니다. 모든 데이터가 있습니다. 그리고 마지막(오늘의) 날짜는 종료되는 즉시 다시 계산됩니다. 그렇지 않으면 모든 것이 당신이 말한 것처럼 보일 것입니다 _ 미래를 내다보는 시도! 가격 배열의 시작 부분에서 시작하여 끝 부분(어제)으로 이동하면 이후에 확인된 각 막대의 고가가 변경됩니다.   그래서 오늘 남은 시간의 최고치를 빼는 방법을 물었습니다. 나는 오늘이 찍히지 않았다는 말을 끝내지 않았다. 왜냐하면 아직 완료되지 않았습니다. 죄송합니다, 나는 즉시 깨닫지 못했습니다 :). 그런 계산을 구성하는 방법을 알려주시겠습니까? 실제로 가능한가요?

그렇다면 다시 iHighest()로 돌아가지만 몇 개의 막대를 계산하고 시작 해야 하는지는 iBarShift() 를 사용하여 계산해야 합니다.
 
AlexeyVik :
그렇다면 다시 iHighest()로 돌아가지만 몇 개의 막대를 계산하고 시작 해야 하는지는 iBarShift()를 사용하여 계산해야 합니다.

루프에서 수행하는 방법을 보여줄 수 있습니까? 나는 그것을 올바르게 얻는 방법을 알아낼 수 없다.