[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 173

 
Ctmcn :

Expert Advisor를 컴파일할 때 오류가 무엇을 의미하는지 알려주십시오.

'\end_of_program' - 불균형 왼쪽 괄호


불균형 왼쪽 괄호.
 
Roll :

불균형 왼쪽 괄호.

이런... 찾았습니다. 감사하다.
 

질문이 있었습니다 -

주문은 BUY/SELL STOP 으로 열립니다. 일부는 시장성이 되고 다른 일부는 제거됩니다.

마지막 N-마켓 주문(개방 및 마감)의 경우 매수 또는 매도인지 확인해야 합니다.

첫 번째 생각은 OrdersHistoryTotal()OrdersTotal( ) 의 모든 주문을 반복하고 다음 기준으로 정렬하는 것입니다.

마감 시간, 그리고 OP_BUY 및 OP_SELL. 그러나 이것은 길고 프로세서 속도를 크게 떨어뜨릴 것입니다.

- 다른 더 간단한 옵션이 있습니까?

고맙습니다!

[삭제]  

안녕하세요.

누구든지 도울 수 있습니까?

나는 첫 번째 간단한 지표를 작성했습니다 - 지난 2일, 3일, 4일 및 5일 동안의 평균 변동성을 계산해야 합니다.

표시기에는 6개의 버퍼가 있으며,

 SetIndexStyle ( 0 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 0 ,VolatBuffer0);
   SetIndexStyle ( 1 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 1 ,VolatBuffer1);
   SetIndexStyle ( 2 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 2 ,VolatBuffer2);
   SetIndexStyle ( 3 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 3 ,VolatBuffer3);
   SetIndexStyle ( 4 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 4 ,VolatBuffer4);
   SetIndexStyle ( 5 , DRAW_LINE );
   SetIndexBuffer ( 5 ,VolatBuffer5);

차트의 창에는 일반적으로 0일, 1일 평균의 변동성 값에 따라 5개의 수직선 만 그립니다. 2일, 3일, 4일.

이전 5일의 합계에 대한 평균 변동성은 50개의 일일 양초에 대한 파선으로 그려집니다.

버퍼의 내용은 다음과 같이 계산됩니다. 5일 동안의 평균 - 주기에서(50일 동안 선 그리기) 나머지 평균 데이터 - 주기 외부.

 while (i>= 0 )
   {
    
   int day0= (High[i] - Low[i])/ Point ;
   int day1= (High[i+ 1 ] - Low[i+ 1 ])/ Point ;
   int day2= (High[i+ 2 ] - Low[i+ 2 ])/ Point ;
   int day3= (High[i+ 3 ] - Low[i+ 3 ])/ Point ;
   int day4= (High[i+ 4 ] - Low[i+ 4 ])/ Point ;
   int day5= (High[i+ 5 ] - Low[i+ 5 ])/ Point ;

         int D5_av = (day1+ day2+ day3+ day4+ day5) / 5 ;
       VolatBuffer5[i]=D5_av;
      i--;
        }
        day0= (High[ 0 ] - Low[ 0 ])/ Point ;
   day1= (High[ 1 ] - Low[ 1 ])/ Point ;
   day2= (High[ 2 ] - Low[ 2 ])/ Point ;
   day3= (High[ 3 ] - Low[ 3 ])/ Point ;
   day4= (High[ 4 ] - Low[ 4 ])/ Point ;
        
         int D4_av = (day1+ day2+ day3+ day4)/ 4 ;
         int D3_av = (day1+ day2+ day3)/ 3 ;
         int D2_av = (day1+ day2)/ 2 ;
         int D1_av = day1/ 1 ;
         int D0_av = day0/ 1 ;
        
        VolatBuffer0[ 0 ]=D0_av;
      VolatBuffer1[ 1 ]=D1_av;
      VolatBuffer2[ 2 ]=D2_av;
      VolatBuffer3[ 3 ]=D3_av;
      VolatBuffer4[ 4 ]=D4_av;
Comment ( "Волатильность. За 5 дн.= " +VolatBuffer5[ 5 ]+ " За 4 дн.= " +VolatBuffer4[ 4 ]+ " За 3 дн.= " +VolatBuffer3[ 3 ]+ " За 2 дн.= " +VolatBuffer2[ 2 ]+ " Вчера= " +VolatBuffer1[ 1 ]+ " Сегодня= " +VolatBuffer0[ 0 ]);

버퍼의 내용을 포함하는 표시기의 주석 행은 화면에 부조리를 표시합니다.

5일 동안의 평균 - 이 날에는 194포인트 이상의 변동성이 없었고 나머지 날의 정확한 결과는 없었습니다.

설명 = " 변동성. 5일 = 219.000000 4일 = 171.0000000 3일 = 189.00000 2일 = 187.00000 어제 = 194.00000 오늘 = 5 "

제로데이 "오늘"은 당일의 변동성에 따라 분명히 증가합니다.

EA에서 이러한 버퍼를 호출할 때

 int Volat0= iCustom ( Symbol (), 1440 , "Volat_Average_Gist" , 0 , 0 );
       int Volat1= iCustom ( Symbol (), 1440 , "Volat_Average_Gist" , 1 , 0 );
       int Volat2= iCustom ( Symbol (), 1440 , "Volat_Average_Gist" , 2 , 0 );
       int Volat3= iCustom ( Symbol (), 1440 , "Volat_Average_Gist" , 3 , 0 );
       int Volat4= iCustom ( Symbol (), 1440 , "Volat_Average_Gist" , 4 , 0 );
       int Volat5= iCustom ( Symbol (), 1440 , "Volat_Average_Gist" , 5 , 0 );

테스터의 인쇄 라인은 또 다른 부조리를 제공합니다 - 정확하지 않고 주석 라인과 다르지만 진실과 유사합니다. 5일 동안의 평균 결과 와 오늘의 "제로" 날의 정확한 변동성.

나머지는 고정된 불합리한 숫자를 제공합니다.

인쇄 테스터는 변동성을 제공합니다. 5일= 181 4일= 2147483647 3일= 2147483647 2일= 2147483647 어제= 2147483647 오늘= 5

며칠 동안 Expert Advisor가 "0" 데이 버퍼를 제외하고 5개의 표시기 버퍼에 포함된 것과 동일한 데이터를 수신하지 못하는 이유를 알 수 없습니다.

 

교체 시도

VolatBuffer1[1]=D1_av;

VolatBuffer1[0]=D1_av;

음, 다른 모든 버퍼도 마찬가지입니다.

[삭제]  
Roger :

교체 시도

VolatBuffer1[1]=D1_av;

VolatBuffer1[0]=D1_av;

음, 다른 모든 버퍼도 마찬가지입니다.

고맙습니다!

그것은 효과가 있었다. 정상 데이터가 고문에게 오기 시작했습니다.

또한 표시기 자체의 "주석"줄에서 흥미로운 효과가 나타났습니다.

EA의 프린트 라인에 있던 부조리가 등록되기 시작했고, 5일 동안 219개만 그대로 남아 있었다.

동시에 219 대신 181이 고문에게 옵니다.

주석"은 변동성 5일= 219.000000 4일= 2147483647 3일= 2147483647 2일= 2147483647 어제= 2147483647 오늘= 5를 반환합니다.

[삭제]  
Roger :

교체 시도

VolatBuffer1[1]=D1_av;

VolatBuffer1[0]=D1_av;

음, 다른 모든 버퍼도 마찬가지입니다.

또 다른 효과를 찾았습니다. 표시기 창에서 모든 수직선 이 이제 서로의 위에 그려집니다.

가장 큰 값은 다른 모든 값을 포함합니다. 고문에게 이것은 필수 사항이 아닙니다.

 
Vekker :

안녕하세요.

누구든지 도울 수 있습니까?

나는 첫 번째 간단한 지표를 작성했습니다 - 지난 2일, 3일, 4일 및 5일 동안의 평균 변동성을 계산해야 합니다.

ATR을 사용하여 많은 것을 단순화할 수 있습니다.

 iATR ( NULL , PERIOD_D1 , Number_Of_Days, 1 )
 
Roll :
두 개의 스크립트:

문제는 더 이상 코드를 작성하는 방법이 아니라 아이디어 수준에서 - 다중 루프를 피할 수 있습니까?

프로세서를 로드합니다. 예를 들어, 미결 STOP 주문의 수를 추적하는 아이디어가 있었습니다 - 하나 감소했지만 주문이 삭제되지 않은 경우 => 시장이 열린 주문 =>

여는 시간을 놓고 배열에 입력하십시오. 그런 것.

어떤 아이디어라도 환영합니다.

고맙습니다!

[삭제]  
chief2000 :

ATR을 사용하여 많은 것을 단순화할 수 있습니다.



고맙습니다! 나는 노력할 것이다