이동 평균이 교차하는 막대의 시간을 찾는 방법은 무엇입니까? (내부 코드) - 페이지 3

 

예, 특히 PERIOD_H1 차트에 필요합니다. 시간 프레임을 변경할 수 있고 해당 TF에 대해 하드 코딩되기를 원할 수 있습니다.

(내가 이 일을 잘못하고 있는지 걱정됩니다. 특히 WHRoeder가 MA와 if 문에 관해 두 번이나 저에게 쓴 내용은... - 그래서 저는 약간의 뺨을 맞을 준비를 하고 있지만, 그것이 바를 알려줄 것이라고 생각합니다. MA's crossed (아래). 그래서 이것은 iBarShift에 적용하면 확실히 작동합니다...?)

 if (i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12)triggerBarTime = Time[ 1 ];
 
WHRoeder :

여러 이동 평균은 동시에 교차하지 않습니다 .

왜 이중포스팅을 하시나요? 귀하의 질문은 이전에 답변 되었습니다.

그들이 모두 적절한 순서로 있었던 가장 이른 막대를 찾으십시오.


 int DIR = 0 ;
for ( int iBar = 0 ; iBar < Bar; iBar++){
   double MA20 = ... iBar), 
           MA5 = ... iBar);
          :
   if (     MA20 > MA5 && MA5 > ...) DIR = - 1 ;
   else if (MA20 < MA5 && MA5 < ...) DIR = + 1 ; // All fanning up.
   else if (DIR != 0 ){ iBar--; break ; }       // Last one was cross.
}
Bar 변수의 목적이 무엇인지 여쭤봐도 될까요? 또한 "--"은(는) 무슨 뜻인가요? "--"와 "!" 점수? (당신이 그렇게 친절하다면? 도움말 섹션을 살펴보았지만 목적이 무엇인지 알지 못했습니다.)
 
DomGilberto :

Bar 변수의 목적이 무엇인지 여쭤봐도 될까요? 또한 "--"은(는) 무슨 뜻인가요? "--"와 "!" 점수? (당신이 그렇게 친절하다면? 도움말 섹션을 살펴보았지만 목적이 무엇인지 알지 못했습니다.)


그리고 책의 기초가 아직 알려지지 않은 이유를 여쭤봐도 될까요??

https://book.mql4.com/basics/expressions

 
귀하의 질문은 "이 작은 금속 물체(열쇠)는 무엇이며 왜 하나는 직사각형(기체)이고 다른 하나는 정사각형인 이유는 무엇입니까?"라고 말하는 것과 같습니다.
코딩 배웁니다 .
 

하지만 가스 키가 무엇인지 알고... - 코딩보다 더 간단합니다...

당신이 많이 옳습니다 - 나는 그것을 끝까지 읽을 필요가 있습니다.

시행착오를 통해 가장 잘 배우기 때문입니다(지식을 유지하는 데 있어 실무자입니다). 그것을 볼 때 논리를 이해하는 데 도움이 됩니다. 또한 MQL4 사이트는 모든 것이 함께 작동하는 방식에 대해 명확하게 설명하지 않습니다.

그래서 귀하의 질문에 답하기 위해, 그래서 제가 몇 가지 기본 사항과 더 많은 고급 사항을 알고 있지만, 그런 식으로 놀고 배우는 것을 좋아하기 때문에 고르지 못합니다.

아프다면 미안해!

편집 - WHRoeder가 작성한 코드의 "바" 부분을 아직 이해하지 못합니다. 그게 맞는지 잘 모르겠습니다.

 
DomGilberto : 하지만 가스 키가 뭔지 알아요... - 코딩보다 더 간단해요...

그러나 그것이 무엇인지도 모르고 운전을 하시겠습니까? 그것은 어리석은 일입니다.

"--"와 "!"가 무엇인지 모르고 코딩하려고 합니다. 이다. 차이점이 뭐야?

 

!= True, x가 y와 같지 않으면 - (DIR != 0) - DIR(0)이 "0"이 아닌 경우 Break 연산자는 제어 를 for 연산자에 반환합니다. 그리고 루프를 다시 시작합니다.

-- 변수 값에서 1 빼기. 그래서 "아이바--;" = iBar = 0이므로 1을 빼면 -1이 될까요?

헤이 - 여기에서 정말 노력하고 있습니다. 다른 사람들이 하는 것만큼 빨리 배우지 못한다면 죄송합니다. '도와주세요!) 하지만 최선을 다하고 있습니다. 내가 세상에서 가장 빛나는 불꽃이 아닐지도 몰라... 그러니 최소한 용서해줘...

 
DomGilberto :

!= True, x가 y와 같지 않으면 - (DIR != 0) - DIR(0)이 "0"이 아닌 경우 Break 연산자는 제어를 for 연산자에 반환합니다. 그리고 루프를 다시 시작합니다.

-- 변수 값에서 1 빼기. 그래서 "아이바--;" = iBar = 0이므로 1을 빼면 -1이 될까요?

헤이 - 여기에서 정말 노력하고 있습니다. 다른 사람들이 하는 것만큼 빨리 배우지 못한다면 죄송합니다. '도와주세요!) 하지만 최선을 다하고 있습니다. 내가 세상에서 가장 빛나는 불꽃이 아닐지도 몰라... 그러니 최소한 용서해줘...


이 루프에서

 for ( int iBar = 0 ; iBar < Bar; iBar++){//....do some stuff and come back}

iBar는 Bar만큼 작은 한 다른 값을 가집니다. 값이 1 더 높아집니다.

iBar--;

수단....

iBar = iBar - 1 ;
 
int DIR = 0 ;
for ( int iBar = 0 ; iBar < Bars ; iBar++)
   {
   double i1  = iMA ( NULL , 60 , 3 , 0 , 1 , 0 , 1 ); 
   double i2  = iMA ( NULL , 60 , 5 , 0 , 1 , 0 , 1 );
   double i3  = iMA ( NULL , 60 , 8 , 0 , 1 , 0 , 1 );
   double i4  = iMA ( NULL , 60 , 10 , 0 , 1 , 0 , 1 );  
   double i5  = iMA ( NULL , 60 , 12 , 0 , 1 , 0 , 1 );
   double i6  = iMA ( NULL , 60 , 15 , 0 , 1 , 0 , 1 );  
   double i7  = iMA ( NULL , 60 , 30 , 0 , 1 , 0 , 1 );
   double i8  = iMA ( NULL , 60 , 35 , 0 , 1 , 0 , 1 );
   double i9  = iMA ( NULL , 60 , 40 , 0 , 1 , 0 , 1 );
   double i10 = iMA ( NULL , 60 , 45 , 0 , 1 , 0 , 1 );
   double i11 = iMA ( NULL , 60 , 50 , 0 , 1 , 0 , 1 );
   double i12 = iMA ( NULL , 60 , 60 , 0 , 1 , 0 , 1 ); 
   double ema21 = iMA ( NULL , 60 , 21 , 0 , 1 , 0 , 1 );

   if (i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = - 1 ;
      triggerBarTime = Time[ 1 ];
       if (Low[ 1 ]<ema21)
      OrderEntry( 0 );
  else if (i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = + 1 ; // All fanning up.
      triggerBarTime1 = Time[ 1 ];
       if (High[ 1 ]>ema21)
      OrderEntry( 1 );
   
   if (DIR != 0 )
   { 
   iBar--; break ; 
   }       // Last one was cross.

아 - 이제 제대로 작동하는 것 같아요 - 잠시 Bar를 바라보다가 깨달았어요 :) - 코딩하려고 하는 것이 처음 생각했던 것보다 약간 더 복잡하다는 것을 깨닫기 시작했습니다. 나는 MA를 돌려 위 또는 아래로 부채질해야 합니다(구매 또는 판매 여부에 따라 다름). (오랫동안) 부채꼴 모양이 된 경우 항상 올바른 순서로 있을 필요는 없습니다. 모든 것이 올바른 순서로 쌓이고 부채꼴 모양으로 떨어져 있는 경우를 먼저 식별하는 경우일 뿐입니다. 이 시점에서 내가 원하는 것은 가격은 21 ema를 확인한 다음 최고점 위에 주문하십시오. 당연히 놀아줄게! 다른 사람이 나에게 코드를 작성해주기를 기대하지 않고 그저 내 생각을 큰 소리로 쓰는 것뿐입니다.

고맙습니다!

 
들여쓰기 또는 누락된 중괄호 수정
게시된 코드
   if (i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && 
      i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = - 1 ;
      triggerBarTime = Time[ 1 ];
       if (Low[ 1 ]<ema21)
      OrderEntry( 0 );
   else if (i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && 
          i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = + 1 ; // All fanning up.
      triggerBarTime1 = Time[ 1 ];
       if (High[ 1 ]>ema21)
      OrderEntry( 1 );
제대로 들여쓰기
   if (i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && 
      i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = - 1 ;
   triggerBarTime = Time[ 1 ];
   if (Low[ 1 ]<ema21) OrderEntry( 0 );
   else if (i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && 
          i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = + 1 ; // All fanning up.
   triggerBarTime1 = Time[ 1 ];
   if (High[ 1 ]>ema21)  OrderEntry( 1 );
적절하게 버팀대
   if (i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && i7<i8 && 
      i8<i9 && i9<i10 && i10<i11 && i11<i12){
      DIR = - 1 ;
      triggerBarTime = Time[ 1 ];
       if (Low[ 1 ]<ema21) OrderEntry( 0 );
   }
   else if (i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && 
           i8>i9 && i9>i10 && i10>i11 && i11>i12){
      DIR = + 1 ; // All fanning up.
      triggerBarTime1 = Time[ 1 ];
       if (High[ 1 ]>ema21)  OrderEntry( 1 );
   }