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

 
Integer :


그들이 "이것"대신에 "이것"을 쓰는 방법을 설명하십시오.

1. '이'는 'e'가 아니라 'e'로 쓴다는 사실을 모르나?

2. 손을 문자 "e"로 옮기는 것이 너무 게으르면 "e"를 누르기가 더 쉽습니까?

3. 키보드에 "e" 키가 없나요? 그렇지 않다면 왜 그녀가 아닌가?

4. 특별한 과시가 있습니까?

5. 다른 알 수 없는 이유. 어느?


나는 러시아어가 아니며 키보드에 러시아어 문자가 없습니다. 음성 키보드(예: 프로그램)를 더 많이 사용합니다. 나는 "p"를 누르고 "p"를 씁니다. e도 있습니다. "\"를 입력해야 합니다.

문법이 잊혀진 지 오래 되었기 때문에 문법 오류가 있습니다. 포럼에서만 러시아어로 작성한 다음 몇 년 후에 작성해야 합니다.

실수에 대해 사과드립니다. 열심히 마시지 마세요.

 
artmedia70 :

이 줄은 제거할 수 있습니다. iFractals()는 "빈 값"(EMPTY_VALUE)이 아니라 프랙탈이 없으면 0을 반환합니다.

질문이 있습니다. 두 개의 연속 프랙탈을 찾는 지표를 만들려고 합니까? 아니면 현재 막대에 가장 가까운 Expert Advisor에서 두 개의 연속 프랙탈을 찾고 있습니까? 이 문제는 쓸데없는 호기심이 아니기 때문입니다. 지표와 EA의 검색 방법은 다릅니다. 지표는 끝에서 시작까지 계산되며 과거에서 현재까지, EA는 현재에서 과거까지 막대를 스캔합니다. 따라서 Expert Advisor와 지표에서도 검색 방향이 다릅니다.

그리고 마지막 질문: 출력은 무엇이어야 합니까?



iFractals()가 반환하는 것에 관심이 없었습니다(지금까지는 필요하지 않았습니다). 정말 0이면 네, 거짓말을 해서 죄송합니다. EMPTY_VALUE는 확인할 필요가 없습니다.

나 자신을위한 아름다운 정당화에서 나는 공식의 그러한 버전을 생각해 냈습니다. EMPTY_VALUE의 일반적인 경우가 고려되었으며 반환 값이 0인 로케일이 아닙니다.

그러나 그 자신도 그런 기본적인 것을 몰랐다는 것이 우스꽝스럽고 부끄럽다.

내가 이해하는 대로 코드는 지표용이었습니다 . 고문에 대한 접근 방식이 다르다는 점에서 artmedia70 이 옳습니다.

시간이 없습니다. 집에 돌아가면 밤에 모든 것을 할 것입니다. 왜냐하면 mi gince 가 서로를 잘 이해하지 못하기 때문입니다(2개의 프랙탈에 대한 조건을 찾은 후 이벤트를 처리해야 함). 그래서 모든 것이 괜찮습니다.

 //----
   БЛОК ПРОВЕРКИ НОВОГО БАРА;                 //проверить наличие нового бара 

   int    a1= 0 ,                               //преведущий фрактал (-1 ->нижний, 1 -> верхний)
         a2,                                 //нынешний фрактал  (-1 ->нижний, 1 -> верхний)
         a3,                                 //сума преведущий + нынешний
         kilkict,                             //была введена с мыслю уменьшить перерасчет после глобального расчета (идея просто еще не реализована)
         frac,                               //frac - флаг существования фракталов,
         frac1= 0 ,                             //frac1- счетчик фракталов (+1 или 0 за цикл)сейчас просто выполняет роль фильтра, надо найти сперва 2 фрактала чтобы приступить к их сравнению.
         i;
     
   kilkict= Bars ;                            

   for (i= 3 ; i<kilkict;i++){                 // 3
      a2= 0 ;
      frac= 0 ;
       if ( iFractals ( NULL , 0 , MODE_UPPER, i)> 0 ) {            
         if (Bufer0!= EMPTY_VALUE ) {           //не нужно для iFrctals()данной проверки условий
            a2+= 1 ;                           //к числу фракталов добавляем 1
            frac= 1 ;                           //флаг - фрактал есть
            frac1++;                         //счетчик увеличиваем на 1
         }
      }
       if ( iFractals ( NULL , 0 , MODE_LOWER, i)> 0 ) {            
         if (Bufer0!= EMPTY_VALUE ) {           //не нужно для iFrctals() данной проверки условий
             if (a2== 0 ){              
               frac1++;                       //счетчик увеличиваем на 1 
               frac= 1 ;                       //флаг - фрактал есть
            }
            a2+=- 1 ;                           //к числу фракталов добавляем -1(т. е. уменшаем)
         }
      } 
       if (frac== 0 ){ continue ;}                 // если флага нет (фрактал не найден)
       if (frac1== 1 ){                         //если счетчик равен 1,
         a1=a2; 
         continue ;
      }          
      a3=a1+a2;
       if (a3< 0 )           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue ;} //Два фрактала вниз  подряд найдено// 
       if (a3> 0 )           { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; continue ;} //Два фрактала вверх подряд найдено //
       if (a3== 0 && a1== 0 ) { a1=a2; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; БЛОК ОБРАБОТКИ УСЛОВИЯ ДВА ФРАКТАЛА НАЙДЕНО; } // Два фрактала подряд вверх и два фрактала подряд вниз найдено //
   } 

 
gince :


...

실수에 대해 사과드립니다. 열심히 마시지 마세요.


예, 궁금합니다. 재미있습니다.
 
Integer :

예, 궁금합니다. 재미있습니다.

수정해주셔서 감사합니다.
 
if (!SL== 0 )
   {
  dollarsPerPip = lot/SL;
   }

글쎄, 누가 하는거야??

 if (SL> 0 ) dollarsPerPip = lot/SL;

{ } 을(를) 많이 넣는 이유 ?? 프로세스를 느리게 하고...

옵션으로 가능합니다

 if (SL) dollarsPerPip = lot/SL;
 
gince :


동안 지표, 그리고 우리는 볼 것입니다. 지표와 EA의 검색 방법은 다릅니다. 지표는 끝에서 시작까지 계산되며 과거에서 현재까지, EA는 현재에서 과거까지 막대를 스캔합니다.

( i=kilkict;i> 0 ;i--)

결과는 상위 2개 -> 매도(아래쪽 화살표), 하위 2개 -> 구매(위쪽 화살표)입니다. 프랙탈 오른쪽에 +2개의 막대가 표시되도록 신호를 표시합니다. 이것이 내가 먼저 시각적으로 이야기를보고 싶은 것입니다. 그리고 아마도 필터가 필요할 것입니다.

그렇다면 질문은 다음과 같습니다. 역사를보고 싶다면 왜이 지표를 작성하여 자신을 고문합니까? 기사 표시기에 대한 링크도 제공되었습니다. 그것은 당신이 원하는 것을 정확히 수행합니다:

 //+------------------------------------------------------------------+
//|                                                    iFractals.mq4 |
//|                             Copyright © 2010, EGEN Software LTD. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "Copyright © 2010, EGEN Software LTD."
#property link         "http://www.metaquotes.net"

#property indicator_chart_window

#property indicator_buffers   2
#property indicator_color1    Lime
#property indicator_color2    Red
#property indicator_width1     2
#property indicator_width2     2

datetime TIME; double F,F1,F2;

double WAVE. 0 [];
double WAVE. 1 [];

bool EQ( int value1, int value2)
{
   return (value1==value2);
}

bool ZERO( int value)
{
   return (EQ(value, 0 ));
}

int MathSign( double value1, double value2)
{
   if (value1< 0 )
       if (value2< 0 ) return (- 1 );
   if (value1> 0 )
       if (value2> 0 ) return ( 1 );
   return ( 0 );
}

bool TOTAL( int index)
{
   return (index< Bars );
}

double FRACTALS( int mode, int shift)
{
   return ( iFractals ( NULL , 0 ,mode,shift));
}

double UPPER( int shift)
{
   return (FRACTALS(MODE_UPPER,shift));
}

