/* Generated */ TA_RetCode TA_S_CDLEVENINGDOJISTAR( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ double optInPenetration, /* From 0 to TA_REAL_MAX */ /* Generated */ int *outBegIdx, /* Generated */ int *outNbElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ double BodyDojiPeriodTotal, BodyLongPeriodTotal, BodyShortPeriodTotal; /* Generated */ int i, outIdx, BodyDojiTrailingIdx, BodyLongTrailingIdx, BodyShortTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return NAMESPACE(TA_RetCode)TA_OUT_OF_RANGE_START_INDEX; /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return NAMESPACE(TA_RetCode)TA_OUT_OF_RANGE_END_INDEX; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ if( optInPenetration == TA_REAL_DEFAULT ) /* Generated */ optInPenetration = 3.000000e-1; /* Generated */ else if( (optInPenetration < 0.000000e+0) || (optInPenetration > 3.000000e+37) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( !outInteger ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(CDLEVENINGDOJISTAR)(optInPenetration); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNbElement); /* Generated */ return NAMESPACE(TA_RetCode)TA_SUCCESS; /* Generated */ } /* Generated */ BodyLongPeriodTotal = 0; /* Generated */ BodyDojiPeriodTotal = 0; /* Generated */ BodyShortPeriodTotal = 0; /* Generated */ BodyLongTrailingIdx = startIdx -2 - TA_CANDLEAVGPERIOD(TA_BodyLong); /* Generated */ BodyDojiTrailingIdx = startIdx -1 - TA_CANDLEAVGPERIOD(TA_BodyDoji); /* Generated */ BodyShortTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(TA_BodyShort); /* Generated */ i = BodyLongTrailingIdx; /* Generated */ while( i < startIdx-2 ) { /* Generated */ BodyLongPeriodTotal += TA_CANDLERANGE( TA_BodyLong, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = BodyDojiTrailingIdx; /* Generated */ while( i < startIdx-1 ) { /* Generated */ BodyDojiPeriodTotal += TA_CANDLERANGE( TA_BodyDoji, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = BodyShortTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ BodyShortPeriodTotal += TA_CANDLERANGE( TA_BodyShort, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ outIdx = 0; /* Generated */ do /* Generated */ { /* Generated */ if( TA_REALBODY(i-2) > TA_CANDLEAVERAGE( TA_BodyLong, BodyLongPeriodTotal, i-2 ) && // 1st: long /* Generated */ TA_CANDLECOLOR(i-2) == 1 && // white /* Generated */ TA_REALBODY(i-1) <= TA_CANDLEAVERAGE( TA_BodyDoji, BodyDojiPeriodTotal, i-1 ) && // 2nd: doji /* Generated */ TA_REALBODYGAPUP(i-1,i-2) && // gapping up /* Generated */ TA_REALBODY(i) > TA_CANDLEAVERAGE( TA_BodyShort, BodyShortPeriodTotal, i ) && // 3rd: longer than short /* Generated */ TA_CANDLECOLOR(i) == -1 && // black real body /* Generated */ inClose[i] < inClose[i-2] - TA_REALBODY(i-2) * optInPenetration // closing well within 1st rb /* Generated */ ) /* Generated */ outInteger[outIdx++] = -100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ BodyLongPeriodTotal += TA_CANDLERANGE( TA_BodyLong, i-2 ) - TA_CANDLERANGE( TA_BodyLong, BodyLongTrailingIdx ); /* Generated */ BodyDojiPeriodTotal += TA_CANDLERANGE( TA_BodyDoji, i-1 ) - TA_CANDLERANGE( TA_BodyDoji, BodyDojiTrailingIdx ); /* Generated */ BodyShortPeriodTotal += TA_CANDLERANGE( TA_BodyShort, i ) - TA_CANDLERANGE( TA_BodyShort, BodyShortTrailingIdx ); /* Generated */ i++; /* Generated */ BodyLongTrailingIdx++; /* Generated */ BodyDojiTrailingIdx++; /* Generated */ BodyShortTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ VALUE_HANDLE_DEREF(outNbElement) = outIdx; /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return NAMESPACE(TA_RetCode)TA_SUCCESS; /* Generated */ }
/* Generated */ TA_RetCode TA_S_CDLHANGINGMAN( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ double BodyPeriodTotal, ShadowLongPeriodTotal, ShadowVeryShortPeriodTotal, NearPeriodTotal; /* Generated */ int i, outIdx, BodyTrailingIdx, ShadowLongTrailingIdx, ShadowVeryShortTrailingIdx, NearTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex); /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex); /* Generated */ #if !defined(_JAVA) /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outInteger ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(CDLHANGINGMAN)(); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ } /* Generated */ BodyPeriodTotal = 0; /* Generated */ BodyTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(BodyShort); /* Generated */ ShadowLongPeriodTotal = 0; /* Generated */ ShadowLongTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(ShadowLong); /* Generated */ ShadowVeryShortPeriodTotal = 0; /* Generated */ ShadowVeryShortTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(ShadowVeryShort); /* Generated */ NearPeriodTotal = 0; /* Generated */ NearTrailingIdx = startIdx -1 - TA_CANDLEAVGPERIOD(Near); /* Generated */ i = BodyTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ BodyPeriodTotal += TA_CANDLERANGE( BodyShort, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = ShadowLongTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ ShadowLongPeriodTotal += TA_CANDLERANGE( ShadowLong, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = ShadowVeryShortTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ ShadowVeryShortPeriodTotal += TA_CANDLERANGE( ShadowVeryShort, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = NearTrailingIdx; /* Generated */ while( i < startIdx-1 ) { /* Generated */ NearPeriodTotal += TA_CANDLERANGE( Near, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ outIdx = 0; /* Generated */ do /* Generated */ { /* Generated */ if( TA_REALBODY(i) < TA_CANDLEAVERAGE( BodyShort, BodyPeriodTotal, i ) && // small rb /* Generated */ TA_LOWERSHADOW(i) > TA_CANDLEAVERAGE( ShadowLong, ShadowLongPeriodTotal, i ) && // long lower shadow /* Generated */ TA_UPPERSHADOW(i) < TA_CANDLEAVERAGE( ShadowVeryShort, ShadowVeryShortPeriodTotal, i ) && // very short upper shadow /* Generated */ min( inClose[i], inOpen[i] ) >= inHigh[i-1] - TA_CANDLEAVERAGE( Near, NearPeriodTotal, i-1 ) // rb near the prior candle's highs /* Generated */ ) /* Generated */ outInteger[outIdx++] = -100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ BodyPeriodTotal += TA_CANDLERANGE( BodyShort, i ) /* Generated */ - TA_CANDLERANGE( BodyShort, BodyTrailingIdx ); /* Generated */ ShadowLongPeriodTotal += TA_CANDLERANGE( ShadowLong, i ) /* Generated */ - TA_CANDLERANGE( ShadowLong, ShadowLongTrailingIdx ); /* Generated */ ShadowVeryShortPeriodTotal += TA_CANDLERANGE( ShadowVeryShort, i ) /* Generated */ - TA_CANDLERANGE( ShadowVeryShort, ShadowVeryShortTrailingIdx ); /* Generated */ NearPeriodTotal += TA_CANDLERANGE( Near, i-1 ) /* Generated */ - TA_CANDLERANGE( Near, NearTrailingIdx ); /* Generated */ i++; /* Generated */ BodyTrailingIdx++; /* Generated */ ShadowLongTrailingIdx++; /* Generated */ ShadowVeryShortTrailingIdx++; /* Generated */ NearTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }
/* Generated */ TA_RetCode TA_S_CDL2CROWS( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ double BodyLongPeriodTotal; /* Generated */ int i, outIdx, BodyLongTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex); /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex); /* Generated */ #if !defined(_JAVA) /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outInteger ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(CDL2CROWS)(); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ } /* Generated */ BodyLongPeriodTotal = 0; /* Generated */ BodyLongTrailingIdx = startIdx -2 - TA_CANDLEAVGPERIOD(BodyLong); /* Generated */ i = BodyLongTrailingIdx; /* Generated */ while( i < startIdx-2 ) { /* Generated */ BodyLongPeriodTotal += TA_CANDLERANGE( BodyLong, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ outIdx = 0; /* Generated */ do /* Generated */ { /* Generated */ #ifdef TA_LIB_PRO /* Generated */ #else /* Generated */ if( TA_CANDLECOLOR(i-2) == 1 && // 1st: white /* Generated */ TA_REALBODY(i-2) > TA_CANDLEAVERAGE( BodyLong, BodyLongPeriodTotal, i-2 ) && // long /* Generated */ TA_CANDLECOLOR(i-1) == -1 && // 2nd: black /* Generated */ TA_REALBODYGAPUP(i-1,i-2) && // gapping up /* Generated */ TA_CANDLECOLOR(i) == -1 && // 3rd: black /* Generated */ inOpen[i] < inOpen[i-1] && inOpen[i] > inClose[i-1] && // opening within 2nd rb /* Generated */ inClose[i] > inOpen[i-2] && inClose[i] < inClose[i-2] // closing within 1st rb /* Generated */ ) /* Generated */ #endif /* Generated */ outInteger[outIdx++] = -100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ BodyLongPeriodTotal += TA_CANDLERANGE( BodyLong, i-2 ) - TA_CANDLERANGE( BodyLong, BodyLongTrailingIdx ); /* Generated */ i++; /* Generated */ BodyLongTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }
/* Generated */ TA_RetCode TA_S_CDLINNECK( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ double EqualPeriodTotal, BodyLongPeriodTotal; /* Generated */ int i, outIdx, EqualTrailingIdx, BodyLongTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex); /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex); /* Generated */ #if !defined(_JAVA) /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outInteger ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(CDLINNECK)(); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ } /* Generated */ EqualPeriodTotal = 0; /* Generated */ EqualTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(Equal); /* Generated */ BodyLongPeriodTotal = 0; /* Generated */ BodyLongTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(BodyLong); /* Generated */ i = EqualTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ EqualPeriodTotal += TA_CANDLERANGE( Equal, i-1 ); /* Generated */ i++; /* Generated */ } /* Generated */ i = BodyLongTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ BodyLongPeriodTotal += TA_CANDLERANGE( BodyLong, i-1 ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ #ifdef TA_LIB_PRO /* Generated */ #endif /* Generated */ outIdx = 0; /* Generated */ do /* Generated */ { /* Generated */ #ifdef TA_LIB_PRO /* Generated */ #else /* Generated */ if( TA_CANDLECOLOR(i-1) == -1 && // 1st: black /* Generated */ TA_REALBODY(i-1) > TA_CANDLEAVERAGE( BodyLong, BodyLongPeriodTotal, i-1 ) && // long /* Generated */ TA_CANDLECOLOR(i) == 1 && // 2nd: white /* Generated */ inOpen[i] < inLow[i-1] && // open below prior low /* Generated */ inClose[i] <= inClose[i-1] + TA_CANDLEAVERAGE( Equal, EqualPeriodTotal, i-1 ) && // close slightly into prior body /* Generated */ inClose[i] >= inClose[i-1] /* Generated */ ) /* Generated */ outInteger[outIdx++] = -100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ #endif /* Generated */ EqualPeriodTotal += TA_CANDLERANGE( Equal, i-1 ) - TA_CANDLERANGE( Equal, EqualTrailingIdx-1 ); /* Generated */ BodyLongPeriodTotal += TA_CANDLERANGE( BodyLong, i-1 ) /* Generated */ - TA_CANDLERANGE( BodyLong, BodyLongTrailingIdx-1 ); /* Generated */ i++; /* Generated */ EqualTrailingIdx++; /* Generated */ BodyLongTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }
/* Generated */ TA_RetCode TA_S_CDLPIERCING( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ ARRAY_LOCAL(BodyLongPeriodTotal,2); /* Generated */ int i, outIdx, totIdx, BodyLongTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex); /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex); /* Generated */ #if !defined(_JAVA) /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outInteger ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(CDLPIERCING)(); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ } /* Generated */ BodyLongPeriodTotal[1] = 0; /* Generated */ BodyLongPeriodTotal[0] = 0; /* Generated */ BodyLongTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(BodyLong); /* Generated */ i = BodyLongTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ BodyLongPeriodTotal[1] += TA_CANDLERANGE( BodyLong, i-1 ); /* Generated */ BodyLongPeriodTotal[0] += TA_CANDLERANGE( BodyLong, i ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ outIdx = 0; /* Generated */ #ifdef TA_LIB_PRO /* Generated */ #else /* Generated */ do /* Generated */ { /* Generated */ if( TA_CANDLECOLOR(i-1) == -1 && // 1st: black /* Generated */ TA_REALBODY(i-1) > TA_CANDLEAVERAGE( BodyLong, BodyLongPeriodTotal[1], i-1 ) && // long /* Generated */ TA_CANDLECOLOR(i) == 1 && // 2nd: white /* Generated */ TA_REALBODY(i) > TA_CANDLEAVERAGE( BodyLong, BodyLongPeriodTotal[0], i ) && // long /* Generated */ inOpen[i] < inLow[i-1] && // open below prior low /* Generated */ inClose[i] < inOpen[i-1] && // close within prior body /* Generated */ inClose[i] > inClose[i-1] + TA_REALBODY(i-1) * 0.5 // above midpoint /* Generated */ ) /* Generated */ outInteger[outIdx++] = 100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ for (totIdx = 1; totIdx >= 0; --totIdx) /* Generated */ BodyLongPeriodTotal[totIdx] += TA_CANDLERANGE( BodyLong, i-totIdx ) /* Generated */ - TA_CANDLERANGE( BodyLong, BodyLongTrailingIdx-totIdx ); /* Generated */ i++; /* Generated */ BodyLongTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ #endif /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }
/* Generated */ TA_RetCode TA_S_CDLMATHOLD( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ double optInPenetration, /* From 0 to TA_REAL_MAX */ /* Generated */ int *outBegIdx, /* Generated */ int *outNbElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ double BodyPeriodTotal[5]; /* Generated */ int i, outIdx, totIdx, BodyShortTrailingIdx, BodyLongTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return TA_OUT_OF_RANGE_START_INDEX; /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return TA_OUT_OF_RANGE_END_INDEX; /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return TA_BAD_PARAM; /* Generated */ if( optInPenetration == TA_REAL_DEFAULT ) /* Generated */ optInPenetration = 5.000000e-1; /* Generated */ else if( (optInPenetration < 0.000000e+0) || (optInPenetration > 3.000000e+37) ) /* Generated */ return TA_BAD_PARAM; /* Generated */ if( outInteger == NULL ) /* Generated */ return TA_BAD_PARAM; /* Generated */ #endif /* Generated */ lookbackTotal = TA_CDLMATHOLD_Lookback(optInPenetration); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ *outBegIdx = 0; /* Generated */ *outNbElement = 0; /* Generated */ return TA_SUCCESS; /* Generated */ } /* Generated */ BodyPeriodTotal[4] = 0; /* Generated */ BodyPeriodTotal[3] = 0; /* Generated */ BodyPeriodTotal[2] = 0; /* Generated */ BodyPeriodTotal[1] = 0; /* Generated */ BodyPeriodTotal[0] = 0; /* Generated */ BodyShortTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(TA_BodyShort); /* Generated */ BodyLongTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(TA_BodyLong); /* Generated */ i = BodyShortTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ BodyPeriodTotal[3] += TA_CANDLERANGE( TA_BodyShort, i-3 ); /* Generated */ BodyPeriodTotal[2] += TA_CANDLERANGE( TA_BodyShort, i-2 ); /* Generated */ BodyPeriodTotal[1] += TA_CANDLERANGE( TA_BodyShort, i-1 ); /* Generated */ i++; /* Generated */ } /* Generated */ i = BodyLongTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ BodyPeriodTotal[4] += TA_CANDLERANGE( TA_BodyLong, i-4 ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ outIdx = 0; /* Generated */ do /* Generated */ { /* Generated */ if( // 1st long, then 3 small /* Generated */ TA_REALBODY(i-4) > TA_CANDLEAVERAGE( TA_BodyLong, BodyPeriodTotal[4], i-4 ) && /* Generated */ TA_REALBODY(i-3) < TA_CANDLEAVERAGE( TA_BodyShort, BodyPeriodTotal[3], i-3 ) && /* Generated */ TA_REALBODY(i-2) < TA_CANDLEAVERAGE( TA_BodyShort, BodyPeriodTotal[2], i-2 ) && /* Generated */ TA_REALBODY(i-1) < TA_CANDLEAVERAGE( TA_BodyShort, BodyPeriodTotal[1], i-1 ) && /* Generated */ // white, black, 2 black or white, white /* Generated */ TA_CANDLECOLOR(i-4) == 1 && /* Generated */ TA_CANDLECOLOR(i-3) == -1 && /* Generated */ TA_CANDLECOLOR(i) == 1 && /* Generated */ // upside gap 1st to 2nd /* Generated */ TA_REALBODYGAPUP(i-3,i-4) && /* Generated */ // 3rd to 4th hold within 1st: a part of the real body must be within 1st real body /* Generated */ min(inOpen[i-2], inClose[i-2]) < inClose[i-4] && /* Generated */ min(inOpen[i-1], inClose[i-1]) < inClose[i-4] && /* Generated */ // reaction days penetrate first body less than optInPenetration percent /* Generated */ min(inOpen[i-2], inClose[i-2]) > inClose[i-4] - TA_REALBODY(i-4) * optInPenetration && /* Generated */ min(inOpen[i-1], inClose[i-1]) > inClose[i-4] - TA_REALBODY(i-4) * optInPenetration && /* Generated */ // 2nd to 4th are falling /* Generated */ max(inClose[i-2], inOpen[i-2]) < inOpen[i-3] && /* Generated */ max(inClose[i-1], inOpen[i-1]) < max(inClose[i-2], inOpen[i-2]) && /* Generated */ // 5th opens above the prior close /* Generated */ inOpen[i] > inClose[i-1] && /* Generated */ // 5th closes above the highest high of the reaction days /* Generated */ inClose[i] > max(max(inHigh[i-3], inHigh[i-2]), inHigh[i-1]) /* Generated */ ) /* Generated */ outInteger[outIdx++] = 100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ BodyPeriodTotal[4] += TA_CANDLERANGE( TA_BodyLong, i-4 ) - TA_CANDLERANGE( TA_BodyLong, BodyLongTrailingIdx-4 ); /* Generated */ for (totIdx = 3; totIdx >= 1; --totIdx) /* Generated */ BodyPeriodTotal[totIdx] += TA_CANDLERANGE( TA_BodyShort, i-totIdx ) /* Generated */ - TA_CANDLERANGE( TA_BodyShort, BodyShortTrailingIdx-totIdx ); /* Generated */ i++; /* Generated */ BodyShortTrailingIdx++; /* Generated */ BodyLongTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ *outNbElement = outIdx; /* Generated */ *outBegIdx = startIdx; /* Generated */ return TA_SUCCESS; /* Generated */ }
/* Generated */ TA_RetCode TA_S_CDLLADDERBOTTOM( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inOpen[], /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ int outInteger[] ) /* Generated */ #endif /* Generated */ { /* Generated */ double ShadowVeryShortPeriodTotal; /* Generated */ int i, outIdx, ShadowVeryShortTrailingIdx, lookbackTotal; /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ if( startIdx < 0 ) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex); /* Generated */ if( (endIdx < 0) || (endIdx < startIdx)) /* Generated */ return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex); /* Generated */ #if !defined(_JAVA) /* Generated */ if(!inOpen||!inHigh||!inLow||!inClose) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outInteger ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(CDLLADDERBOTTOM)(); /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ } /* Generated */ ShadowVeryShortPeriodTotal = 0; /* Generated */ ShadowVeryShortTrailingIdx = startIdx - TA_CANDLEAVGPERIOD(ShadowVeryShort); /* Generated */ i = ShadowVeryShortTrailingIdx; /* Generated */ while( i < startIdx ) { /* Generated */ ShadowVeryShortPeriodTotal += TA_CANDLERANGE( ShadowVeryShort, i-1 ); /* Generated */ i++; /* Generated */ } /* Generated */ i = startIdx; /* Generated */ outIdx = 0; /* Generated */ do /* Generated */ { /* Generated */ #ifdef TA_LIB_PRO /* Generated */ #else /* Generated */ if( /* Generated */ TA_CANDLECOLOR(i-4) == -1 && TA_CANDLECOLOR(i-3) == -1 && TA_CANDLECOLOR(i-2) == -1 && // 3 black candlesticks /* Generated */ inOpen[i-4] > inOpen[i-3] && inOpen[i-3] > inOpen[i-2] && // with consecutively lower opens /* Generated */ inClose[i-4] > inClose[i-3] && inClose[i-3] > inClose[i-2] && // and closes /* Generated */ TA_CANDLECOLOR(i-1) == -1 && // 4th: black with an upper shadow /* Generated */ TA_UPPERSHADOW(i-1) > TA_CANDLEAVERAGE( ShadowVeryShort, ShadowVeryShortPeriodTotal, i-1 ) && /* Generated */ TA_CANDLECOLOR(i) == 1 && // 5th: white /* Generated */ inOpen[i] > inOpen[i-1] && // that opens above prior candle's body /* Generated */ inClose[i] > inHigh[i-1] // and closes above prior candle's high /* Generated */ ) /* Generated */ outInteger[outIdx++] = 100; /* Generated */ else /* Generated */ outInteger[outIdx++] = 0; /* Generated */ #endif /* Generated */ ShadowVeryShortPeriodTotal += TA_CANDLERANGE( ShadowVeryShort, i-1 ) /* Generated */ - TA_CANDLERANGE( ShadowVeryShort, ShadowVeryShortTrailingIdx-1 ); /* Generated */ i++; /* Generated */ ShadowVeryShortTrailingIdx++; /* Generated */ } while( i <= endIdx ); /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }