         static int StochLookback( int           optInFastK_Period  /* From 1 to 100000 */, int           optInSlowK_Period  /* From 1 to 100000 */, int           optInSlowK_MAType, int           optInSlowD_Period  /* From 1 to 100000 */, int           optInSlowD_MAType );

#if defined( _MANAGED ) && defined( USE_SUBARRAY )
         static enum class RetCode Stoch( int    startIdx,
                                          int    endIdx,
                                          SubArray<double>^ inHigh,
                                          SubArray<double>^ inLow,
                                          SubArray<double>^ inClose,
                                          int optInFastK_Period,
                                          int optInSlowK_Period,
                                          int optInSlowK_MAType,
                                          int optInSlowD_Period,
                                          int optInSlowD_MAType,
                                          [Out]int%    outBegIdx,
                                          [Out]int%    outNBElement,
                                          SubArray<double>^  outSlowK,
                                          SubArray<double>^  outSlowD );

         static enum class RetCode Stoch( int    startIdx,
                                          int    endIdx,
                                          SubArray<float>^ inHigh,
                                          SubArray<float>^ inLow,
                                          SubArray<float>^ inClose,
                                          int optInFastK_Period,
                                          int optInSlowK_Period,
                                          int optInSlowK_MAType,
                                          int optInSlowD_Period,
                                          int optInSlowD_MAType,
                                          [Out]int%    outBegIdx,
                                          [Out]int%    outNBElement,
                                          SubArray<double>^  outSlowK,
                                          SubArray<double>^  outSlowD );

         static enum class RetCode Stoch( int    startIdx,
                                          int    endIdx,
                                          cli::array<double>^ inHigh,
                                          cli::array<double>^ inLow,
                                          cli::array<double>^ inClose,
                                          int optInFastK_Period,
                                          int optInSlowK_Period,
                                          int optInSlowK_MAType,
                                          int optInSlowD_Period,
                                          int optInSlowD_MAType,
                                          [Out]int%    outBegIdx,
                                          [Out]int%    outNBElement,
                                          cli::array<double>^  outSlowK,
                                          cli::array<double>^  outSlowD )
         { return Stoch( startIdx, endIdx,
                         gcnew SubArrayFrom1D<double>(inHigh,0),
                         gcnew SubArrayFrom1D<double>(inLow,0),
                         gcnew SubArrayFrom1D<double>(inClose,0),
                         optInFastK_Period,
                         optInSlowK_Period,
                         optInSlowK_MAType,
                         optInSlowD_Period,
                         optInSlowD_MAType,
             outBegIdx,
             outNBElement,
               gcnew SubArrayFrom1D<double>(outSlowK,0),
               gcnew SubArrayFrom1D<double>(outSlowD,0) );
         }
         static enum class RetCode Stoch( int    startIdx,
                                          int    endIdx,
                                          cli::array<float>^ inHigh,
                                          cli::array<float>^ inLow,
                                          cli::array<float>^ inClose,
                                          int optInFastK_Period,
                                          int optInSlowK_Period,
                                          int optInSlowK_MAType,
                                          int optInSlowD_Period,
                                          int optInSlowD_MAType,
                                          [Out]int%    outBegIdx,
                                          [Out]int%    outNBElement,
                                          cli::array<double>^  outSlowK,
                                          cli::array<double>^  outSlowD )
         { return Stoch( startIdx, endIdx,
                         gcnew SubArrayFrom1D<float>(inHigh,0),
                         gcnew SubArrayFrom1D<float>(inLow,0),
                         gcnew SubArrayFrom1D<float>(inClose,0),
                         optInFastK_Period,
                         optInSlowK_Period,
                         optInSlowK_MAType,
                         optInSlowD_Period,
                         optInSlowD_MAType,
             outBegIdx,
             outNBElement,
               gcnew SubArrayFrom1D<double>(outSlowK,0),
               gcnew SubArrayFrom1D<double>(outSlowD,0) );
         }
#elif defined( _MANAGED )
         static enum class RetCode Stoch( int    startIdx,
                                          int    endIdx,
                                          cli::array<double>^ inHigh,
                                          cli::array<double>^ inLow,
                                          cli::array<double>^ inClose,
                                          int optInFastK_Period,
                                          int optInSlowK_Period,
                                          int optInSlowK_MAType,
                                          int optInSlowD_Period,
                                          int optInSlowD_MAType,
                                          [Out]int%    outBegIdx,
                                          [Out]int%    outNBElement,
                                          cli::array<double>^  outSlowK,
                                          cli::array<double>^  outSlowD );
         static enum class RetCode Stoch( int    startIdx,
                                          int    endIdx,
                                          cli::array<float>^ inHigh,
                                          cli::array<float>^ inLow,
                                          cli::array<float>^ inClose,
                                          int optInFastK_Period,
                                          int optInSlowK_Period,
                                          int optInSlowK_MAType,
                                          int optInSlowD_Period,
                                          int optInSlowD_MAType,
                                          [Out]int%    outBegIdx,
                                          [Out]int%    outNBElement,
                                          cli::array<double>^  outSlowK,
                                          cli::array<double>^  outSlowD );