double LOWER( int shift)
{
   return (FRACTALS(MODE_LOWER,shift));   
}

int PEAK( int shift)
{
   int peak= 0 ;
   double F1=UPPER(shift); 
   if (F1> 0 ) peak++;
   double F2=LOWER(shift); 
   if (F2> 0 ) peak--;
   F=F1+F2; 
   return (peak);
}

void init()
{
   IndicatorBuffers( 2 );
   SetIndexBuffer ( 0 ,WAVE. 0 );
   SetIndexStyle( 0 , DRAW_ARROW ,EMPTY);  
   SetIndexArrow( 0 , 236 );    
   SetIndexBuffer ( 1 ,WAVE. 1 );
   SetIndexStyle( 1 , DRAW_ARROW ,EMPTY);      
   SetIndexArrow( 1 , 238 );
   IndicatorDigits( Digits );
   IndicatorShortName( "iFractals" );  
}

bool F1( int shift)
{
   int peak=PEAK(shift);
   if (ZERO(peak)) return ( false ); 
   F1=F*peak;
   return ( true );
}

int WAVE. 1 ( int shift)
{   
   for ( int i=shift; TOTAL(i); i++) 
       if (F1(i)) break ; 
   return (i);
}

bool F2( int shift)
{
   int peak=PEAK(shift);
   if (ZERO(peak)) return ( false ); 
   F2=F*peak;
   return ( true );
}

int WAVE. 2 ( int shift)
{   
   for ( int i=shift; TOTAL(i); i++) 
       if (F2(i)) break ; 
   return (i);
}

void WAVE( int shift)
{
   WAVE. 0 [shift]= EMPTY_VALUE ;
   WAVE. 1 [shift]= EMPTY_VALUE ;
   shift=WAVE. 1 (shift); 
   int index=shift; shift++;
   shift=WAVE. 2 (shift);
   int wave=MathSign(F1,F2);
   F1= MathAbs (F1);
   F2= MathAbs (F2);
   if (wave< 0 ) 
       if (F1<F2) WAVE. 1 [index]=F1; else WAVE. 0 [index]=F1;                  
   if (wave> 0 ) 
       if (F1>F2) WAVE. 0 [index]=F1; else WAVE. 1 [index]=F1;       
}   

void CheckWave()
{
   for ( int i= 3 ; TOTAL(i); i++) WAVE(i);
}   

void start()
{
   CheckWave();
}

이야기를 모아서 보세요. 그런 다음 자신의 결론을 도출하십시오.

아니면 "해먹에 서서"가 더 편리합니까?

 
artmedia70 :

그렇다면 질문은 다음과 같습니다. 역사를보고 싶다면 왜이 지표를 작성하여 자신을 고문합니까? 기사 표시기에 대한 링크도 제공되었습니다. 그것은 당신이 원하는 것을 정확히 수행합니다:

이야기를 모아서 보세요. 그런 다음 자신의 결론을 도출하십시오.

아니면 "해먹에 서서"가 더 편리합니까?



그리고 당신은 칠면조의 논리를 추적합니다))

주저하지 말고 20가지 기능을 열어보세요 ???

 
VOLDEMAR :

글쎄, 누가 하는거야??

{ } 을(를) 많이 넣는 이유 ?? 프로세스를 느리게 하고...

옵션으로 가능합니다


그렇군요 몰랐네요 확인해봐야겠네요
 
ALXIMIKS :


그리고 당신은 칠면조의 논리를 추적합니다))

주저하지 말고 20가지 기능을 열어보세요 ???

거기에서 각 함수는 한 눈에 이해할 수 있는 결과를 반환합니다. 단 한 번도 망설이지 않아... 모든 게 그날처럼 맑아. 게다가 그는 그것을 필요로합니까? 그는 코드가 아니라 역사를 봐야 합니다.
 
VOLDEMAR :

글쎄, 누가 하는거야??

왜 { } 를 많이 넣습니까 ?? 그리고 프로세스를 느리게 ...

옵션으로 가능합니다

수정해주셔서 감사합니다.

나는 그런 어리석은 습관이 있다

조건문을 작성하여

즉시 괄호