/* Generated */ TA_LIB_API TA_RetCode TA_APO_State( struct TA_APO_State* _state, /* Generated */ const double inReal, /* Generated */ double *outReal ) /* Generated */ #endif /**** END GENCODE SECTION 7 - DO NOT DELETE THIS LINE ****/ { /* insert local variable here */ #define TA_APO_SUPPRESS_EXIT_ON_NOT_ENOUGH_DATA double fastMA, slowMA; int res1, res2; /**** START GENCODE SECTION 8 - DO NOT DELETE THIS LINE ****/ /* Generated */ /* Generated */ #ifndef TA_FUNC_NO_RANGE_CHECK /* Generated */ /* Generated */ if (_state == NULL) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #if !defined(_JAVA) /* Generated */ /* Generated */ #endif /* !defined(_JAVA)*/ /* Generated */ size_t _cur_idx = STATE.mem_index++; /* Generated */ if (MEM_SIZE > 0) _cur_idx %= MEM_SIZE; /* Generated */ UNUSED_VARIABLE(_cur_idx); // in case PUSH\POP methods won't be used /* Generated */ #ifndef TA_APO_SUPPRESS_EXIT_ON_NOT_ENOUGH_DATA /* Generated */ if (NEED_MORE_DATA) { /* Generated */ PUSH_TO_MEM(inReal,inReal); /* Generated */ return ENUM_VALUE(RetCode,TA_NEED_MORE_DATA,NeedMoreData); } /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outReal ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ /* Generated */ #endif /* !defined(_JAVA) */ /* Generated */ #endif /* TA_FUNC_NO_RANGE_CHECK */ /* Generated */ /**** END GENCODE SECTION 8 - DO NOT DELETE THIS LINE ****/ /* insert state based TA dunc code here. */ res1 = FUNCTION_CALL_STATE(MA)((struct TA_MA_State*) STATE.fastMAState, inReal, &fastMA); res2 = FUNCTION_CALL_STATE(MA)((struct TA_MA_State*) STATE.slowMAState, inReal, &slowMA); if (res1|res2) return (res1|res2); if (NEED_MORE_DATA) return ENUM_VALUE(RetCode,TA_NEED_MORE_DATA,NeedMoreData); if (STATE.doPercentageOutput != 0) { if( !TA_IS_ZERO(slowMA) ) VALUE_HANDLE_DEREF(outReal) = ((fastMA-slowMA)/slowMA)*100.0; else VALUE_HANDLE_DEREF(outReal) = 0.0; } else VALUE_HANDLE_DEREF(outReal) = fastMA - slowMA; return ENUM_VALUE(RetCode,TA_SUCCESS,Success); }
/* Generated */ TA_RetCode TA_PREFIX(INT_EMA)( int startIdx, /* Generated */ int endIdx, /* Generated */ const INPUT_TYPE *inReal, /* Generated */ int optInTimePeriod, /* Generated */ double optInK_1, /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ double *outReal ) /* Generated */ #endif /* Generated */ { /* Generated */ double tempReal, prevMA; /* Generated */ int i, today, outIdx, lookbackTotal; /* Generated */ lookbackTotal = LOOKBACK_CALL(EMA)( optInTimePeriod ); /* 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 */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ if( TA_GLOBALS_COMPATIBILITY == ENUM_VALUE(Compatibility,TA_COMPATIBILITY_DEFAULT,Default) ) /* Generated */ { /* Generated */ today = startIdx-lookbackTotal; /* Generated */ i = optInTimePeriod; /* Generated */ tempReal = 0.0; /* Generated */ while( i-- > 0 ) /* Generated */ tempReal += inReal[today++]; /* Generated */ prevMA = tempReal / optInTimePeriod; /* Generated */ } /* Generated */ else /* Generated */ { /* Generated */ prevMA = inReal[0]; /* Generated */ today = 1; /* Generated */ } /* Generated */ while( today <= startIdx ) /* Generated */ prevMA = ((inReal[today++]-prevMA)*optInK_1) + prevMA; /* Generated */ outReal[0] = prevMA; /* Generated */ outIdx = 1; /* Generated */ while( today <= endIdx ) /* Generated */ { /* Generated */ prevMA = ((inReal[today++]-prevMA)*optInK_1) + prevMA; /* Generated */ outReal[outIdx++] = prevMA; /* Generated */ } /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }
/* Generated */ TA_RetCode TA_S_DIV( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inReal0[], /* Generated */ const float inReal1[], /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ double outReal[] ) /* Generated */ #endif /* Generated */ { /* Generated */ int outIdx; /* Generated */ #ifndef TA_LIB_PRO /* Generated */ int i; /* Generated */ #endif /* 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( !inReal0 ) return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ if( !inReal1 ) return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outReal ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ #ifdef TA_LIB_PRO /* Generated */ #else /* Generated */ for( i=startIdx, outIdx=0; i <= endIdx; i++, outIdx++ ) /* Generated */ { /* Generated */ outReal[outIdx] = inReal0[i]/inReal1[i]; /* Generated */ } /* 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_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_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_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_PREFIX(INT_PO)( int startIdx, /* Generated */ int endIdx, /* Generated */ const INPUT_TYPE *inReal, /* Generated */ int optInFastPeriod, /* Generated */ int optInSlowPeriod, /* Generated */ TA_MAType optInMethod_2, /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ double *outReal, /* Generated */ double *tempBuffer, /* Generated */ int doPercentageOutput ) /* Generated */ #endif /* Generated */ { /* Generated */ ENUM_DECLARATION(RetCode) retCode; /* Generated */ double tempReal; /* Generated */ int tempInteger; /* Generated */ VALUE_HANDLE_INT(outBegIdx1); /* Generated */ VALUE_HANDLE_INT(outNbElement1); /* Generated */ VALUE_HANDLE_INT(outBegIdx2); /* Generated */ VALUE_HANDLE_INT(outNbElement2); /* Generated */ int i, j; /* Generated */ if( optInSlowPeriod < optInFastPeriod ) /* Generated */ { /* Generated */ tempInteger = optInSlowPeriod; /* Generated */ optInSlowPeriod = optInFastPeriod; /* Generated */ optInFastPeriod = tempInteger; /* Generated */ } /* Generated */ retCode = FUNCTION_CALL(MA)( startIdx, endIdx, /* Generated */ inReal, /* Generated */ optInFastPeriod, /* Generated */ optInMethod_2, /* Generated */ VALUE_HANDLE_OUT(outBegIdx2), VALUE_HANDLE_OUT(outNbElement2), /* Generated */ tempBuffer ); /* Generated */ if( retCode == ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) /* Generated */ { /* Generated */ retCode = FUNCTION_CALL(MA)( startIdx, endIdx, /* Generated */ inReal, /* Generated */ optInSlowPeriod, /* Generated */ optInMethod_2, /* Generated */ VALUE_HANDLE_OUT(outBegIdx1), VALUE_HANDLE_OUT(outNbElement1), /* Generated */ outReal ); /* Generated */ if( retCode == ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) /* Generated */ { /* Generated */ tempInteger = VALUE_HANDLE_GET(outBegIdx1) - VALUE_HANDLE_GET(outBegIdx2); /* Generated */ if( doPercentageOutput != 0 ) /* Generated */ { /* Generated */ for( i=0,j=tempInteger; i < VALUE_HANDLE_GET(outNbElement1); i++, j++ ) /* Generated */ { /* Generated */ tempReal = outReal[i]; /* Generated */ if( !TA_IS_ZERO(tempReal) ) /* Generated */ outReal[i] = ((tempBuffer[j]-tempReal)/tempReal)*100.0; /* Generated */ else /* Generated */ outReal[i] = 0.0; /* Generated */ } /* Generated */ } /* Generated */ else /* Generated */ { /* Generated */ for( i=0,j=tempInteger; i < VALUE_HANDLE_GET(outNbElement1); i++, j++ ) /* Generated */ outReal[i] = tempBuffer[j]-outReal[i]; /* Generated */ } /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = VALUE_HANDLE_GET(outBegIdx1); /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = VALUE_HANDLE_GET(outNbElement1); /* Generated */ } /* Generated */ } /* Generated */ if( retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ } /* Generated */ return retCode; /* Generated */ }
/* Generated */ TA_RetCode TA_S_ACCBANDS( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int optInTimePeriod, /* From 2 to 100000 */ /* Generated */ int *outBegIdx, /* Generated */ int *outNBElement, /* Generated */ double outRealUpperBand[], /* Generated */ double outRealMiddleBand[], /* Generated */ double outRealLowerBand[] ) /* Generated */ #endif /* Generated */ { /* Generated */ ENUM_DECLARATION(RetCode) retCode; /* Generated */ ARRAY_REF( tempBuffer1 ); /* Generated */ ARRAY_REF( tempBuffer2 ); /* Generated */ VALUE_HANDLE_INT(outBegIdxDummy); /* Generated */ VALUE_HANDLE_INT(outNbElementDummy); /* Generated */ int i, j, outputSize, bufferSize, lookbackTotal; /* Generated */ double tempReal; /* 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(!inHigh||!inLow||!inClose) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT ) /* Generated */ optInTimePeriod = 20; /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #if !defined(_JAVA) /* Generated */ if( !outRealUpperBand ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ if( !outRealMiddleBand ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ if( !outRealLowerBand ) /* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam); /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = LOOKBACK_CALL(SMA)( optInTimePeriod ); /* 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 */ outputSize = endIdx-startIdx+1; /* Generated */ bufferSize = outputSize+lookbackTotal; /* Generated */ ARRAY_ALLOC(tempBuffer1, bufferSize ); /* Generated */ #if !defined(_JAVA) /* Generated */ if( !tempBuffer1 ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_ALLOC_ERR,AllocErr); /* Generated */ } /* Generated */ #endif /* Generated */ ARRAY_ALLOC(tempBuffer2, bufferSize ); /* Generated */ #if !defined(_JAVA) /* Generated */ if( !tempBuffer2 ) /* Generated */ { /* Generated */ ARRAY_FREE(tempBuffer1); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return ENUM_VALUE(RetCode,TA_ALLOC_ERR,AllocErr); /* Generated */ } /* Generated */ #endif /* Generated */ for(j=0, i=startIdx-lookbackTotal; i<=endIdx; i++, j++) /* Generated */ { /* Generated */ tempReal = inHigh[i]+inLow[i]; /* Generated */ if( !TA_IS_ZERO(tempReal) ) /* Generated */ { /* Generated */ tempReal = 4*(inHigh[i]-inLow[i])/tempReal; /* Generated */ tempBuffer1[j] = inHigh[i]*(1+tempReal); /* Generated */ tempBuffer2[j] = inLow[i]*(1-tempReal); /* Generated */ } /* Generated */ else /* Generated */ { /* Generated */ tempBuffer1[j] = inHigh[i]; /* Generated */ tempBuffer2[j] = inLow[i]; /* Generated */ } /* Generated */ } /* Generated */ retCode = FUNCTION_CALL(SMA)( startIdx, endIdx, inClose, /* Generated */ optInTimePeriod, /* Generated */ VALUE_HANDLE_OUT(outBegIdxDummy), VALUE_HANDLE_OUT(outNbElementDummy), outRealMiddleBand ); /* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || ((int)VALUE_HANDLE_GET(outNbElementDummy) != outputSize) ) /* Generated */ { /* Generated */ ARRAY_FREE( tempBuffer1 ); /* Generated */ ARRAY_FREE( tempBuffer2 ); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return retCode; /* Generated */ } /* Generated */ retCode = FUNCTION_CALL_DOUBLE(SMA)( 0, bufferSize-1, tempBuffer1, /* Generated */ optInTimePeriod, /* Generated */ VALUE_HANDLE_OUT(outBegIdxDummy), VALUE_HANDLE_OUT(outNbElementDummy), /* Generated */ outRealUpperBand ); /* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || ((int)VALUE_HANDLE_GET(outNbElementDummy) != outputSize) ) /* Generated */ { /* Generated */ ARRAY_FREE( tempBuffer1 ); /* Generated */ ARRAY_FREE( tempBuffer2 ); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return retCode; /* Generated */ } /* Generated */ retCode = FUNCTION_CALL_DOUBLE(SMA)( 0, bufferSize-1, tempBuffer2, /* Generated */ optInTimePeriod, /* Generated */ VALUE_HANDLE_OUT(outBegIdxDummy), VALUE_HANDLE_OUT(outNbElementDummy), /* Generated */ outRealLowerBand ); /* Generated */ ARRAY_FREE( tempBuffer1 ); /* Generated */ ARRAY_FREE( tempBuffer2 ); /* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || ((int)VALUE_HANDLE_GET(outNbElementDummy) != outputSize) ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); /* Generated */ return retCode; /* Generated */ } /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ VALUE_HANDLE_DEREF(outNBElement) = outputSize; /* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }
/* Generated */ TA_RetCode TA_S_T3( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inReal[], /* Generated */ int optInTimePeriod, /* From 2 to 100000 */ /* Generated */ double optInVFactor, /* From 0 to 1 */ /* Generated */ int *outBegIdx, /* Generated */ int *outNbElement, /* Generated */ double outReal[] ) /* Generated */ #endif /* Generated */ { /* Generated */ int outIdx, lookbackTotal; /* Generated */ int today, i; /* Generated */ double k, one_minus_k; /* Generated */ double e1, e2, e3, e4, e5, e6; /* Generated */ double c1, c2, c3, c4; /* Generated */ double tempReal; /* 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( !inReal ) return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT ) /* Generated */ optInTimePeriod = 5; /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ if( optInVFactor == TA_REAL_DEFAULT ) /* Generated */ optInVFactor = 7.000000e-1; /* Generated */ else if( (optInVFactor < 0.000000e+0) || (optInVFactor > 1.000000e+0) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( !outReal ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackTotal = 6 * (optInTimePeriod - 1) + TA_GLOBALS_UNSTABLE_PERIOD(TA_FUNC_UNST_T3); /* Generated */ if( startIdx <= lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNbElement); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ return NAMESPACE(TA_RetCode)TA_SUCCESS; /* Generated */ } /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ today = startIdx - lookbackTotal; /* Generated */ k = 2.0/(optInTimePeriod+1.0); /* Generated */ one_minus_k = 1.0-k; /* Generated */ tempReal = inReal[today++]; /* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ tempReal += inReal[today++]; /* Generated */ e1 = tempReal / optInTimePeriod; /* Generated */ tempReal = e1; /* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ tempReal += e1; /* Generated */ } /* Generated */ e2 = tempReal / optInTimePeriod; /* Generated */ tempReal = e2; /* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ e2 = (k*e1)+(one_minus_k*e2); /* Generated */ tempReal += e2; /* Generated */ } /* Generated */ e3 = tempReal / optInTimePeriod; /* Generated */ tempReal = e3; /* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ e2 = (k*e1)+(one_minus_k*e2); /* Generated */ e3 = (k*e2)+(one_minus_k*e3); /* Generated */ tempReal += e3; /* Generated */ } /* Generated */ e4 = tempReal / optInTimePeriod; /* Generated */ tempReal = e4; /* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ e2 = (k*e1)+(one_minus_k*e2); /* Generated */ e3 = (k*e2)+(one_minus_k*e3); /* Generated */ e4 = (k*e3)+(one_minus_k*e4); /* Generated */ tempReal += e4; /* Generated */ } /* Generated */ e5 = tempReal / optInTimePeriod; /* Generated */ tempReal = e5; /* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ e2 = (k*e1)+(one_minus_k*e2); /* Generated */ e3 = (k*e2)+(one_minus_k*e3); /* Generated */ e4 = (k*e3)+(one_minus_k*e4); /* Generated */ e5 = (k*e4)+(one_minus_k*e5); /* Generated */ tempReal += e5; /* Generated */ } /* Generated */ e6 = tempReal / optInTimePeriod; /* Generated */ while( today <= startIdx ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ e2 = (k*e1)+(one_minus_k*e2); /* Generated */ e3 = (k*e2)+(one_minus_k*e3); /* Generated */ e4 = (k*e3)+(one_minus_k*e4); /* Generated */ e5 = (k*e4)+(one_minus_k*e5); /* Generated */ e6 = (k*e5)+(one_minus_k*e6); /* Generated */ } /* Generated */ tempReal = optInVFactor * optInVFactor; /* Generated */ c1 = -(tempReal * optInVFactor); /* Generated */ c2 = 3.0 * (tempReal - c1); /* Generated */ c3 = -6.0 * tempReal - 3.0 * (optInVFactor-c1); /* Generated */ c4 = 1.0 + 3.0 * optInVFactor - c1 + 3.0 * tempReal; /* Generated */ outIdx = 0; /* Generated */ outReal[outIdx++] = c1*e6+c2*e5+c3*e4+c4*e3; /* Generated */ while( today <= endIdx ) /* Generated */ { /* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1); /* Generated */ e2 = (k*e1)+(one_minus_k*e2); /* Generated */ e3 = (k*e2)+(one_minus_k*e3); /* Generated */ e4 = (k*e3)+(one_minus_k*e4); /* Generated */ e5 = (k*e4)+(one_minus_k*e5); /* Generated */ e6 = (k*e5)+(one_minus_k*e6); /* Generated */ outReal[outIdx++] = c1*e6+c2*e5+c3*e4+c4*e3; /* Generated */ } /* Generated */ VALUE_HANDLE_DEREF(outNbElement) = outIdx; /* Generated */ return NAMESPACE(TA_RetCode)TA_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_STDDEV( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inReal[], /* Generated */ int optInTimePeriod, /* From 2 to 100000 */ /* Generated */ double optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX */ /* Generated */ int *outBegIdx, /* Generated */ int *outNbElement, /* Generated */ double outReal[] ) /* Generated */ #endif /* Generated */ { /* Generated */ int i; /* Generated */ TA_RetCode retCode; /* Generated */ double tempReal; /* 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( !inReal ) return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT ) /* Generated */ optInTimePeriod = 5; /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ if( optInNbDev == TA_REAL_DEFAULT ) /* Generated */ optInNbDev = 1.000000e+0; /* Generated */ else if( (optInNbDev < -3.000000e+37) || (optInNbDev > 3.000000e+37) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( !outReal ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ #endif /* Generated */ retCode = FUNCTION_CALL(INT_VAR)( startIdx, endIdx, /* Generated */ inReal, optInTimePeriod, /* Generated */ outBegIdx, outNbElement, outReal ); /* Generated */ if( retCode != NAMESPACE(TA_RetCode)TA_SUCCESS ) /* Generated */ return retCode; /* Generated */ if( optInNbDev != 1.0 ) /* Generated */ { /* Generated */ for( i=0; i < (int)VALUE_HANDLE_DEREF(outNbElement); i++ ) /* Generated */ { /* Generated */ tempReal = outReal[i]; /* Generated */ if( !TA_IS_ZERO_OR_NEG(tempReal) ) /* Generated */ outReal[i] = sqrt(tempReal) * optInNbDev; /* Generated */ else /* Generated */ outReal[i] = (double)0.0; /* Generated */ } /* Generated */ } /* Generated */ else /* Generated */ { /* Generated */ for( i=0; i < (int)VALUE_HANDLE_DEREF(outNbElement); i++ ) /* Generated */ { /* Generated */ tempReal = outReal[i]; /* Generated */ if( !TA_IS_ZERO_OR_NEG(tempReal) ) /* Generated */ outReal[i] = sqrt(tempReal); /* Generated */ else /* Generated */ outReal[i] = (double)0.0; /* Generated */ } /* Generated */ } /* Generated */ return NAMESPACE(TA_RetCode)TA_SUCCESS; /* Generated */ }
/* Generated */ TA_RetCode TA_S_TEMA( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inReal[], /* Generated */ int optInTimePeriod, /* From 2 to 100000 */ /* Generated */ int *outBegIdx, /* Generated */ int *outNbElement, /* Generated */ double outReal[] ) /* Generated */ #endif /* Generated */ { /* Generated */ ARRAY_REF(firstEMA); /* Generated */ ARRAY_REF(secondEMA); /* Generated */ double k; /* Generated */ VALUE_HANDLE_INT(firstEMABegIdx); /* Generated */ VALUE_HANDLE_INT(firstEMANbElement); /* Generated */ VALUE_HANDLE_INT(secondEMABegIdx); /* Generated */ VALUE_HANDLE_INT(secondEMANbElement); /* Generated */ VALUE_HANDLE_INT(thirdEMABegIdx); /* Generated */ VALUE_HANDLE_INT(thirdEMANbElement); /* Generated */ int tempInt, outIdx, lookbackTotal, lookbackEMA; /* Generated */ int firstEMAIdx, secondEMAIdx; /* Generated */ TA_RetCode retCode; /* 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( !inReal ) return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ if( (int)optInTimePeriod == TA_INTEGER_DEFAULT ) /* Generated */ optInTimePeriod = 30; /* Generated */ else if( ((int)optInTimePeriod < 2) || ((int)optInTimePeriod > 100000) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( !outReal ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ #endif /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNbElement); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ lookbackEMA = LOOKBACK_CALL(EMA)( optInTimePeriod ); /* Generated */ lookbackTotal = lookbackEMA * 3; /* Generated */ if( startIdx < lookbackTotal ) /* Generated */ startIdx = lookbackTotal; /* Generated */ if( startIdx > endIdx ) /* Generated */ return NAMESPACE(TA_RetCode)TA_SUCCESS; /* Generated */ tempInt = lookbackTotal+(endIdx-startIdx)+1; /* Generated */ ARRAY_ALLOC(firstEMA,tempInt); /* Generated */ #if !defined( _JAVA ) /* Generated */ if( !firstEMA ) /* Generated */ return NAMESPACE(TA_RetCode)TA_ALLOC_ERR; /* Generated */ #endif /* Generated */ k = PER_TO_K(optInTimePeriod); /* Generated */ retCode = FUNCTION_CALL(INT_EMA)( startIdx-(lookbackEMA*2), endIdx, inReal, /* Generated */ optInTimePeriod, k, /* Generated */ VALUE_HANDLE_OUT(firstEMABegIdx), VALUE_HANDLE_OUT(firstEMANbElement), /* Generated */ firstEMA ); /* Generated */ if( (retCode != NAMESPACE(TA_RetCode)TA_SUCCESS ) || (VALUE_HANDLE_GET(firstEMANbElement) == 0) ) /* Generated */ { /* Generated */ ARRAY_FREE( firstEMA ); /* Generated */ return retCode; /* Generated */ } /* Generated */ ARRAY_ALLOC(secondEMA,VALUE_HANDLE_GET(firstEMANbElement)); /* Generated */ #if !defined( _JAVA ) /* Generated */ if( !secondEMA ) /* Generated */ { /* Generated */ ARRAY_FREE( firstEMA ); /* Generated */ return NAMESPACE(TA_RetCode)TA_ALLOC_ERR; /* Generated */ } /* Generated */ #endif /* Generated */ retCode = FUNCTION_CALL_DOUBLE(INT_EMA)( 0, VALUE_HANDLE_GET(firstEMANbElement)-1, firstEMA, /* Generated */ optInTimePeriod, k, /* Generated */ VALUE_HANDLE_OUT(secondEMABegIdx), VALUE_HANDLE_OUT(secondEMANbElement), /* Generated */ secondEMA ); /* Generated */ if( (retCode != NAMESPACE(TA_RetCode)TA_SUCCESS ) || (VALUE_HANDLE_GET(secondEMANbElement) == 0) ) /* Generated */ { /* Generated */ ARRAY_FREE( firstEMA ); /* Generated */ ARRAY_FREE( secondEMA ); /* Generated */ return retCode; /* Generated */ } /* Generated */ retCode = FUNCTION_CALL_DOUBLE(INT_EMA)( 0, VALUE_HANDLE_GET(secondEMANbElement)-1, secondEMA, /* Generated */ optInTimePeriod, k, /* Generated */ VALUE_HANDLE_OUT(thirdEMABegIdx), VALUE_HANDLE_OUT(thirdEMANbElement), /* Generated */ outReal ); /* Generated */ if( (retCode != NAMESPACE(TA_RetCode)TA_SUCCESS ) || (VALUE_HANDLE_GET(thirdEMANbElement) == 0) ) /* Generated */ { /* Generated */ ARRAY_FREE( firstEMA ); /* Generated */ ARRAY_FREE( secondEMA ); /* Generated */ return retCode; /* Generated */ } /* Generated */ firstEMAIdx = VALUE_HANDLE_GET(thirdEMABegIdx) + VALUE_HANDLE_GET(secondEMABegIdx); /* Generated */ secondEMAIdx = VALUE_HANDLE_GET(thirdEMABegIdx); /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = firstEMAIdx + VALUE_HANDLE_GET(firstEMABegIdx); /* Generated */ outIdx = 0; /* Generated */ while( outIdx < VALUE_HANDLE_GET(thirdEMANbElement) ) /* Generated */ { /* Generated */ outReal[outIdx] += (3.0*firstEMA[firstEMAIdx++]) - (3.0*secondEMA[secondEMAIdx++]); /* Generated */ outIdx++; /* Generated */ } /* Generated */ ARRAY_FREE( firstEMA ); /* Generated */ ARRAY_FREE( secondEMA ); /* Generated */ VALUE_HANDLE_DEREF(outNbElement) = outIdx; /* Generated */ return NAMESPACE(TA_RetCode)TA_SUCCESS; /* Generated */ }
/* Generated */ TA_RetCode TA_S_STOCH( int startIdx, /* Generated */ int endIdx, /* Generated */ const float inHigh[], /* Generated */ const float inLow[], /* Generated */ const float inClose[], /* Generated */ int optInFastK_Period, /* From 1 to 100000 */ /* Generated */ int optInSlowK_Period, /* From 1 to 100000 */ /* Generated */ TA_MAType optInSlowK_MAType, /* Generated */ int optInSlowD_Period, /* From 1 to 100000 */ /* Generated */ TA_MAType optInSlowD_MAType, /* Generated */ int *outBegIdx, /* Generated */ int *outNbElement, /* Generated */ double outSlowK[], /* Generated */ double outSlowD[] ) /* Generated */ #endif /* Generated */ { /* Generated */ TA_RetCode retCode; /* Generated */ double lowest, highest, tmp, diff; /* Generated */ ARRAY_REF( tempBuffer ); /* Generated */ int outIdx, lowestIdx, highestIdx; /* Generated */ int lookbackTotal, lookbackK, lookbackKSlow, lookbackDSlow; /* Generated */ int trailingIdx, today, i; /* Generated */ #if !defined( _MANAGED ) && !defined(USE_SINGLE_PRECISION_INPUT) &&!defined(_JAVA) /* Generated */ int bufferIsAllocated; /* Generated */ #endif /* 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(!inHigh||!inLow||!inClose) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ if( (int)optInFastK_Period == TA_INTEGER_DEFAULT ) /* Generated */ optInFastK_Period = 5; /* Generated */ else if( ((int)optInFastK_Period < 1) || ((int)optInFastK_Period > 100000) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ if( (int)optInSlowK_Period == TA_INTEGER_DEFAULT ) /* Generated */ optInSlowK_Period = 3; /* Generated */ else if( ((int)optInSlowK_Period < 1) || ((int)optInSlowK_Period > 100000) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( (int)optInSlowK_MAType == TA_INTEGER_DEFAULT ) /* Generated */ optInSlowK_MAType = 0; /* Generated */ else if( ((int)optInSlowK_MAType < 0) || ((int)optInSlowK_MAType > 8) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ if( (int)optInSlowD_Period == TA_INTEGER_DEFAULT ) /* Generated */ optInSlowD_Period = 3; /* Generated */ else if( ((int)optInSlowD_Period < 1) || ((int)optInSlowD_Period > 100000) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( (int)optInSlowD_MAType == TA_INTEGER_DEFAULT ) /* Generated */ optInSlowD_MAType = 0; /* Generated */ else if( ((int)optInSlowD_MAType < 0) || ((int)optInSlowD_MAType > 8) ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ #if !defined(_MANAGED) && !defined(_JAVA) /* Generated */ if( !outSlowK ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ if( !outSlowD ) /* Generated */ return NAMESPACE(TA_RetCode)TA_BAD_PARAM; /* Generated */ #endif /* Generated */ #endif /* Generated */ lookbackK = optInFastK_Period-1; /* Generated */ lookbackKSlow = LOOKBACK_CALL(MA)( optInSlowK_Period, optInSlowK_MAType ); /* Generated */ lookbackDSlow = LOOKBACK_CALL(MA)( optInSlowD_Period, optInSlowD_MAType ); /* Generated */ lookbackTotal = lookbackK + lookbackDSlow + lookbackKSlow; /* 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 */ outIdx = 0; /* Generated */ trailingIdx = startIdx-lookbackTotal; /* Generated */ today = trailingIdx+lookbackK; /* Generated */ lowestIdx = highestIdx = -1; /* Generated */ diff = highest = lowest = 0.0; /* Generated */ #if !defined( _MANAGED ) && !defined(USE_SINGLE_PRECISION_INPUT) && !defined( _JAVA ) /* Generated */ bufferIsAllocated = 0; /* Generated */ #endif /* Generated */ #if defined(USE_SINGLE_PRECISION_INPUT) /* Generated */ ARRAY_ALLOC( tempBuffer, endIdx-today+1 ); /* Generated */ #else /* Generated */ if( (outSlowK == inHigh) || /* Generated */ (outSlowK == inLow) || /* Generated */ (outSlowK == inClose) ) /* Generated */ { /* Generated */ tempBuffer = outSlowK; /* Generated */ } /* Generated */ else if( (outSlowD == inHigh) || /* Generated */ (outSlowD == inLow) || /* Generated */ (outSlowD == inClose) ) /* Generated */ { /* Generated */ tempBuffer = outSlowD; /* Generated */ } /* Generated */ else /* Generated */ { /* Generated */ #if !defined( _MANAGED ) && !defined(_JAVA) /* Generated */ bufferIsAllocated = 1; /* Generated */ #endif /* Generated */ ARRAY_ALLOC( tempBuffer, endIdx-today+1 ); /* Generated */ } /* Generated */ #endif /* Generated */ while( today <= endIdx ) /* Generated */ { /* Generated */ tmp = inLow[today]; /* Generated */ if( lowestIdx < trailingIdx ) /* Generated */ { /* Generated */ lowestIdx = trailingIdx; /* Generated */ lowest = inLow[lowestIdx]; /* Generated */ i = lowestIdx; /* Generated */ while( ++i<=today ) /* Generated */ { /* Generated */ tmp = inLow[i]; /* Generated */ if( tmp < lowest ) /* Generated */ { /* Generated */ lowestIdx = i; /* Generated */ lowest = tmp; /* Generated */ } /* Generated */ } /* Generated */ diff = (highest - lowest)/100.0; /* Generated */ } /* Generated */ else if( tmp <= lowest ) /* Generated */ { /* Generated */ lowestIdx = today; /* Generated */ lowest = tmp; /* Generated */ diff = (highest - lowest)/100.0; /* Generated */ } /* Generated */ tmp = inHigh[today]; /* Generated */ if( highestIdx < trailingIdx ) /* Generated */ { /* Generated */ highestIdx = trailingIdx; /* Generated */ highest = inHigh[highestIdx]; /* Generated */ i = highestIdx; /* Generated */ while( ++i<=today ) /* Generated */ { /* Generated */ tmp = inHigh[i]; /* Generated */ if( tmp > highest ) /* Generated */ { /* Generated */ highestIdx = i; /* Generated */ highest = tmp; /* Generated */ } /* Generated */ } /* Generated */ diff = (highest - lowest)/100.0; /* Generated */ } /* Generated */ else if( tmp >= highest ) /* Generated */ { /* Generated */ highestIdx = today; /* Generated */ highest = tmp; /* Generated */ diff = (highest - lowest)/100.0; /* Generated */ } /* Generated */ if( diff != 0.0 ) /* Generated */ tempBuffer[outIdx++] = (inClose[today]-lowest)/diff; /* Generated */ else /* Generated */ tempBuffer[outIdx++] = 0.0; /* Generated */ trailingIdx++; /* Generated */ today++; /* Generated */ } /* Generated */ retCode = FUNCTION_CALL_DOUBLE(MA)( 0, outIdx-1, /* Generated */ tempBuffer, optInSlowK_Period, /* Generated */ optInSlowK_MAType, /* Generated */ outBegIdx, outNbElement, tempBuffer ); /* Generated */ if( (retCode != NAMESPACE(TA_RetCode)TA_SUCCESS ) || ((int)VALUE_HANDLE_DEREF(outNbElement) == 0) ) /* Generated */ { /* Generated */ #if defined(USE_SINGLE_PRECISION_INPUT) /* Generated */ ARRAY_FREE( tempBuffer ); /* Generated */ #else /* Generated */ ARRAY_FREE_COND( bufferIsAllocated, tempBuffer ); /* Generated */ #endif /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNbElement); /* Generated */ return retCode; /* Generated */ } /* Generated */ retCode = FUNCTION_CALL_DOUBLE(MA)( 0, (int)VALUE_HANDLE_DEREF(outNbElement)-1, /* Generated */ tempBuffer, optInSlowD_Period, /* Generated */ optInSlowD_MAType, /* Generated */ outBegIdx, outNbElement, outSlowD ); /* Generated */ ARRAY_MEMMOVE( outSlowK, 0, tempBuffer,lookbackDSlow,(int)VALUE_HANDLE_DEREF(outNbElement)); /* Generated */ #if defined(USE_SINGLE_PRECISION_INPUT) /* Generated */ ARRAY_FREE( tempBuffer ); /* Generated */ #else /* Generated */ ARRAY_FREE_COND( bufferIsAllocated, tempBuffer ); /* Generated */ #endif /* Generated */ if( retCode != NAMESPACE(TA_RetCode)TA_SUCCESS ) /* Generated */ { /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); /* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNbElement); /* Generated */ return retCode; /* Generated */ } /* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx; /* Generated */ return NAMESPACE(TA_RetCode)TA_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_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 */ }