#endif

#if defined( _MANAGED ) && defined( USE_SUBARRAY )
         static enum class RetCode StochLogic( int    startIdx,
                                               int    endIdx,
                                               SubArray<double>^ inHigh,
                                               SubArray<double>^ inLow,
                                               SubArray<double>^ inClose,
                                               int optInFastK_Period,
                                               int optInSlowK_Period,
                                               int optInSlowK_MAType,
                                               int optInSlowD_Period,
                                               int optInSlowD_MAType,
                                               [Out]int%    outBegIdx,
                                               [Out]int%    outNBElement,
                                               SubArray<double>^  outSlowK,
                                               SubArray<double>^  outSlowD );

         static enum class RetCode StochLogic( int    startIdx,
                                               int    endIdx,
                                               SubArray<float>^ inHigh,
                                               SubArray<float>^ inLow,
                                               SubArray<float>^ inClose,
                                               int optInFastK_Period,
                                               int optInSlowK_Period,
                                               int optInSlowK_MAType,
                                               int optInSlowD_Period,
                                               int optInSlowD_MAType,
                                               [Out]int%    outBegIdx,
                                               [Out]int%    outNBElement,
                                               SubArray<double>^  outSlowK,
                                               SubArray<double>^  outSlowD );

         static enum class RetCode StochLogic( int    startIdx,
                                               int    endIdx,
                                               cli::array<double>^ inHigh,
                                               cli::array<double>^ inLow,
                                               cli::array<double>^ inClose,
                                               int optInFastK_Period,
                                               int optInSlowK_Period,
                                               int optInSlowK_MAType,
                                               int optInSlowD_Period,
                                               int optInSlowD_MAType,
                                               [Out]int%    outBegIdx,
                                               [Out]int%    outNBElement,
                                               cli::array<double>^  outSlowK,
                                               cli::array<double>^  outSlowD )
         { return StochLogic( startIdx, endIdx,
                         gcnew SubArrayFrom1D<double>(inHigh,0),
                         gcnew SubArrayFrom1D<double>(inLow,0),
                         gcnew SubArrayFrom1D<double>(inClose,0),
                         optInFastK_Period,
                         optInSlowK_Period,
                         optInSlowK_MAType,
                         optInSlowD_Period,
                         optInSlowD_MAType,
             outBegIdx,
             outNBElement,
               gcnew SubArrayFrom1D<double>(outSlowK,0),
               gcnew SubArrayFrom1D<double>(outSlowD,0) );
         }
         static enum class RetCode StochLogic( int    startIdx,
                                               int    endIdx,
                                               cli::array<float>^ inHigh,
                                               cli::array<float>^ inLow,
                                               cli::array<float>^ inClose,
                                               int optInFastK_Period,
                                               int optInSlowK_Period,
                                               int optInSlowK_MAType,
                                               int optInSlowD_Period,
                                               int optInSlowD_MAType,
                                               [Out]int%    outBegIdx,
                                               [Out]int%    outNBElement,
                                               cli::array<double>^  outSlowK,
                                               cli::array<double>^  outSlowD )
         { return StochLogic( startIdx, endIdx,
                         gcnew SubArrayFrom1D<float>(inHigh,0),
                         gcnew SubArrayFrom1D<float>(inLow,0),
                         gcnew SubArrayFrom1D<float>(inClose,0),
                         optInFastK_Period,
                         optInSlowK_Period,
                         optInSlowK_MAType,
                         optInSlowD_Period,
                         optInSlowD_MAType,
             outBegIdx,
             outNBElement,
               gcnew SubArrayFrom1D<double>(outSlowK,0),
               gcnew SubArrayFrom1D<double>(outSlowD,0) );
         }
#elif defined( _MANAGED )
         static enum class RetCode StochLogic( int    startIdx,
                                               int    endIdx,
                                               cli::array<double>^ inHigh,
                                               cli::array<double>^ inLow,
                                               cli::array<double>^ inClose,
                                               int optInFastK_Period,
                                               int optInSlowK_Period,
                                               int optInSlowK_MAType,
                                               int optInSlowD_Period,
                                               int optInSlowD_MAType,
                                               [Out]int%    outBegIdx,
                                               [Out]int%    outNBElement,
                                               cli::array<double>^  outSlowK,
                                               cli::array<double>^  outSlowD );
         static enum class RetCode StochLogic( int    startIdx,
                                               int    endIdx,
                                               cli::array<float>^ inHigh,
                                               cli::array<float>^ inLow,
                                               cli::array<float>^ inClose,
                                               int optInFastK_Period,
                                               int optInSlowK_Period,
                                               int optInSlowK_MAType,
                                               int optInSlowD_Period,
                                               int optInSlowD_MAType,
                                               [Out]int%    outBegIdx,
                                               [Out]int%    outNBElement,
                                               cli::array<double>^  outSlowK,
                                               cli::array<double>^  outSlowD );
#endif

         #define TA_STOCH Core::Stoch
         #define TA_STOCH_Lookback Core::StochLookback
         #define TA_STOCH_Logic Core::StochLogic
