초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 441

 

내가 뭘 잘못하고 있는지 알려주세요!?

마지막으로 가격이 MA를 넘은 이후로 몇 개의 막대가 지나갔는지 계산하려면 0 막대를 고려하지 않고 필요합니다.

   if(Bars>1400)
     {
      int Stop;
      double MATcycle;
      for(int i=0;i!=1000 || Stop!=1; i++)
        {
         MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
         if(MATcycle<High[i+1] && MATcycle>Low[i+1])
           {
            Stop=1;
            Print("MATcycle=",MATcycle," i=",i);
           }
         else return (0);
        }

 
-Aleks- :

내가 뭘 잘못하고 있는지 알려주세요!?

마지막으로 가격이 MA를 넘은 이후 몇 개의 막대가 지나갔는지 계산하려면 0 막대를 고려하지 않고 필요합니다.

   if(Bars>1400)
     {
      int Stop;
      double MATcycle;
      for(int i=0;i<1000 || Stop==1; i++)
        {
         MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i+1);
         if(MATcycle<High[i+1] && MATcycle>Low[i+1])
           {
            Stop=1;
            Print("MATcycle=",MATcycle," i=",i);
           }
         else return (0);
        }

내가 이해하는 한, 교차점을 정의하고 값을 stop=1로 설정하면 루프가 즉시 종료됩니다. 글쎄, 당신은 더 나아가 교차점이 발생한 양초의 번호를 기억해야합니다. 저것들.

직접 작성하는 것이 더 쉽습니다.

 for ( int i = 1 ; i < 1000 ; i++ )
{
 iMaValue = ...;   // Значение МА на i свече
 if ( iMaValue < High[ i ] && iMaValue > low[ i ] )
 {
  num = i;   // Запоминаем номер свечи, на котором произошло пересечение
   break ;     // Выходим из цикла
 }
}

촛불의 수를 결정한 것은 당신이었습니다. 숫자 = 2이고 현재 촛대를 고려하지 않으면 교차점 이후에 하나의 촛대가 형성된 것입니다(잘, 또는 원하는 대로 해석).

 
Tapochun :

내가 이해하는 한, 교차점을 정의하고 값을 stop=1로 설정하면 루프가 즉시 종료됩니다. 글쎄, 당신은 더 나아가 교차점이 발생한 양초의 번호를 기억해야합니다. 저것들.

직접 작성하는 것이 더 쉽습니다.

촛불의 수를 결정한 것은 당신이었습니다. 숫자 = 2이고 현재 것을 고려하지 않으면 교차점 이후에 하나의 촛대가 형성되었습니다 (글쎄, 원하는대로 해석).

고마워, 그게 내가 한 일이야


int Stop=0;
   if(Bars>1400)
     {
     
      double MATcycle;
      for(int i=1;(i!=1000 || Stop==0); i++)
        {
         MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
         if(MATcycle<=High[i] && MATcycle>=Low[i])
           {
            Print("MATcycle=",MATcycle," i=",i);
            Stop=i;
            break;
           }
        }
     }

 
alph :
알려주십시오. 테스터의 그러한 지표가 실생활에서 실재합니까? 그리고 $3000 디포가 있는 해에 좋은 결과입니까 나쁜 결과입니까?
대답은 간단합니다. EA를 테스트하는 경우 실제 테스터의 성능은 실제가 아닙니다. 전략 테스터 는 거래자가 ATS의 성능을 확인하거나 온라인으로 수동 전략을 테스트하는 데 사용됩니다.
 
-Aleks- :

고마워, 그게 내가 한 일이야


int Stop=0;
   if(Bars>1400)
     {
     
      double MATcycle;
      for(int i=1;(i!=1000 || Stop==0); i++)
        {
         MATcycle=iMA(Symbol(),TFT,pMAT,shiftMAT,typeMAT,priceMAT,i);
         if(MATcycle<=High[i] && MATcycle>=Low[i])
           {
            Print("MATcycle=",MATcycle," i=",i);
            Stop=i;
            break;
           }
        }
     }

그렇게 쓰면 안되기 때문에 마지막 1000개 막대에 대한 교차점이 없으면 먼저 사이클이 더 진행되고 두 번째로 루프/기타 오류가 발생할 수 있습니다. 이야기가 끝나고 교차점이 발생하지 않으면 루프에서 출구가 없습니다. 왜냐하면 Stop = 0. 위에서 지적한대로 쓰는 것이 좋습니다.

 
Tapochun :

그렇게 쓰면 안되기 때문에 마지막 1000개 막대에 대한 교차점이 없으면 먼저 사이클이 더 진행되고 두 번째로 루프/기타 오류가 발생할 수 있습니다. 이야기가 끝나고 교차점이 발생하지 않으면 루프에서 출구가 없습니다. 왜냐하면 Stop = 0. 위에서 지적한대로 쓰는 것이 좋습니다.

그러나 "또는" 기호가 작동하지 않습니다. 조건에 따라 검색이 1000개 막대에 대해 수행되거나 원하는 결과가 발견되는 즉시 종료됩니다. 아니면 원하는 결과가 발견되면 MA 가격을 넘어 1000에 도달하지 않고 끝날 것입니까?
 
-Aleks- :
그러나 "또는" 기호가 작동하지 않습니다. 조건에 따라 검색이 1000개 막대에 대해 수행되거나 원하는 결과가 발견되는 즉시 종료됩니다. 아니면 원하는 결과가 발견되면 MA 가격을 넘어 1000에 도달하지 않고 끝날 것입니까?
|| 괄호 안의 조건 중 하나 이상이 참이면 주기가 반복되므로 i >= 1000이지만 stop = 0인 경우에도 주기가 계속되고 i가 계속 증가하여 잘못된 값 MA(역사를 넘어서는 경우). 그리고 원하는 결과를 찾을 때 완료를 위해 연산자 break 가 책임이 있습니다.
 
Tapochun :
|| 괄호 안의 조건 중 하나 이상이 참이면 주기가 반복되므로 i >= 1000이지만 stop = 0인 경우에도 주기가 계속되고 i가 계속 증가하여 잘못된 값 MA(역사를 넘어서는 경우). 그리고 원하는 결과를 찾을 때 완료를 위해 연산자 break 가 책임이 있습니다.
알겠습니다. 설명 감사합니다! 조건 중 하나가 참이 아닐 거라고 생각했는데 루프가 멈출 줄 알았는데...
 

안녕하세요! 2015.09.19_02:13 모스크바 시간. ArrayResize() 함수 에서 어떤 경우에도 컴파일러는 다음을 작성합니다.

배열의 크기와 반대입니다. -- 쉼표가 필요합니다. 적어도 int를 쓰세요. 적어도 안 됩니다. 그리고 int를 쓰지 않으면 다음과 같이 씁니다. "-

유형이 없는 선언 링크 및 대괄호를 제거했습니다. 도움이 되었습니다!
경고: 정상적으로 작성될 때 컴파일러는 다음과 같이 작성했습니다. 식별자 숨김

글로벌 수준에서 선언합니다. 그리고 전역 수준에서 식별자 선언을 제거했을 때

쓰기: 오류, 선언되지 않은 ID입니다. 그리고 High[] 및 Low[] 배열을 HighP[] 및 LowP[]로 변경했습니다. 아니다

도왔다. 컴파일러도 동일하게 작성합니다. 02:27 모스크바 시간. 스크린샷 파일을 첨부합니다.

 
Николай Никитюк :

안녕하세요! 2015.09.19_02:13 모스크바 시간. ArrayResize() 함수 에서 어떤 경우에도 컴파일러는 다음을 작성합니다.

배열의 크기와 반대입니다. -- 쉼표가 필요합니다. 적어도 int를 쓰세요. 적어도 안 됩니다. 그리고 int를 쓰지 않으면 다음과 같이 씁니다. "-

유형이 없는 선언 링크 및 대괄호를 제거했습니다. 도움이 되었습니다!
경고: 정상적으로 작성될 때 컴파일러는 다음과 같이 작성했습니다. 식별자 숨김

글로벌 수준에서 선언합니다. 그리고 전역 수준에서 식별자 선언을 제거했을 때

쓰기: 오류, 선언되지 않은 식별자입니다. 그리고 High[] 및 Low[] 배열을 HighP[] 및 LowP[]로 변경했습니다. 아니다

도왔다. 컴파일러도 동일하게 작성합니다. 02:27 모스크바 시간. 스크린샷 파일을 첨부합니다.

  1. 그림은 다음과 같이 삽입해야 합니다. 포럼: 그림을 삽입하는 방법
  2. 당신은 당신이 조언하는 것을 전혀 읽지 않습니까?

    거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

    초보자의 질문

    카르푸토프 블라디미르 , 2015.09.17 18:46

    1. ArrayResize 철자가 잘못되었습니다. 다음과 같아야 합니다.
       //--- устанавливаю размеры массивов с запасом (reserve)
      ArrayResize (mrate, 16 , 9 );
      ArrayResize (maVal, 16 , 9 );
      ArrayResize (fVal, 3 , 2 );
      ArrayResize (zVal, 3 );
    2. 배열에 대한 시계열 플래그를 설정하면 다음과 같습니다.
       //--- массив максимальных цен баров
      ArraySetAsSeries (High, true );
      //---  
      ArraySetAsSeries (Low, true );


사유: