Как я могу использовать iOpen (), iClose (), iLow () и iHigh (), чтобы найти эти пинбары? - PullRequest
2 голосов
/ 23 сентября 2019

Я хочу найти пинбары, обведенные кружком на прикрепленном изображении ниже.Для той, что справа, тело составляет около 1/5 от размера свечи, а для левой, скажем, тело составляет 1/7 от размера свечи, а также имеет фитиль 1/7 от свечи.Размер внизу.Как я могу использовать iOpen(), iLow() и другие подобные функции для поиска этих двух типов пинбар?

enter image description here

1 Ответ

1 голос
/ 23 сентября 2019

Q : Как использовать iOpen(), iLow() и другие подобные функции для поиска этих двух типов пинбаров?

Может использовать рабочий шаблон, подобный этой WasThisTheUserDefinedBearishPATTERN() функции, и, определив все ваши пользовательские условия и константы, просто вызовите
if ( WasThisTheUserDefinedBearishPATTERN( aShift, 4.5, 0.1, 2000 ) ) { do_something(); } при использовании его для торговли:

bool WasThisTheUserDefinedBearishPATTERN( const int    aBarNUMBER,
                                          const double aBody2uWICK_MUL,
                                          const double min_FRACTION,
                                          const double MAX_FRACTION
                                          ) {
// BAR-UPPER-wick:
   double aBarUpWK = ( iHigh(  _Symbol, PERIOD_CURRENT, aBarNUMBER )
                     - iClose( _Symbol, PERIOD_CURRENT, aBarNUMBER )
                       );
// BAR-body:
   double aBarBODY = ( iClose( _Symbol, PERIOD_CURRENT, aBarNUMBER )
                     - iOpen(  _Symbol, PERIOD_CURRENT, aBarNUMBER )
                       );
// BAR-LOWER-wick:
   double aBarLoWK = ( iLow(   _Symbol, PERIOD_CURRENT, aBarNUMBER )
                     - iClose( _Symbol, PERIOD_CURRENT, aBarNUMBER )
                       );
// FLAG:
   bool  aBearishFLAG = FALSE;
// -----------------------------------------------------------------
// USER-DEFINE-ABLE SET OF SHAPE-CONDITIONS ..... = add all that apply
// BEARISH BODY:
//              has body
//              has body BEARISH
//              has body not more than about a lo-wick size * < min_FRACTION, MAX_FRACTION >
//              has body not less than about a hi-wick size * _MUL 
// -------------
   if (  aBarBODY >= 0                                      // not BEARISH
      || aBarUpWK <  aBarBODY * aBody2uWICK_MUL             // not long enough UpperWICK
         ){
         aBearishFLAG = FALSE;                              // (NO)
   }
   else { if (        aBarBODY <  0                         // has BEARISH CANDLE
             && (     aBarLoWK == 0                         // and may LO-WICK ZERO
                || (  aBarLoWk / aBarBODY > min_FRACTION    //     .GT. min-WICK-2-BODY-FRACTION
                   && aBarLoWk / aBarBODY < MAX_FRACTION    //     .LT. MAX-WICK-2-BODY-FRACTION
                      )
                  )
                ){  aBearishFLAG = TRUE;  }                 // (YES)
          else {    aBearishFLAG = FALSE; }                 // ( NO) OTHERWISE
   }
   return( aBearishFLAG );
}

Экс-пост:

Я сделал WasThisTheUserDefinedBearishPATTERN( aShift, 1, 1/6, 2/6 )
и ожидал, что это приведет к чему-то ...

Помимо приведенного ниже комментария, пожалуйста, соблюдайте Правила Мира языка MQL4:

Print( "DIV( 1  / 7  ) == ", 1  / 7  );   // will show you The Rules
Print( "DIV( 1. / 7. ) == ", 1. / 7. );   // will show you The Rules
...