StkTech.cpp
上传用户:usa_ovo
上传日期:2013-09-16
资源大小:113k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // StkTech.cpp : Defines the entry point for the DLL application.
  2. //
  3. #include "stdafx.h"
  4. #include "StkTech.h"
  5. #include "Stock.h"
  6. #include "TechUser.h"
  7. BOOL APIENTRY DllMain( HANDLE hModule, 
  8.                        DWORD  ul_reason_for_call, 
  9.                        LPVOID lpReserved
  10.  )
  11. {
  12.     switch (ul_reason_for_call)
  13. {
  14. case DLL_PROCESS_ATTACH:
  15. case DLL_THREAD_ATTACH:
  16. case DLL_THREAD_DETACH:
  17. case DLL_PROCESS_DETACH:
  18. break;
  19.     }
  20.     return TRUE;
  21. }
  22. /*
  23.  *  功能: 获得实现的外挂指标总个数
  24.  *  返回值:实现的外挂指标总个数
  25.  */
  26. TECHUSER_API UINT WINAPI GetTechUserCount()
  27. {
  28. return 1;
  29. }
  30. /*
  31.  *  功能: 获得指标信息
  32.  *  nID: 指标标识,介于 0 <= nID < GetTechUserCount()
  33.  *  pInfo: 返回信息
  34.  *  返回值:TRUE成功,FALSE失败
  35.  */
  36. TECHUSER_API BOOL WINAPI GetTechUserInfo( UINT nID, PTECHUSER_INFO pInfo )
  37. {
  38. switch( nID )
  39. {
  40. case 0:
  41. strcpy( pInfo->m_szName, "外挂指标" );
  42. strcpy( pInfo->m_szShortName, "WGZB" );
  43. pInfo->m_nLineCount = 1;
  44. strcpy( pInfo->m_aszLineName[0], "LINE1" );
  45. pInfo->m_bAutoMA = TRUE;
  46. pInfo->m_nMADays = 6;
  47. pInfo->m_itsGoldenFork = ITS_BUY;
  48. pInfo->m_itsDeadFork = ITS_SELL;
  49. return TRUE;
  50. default:;
  51. }
  52. return FALSE;
  53. }
  54. /*
  55.  *  功能: 计算指标值
  56.  *  nID: 指标标识,介于 0 <= nID < GetTechUserCount()
  57.  *  pInfo: 计算数据,参数,并返回计算结果信息
  58.  *  返回值:TRUE成功,FALSE失败
  59.  */
  60. TECHUSER_API BOOL WINAPI Calculate( UINT nID, PCALCULATE_INFO pInfo )
  61. {
  62. CKData * pKData = pInfo->m_pKData;
  63. int nIndex = pInfo->m_nIndex;
  64. switch( nID )
  65. {
  66. case 0:
  67. { // 10日OSC指标
  68. double dCt = pKData->ElementAt(nIndex).m_fClose;
  69. double dMA = 0;
  70. int nCount = 0;
  71. for( int k=nIndex; k>=0; k-- )
  72. {
  73. dMA += pKData->ElementAt(k).m_fClose;
  74. nCount ++;
  75. if( nCount == 10 )
  76. {
  77. dMA = dMA / 10;
  78. if( dMA < 1e-4 )
  79. return FALSE;
  80. pInfo->m_dValue1 = (dCt/dMA);
  81. return TRUE;
  82. }
  83. }
  84. return FALSE;
  85. }
  86. default:;
  87. }
  88. return FALSE;
  89. }
  90. /*
  91.  *  功能: 获得买卖信号
  92.  *  nID: 指标标识,介于 0 <= nID < GetTechUserCount()
  93.  *  pInfo: 计算数据,参数,并返回计算结果信息
  94.  *  返回值:TRUE成功,FALSE失败
  95.  */
  96. TECHUSER_API BOOL WINAPI GetSignal( UINT nID, PCALCULATE_INFO pInfo )
  97. {
  98. switch( nID )
  99. {
  100. case 0:
  101. //if( ... )
  102. // pInfo->m_nSignal = ITS_BUY;
  103. //if( ... )
  104. // pInfo->m_nSignal = ITS_SELL;
  105. pInfo->m_nSignal = ITS_NOTHING;
  106. break;
  107. default:;
  108. }
  109. return TRUE;
  110. }