int CHLC::GetSignal( int nIndex, UINT * pnCode ) { if( pnCode ) *pnCode = ITSC_NOTHING; int nMaxDays = m_nDays + m_nMADays; double dLiminalLow = 0, dLiminalHigh = 0; if( !IntensityPrepare( nIndex, pnCode, nMaxDays, ITS_GETMINMAXDAYRANGE*3, &dLiminalLow, &dLiminalHigh, 0.4, 0.6 ) ) return ITS_NOTHING; double dHLC; if( !Calculate( &dHLC, nIndex, FALSE ) ) return ITS_NOTHING; int nSignal = GetForkSignal( nIndex, m_itsGoldenFork, m_itsDeadFork, pnCode ); if( nSignal == m_itsGoldenFork ) { // 低位金叉 if( pnCode ) *pnCode = ITSC_GOLDENFORK; return m_itsGoldenFork; } if( nSignal == m_itsDeadFork ) { // 高位死叉 if( pnCode ) *pnCode = ITSC_DEADFORK; return m_itsDeadFork; } return ITS_NOTHING; }
int CMA::GetSignal( int nIndex, UINT * pnCode ) { // 金叉或者死叉 int nSignal = GetForkSignal( nIndex, m_adwMADays, m_itsGoldenFork, m_itsDeadFork, pnCode ); if( ITS_ISBUY(nSignal) || ITS_ISSELL(nSignal) ) return nSignal; // 趋势 return GetTrendIntensity( nIndex, m_adwMADays, m_itsLong, m_itsShort, pnCode ); }
int CEMV::GetSignal( int nIndex, UINT * pnCode ) { if( pnCode ) *pnCode = ITSC_NOTHING; int nMaxDays = m_nDays+m_nMADays; double dLiminalLow = 0, dLiminalHigh = 0; if( !IntensityPrepare( nIndex, pnCode, nMaxDays, ITS_GETMINMAXDAYRANGE, &dLiminalLow, &dLiminalHigh, 0.5, 0.5 ) ) return ITS_NOTHING; double dEMV; if( !Calculate( &dEMV, nIndex, FALSE ) ) return ITS_NOTHING; int nSignal = GetForkSignal( nIndex, m_itsGoldenFork, m_itsDeadFork, pnCode ); if( dEMV < dLiminalLow && nSignal == m_itsGoldenFork ) { // 低位金叉 if( pnCode ) *pnCode = ITSC_GOLDENFORK; return m_itsGoldenFork; } if( dEMV > dLiminalHigh && nSignal == m_itsDeadFork ) { // 高位死叉 if( pnCode ) *pnCode = ITSC_DEADFORK; return m_itsDeadFork; } return ITS_NOTHING; /* FROM BOOK */ /* if( pnCode ) *pnCode = ITSC_NOTHING; double dValue; if( !Calculate( &dValue, nIndex, FALSE ) ) return ITS_NOTHING; if( dValue > 0 ) { if( pnCode ) *pnCode = ITSC_LONG; return m_itsLong; } if( dValue < 0 ) { if( pnCode ) *pnCode = ITSC_SHORT; return m_itsShort; } return ITS_NOTHING; */ }
int CPVI::GetSignal( int nIndex, UINT * pnCode ) { PrepareCache( 0, -1, FALSE ); // 金叉死叉 return GetForkSignal( nIndex, m_itsGoldenFork, m_itsDeadFork, pnCode ); }