OBV.C
上传用户:bjghjy
上传日期:2007-01-07
资源大小:379k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. #include <string.h>
  5. #include "resource.h"
  6. #include "global.h"
  7. #include "fx.h"
  8. LPFX Fx;
  9. int CreateObvData(K_DATA *lpKData,int RNum,DATA *Data,PARA *Para)
  10. {     
  11. int i,j;  
  12. OBV_DATA *ObvData;
  13. ObvData=(OBV_DATA*)_fmalloc(sizeof(OBV_DATA)*RNum);
  14. memset(ObvData,0,sizeof(OBV_DATA)*RNum);
  15.     for(j=0;j<RNum;j++)
  16.     {
  17.          if(j==0)
  18.          {
  19.                 ObvData[j].obv=0;
  20.          }
  21.          else
  22.          {
  23.           if(lpKData[j].ss>lpKData[j-1].ss)
  24.           {
  25.           ObvData[j].obv=ObvData[j-1].obv+
  26.           lpKData[j].cj*lpKData[j].ss/100000,00;                     
  27.           }
  28.           if(lpKData[j].ss<lpKData[j-1].ss)
  29.           {
  30.           ObvData[j].obv=ObvData[j-1].obv-
  31.           lpKData[j].cj*lpKData[j].ss/100000,00;
  32.                 }
  33.                   
  34.           if(lpKData[j].ss==lpKData[j-1].ss)
  35.           {
  36.           ObvData[j].obv=ObvData[j-1].obv;         
  37.                 }
  38.                   
  39.                 if(j==1)
  40.                 {
  41.                  Para->price[1]=ObvData[j].obv;
  42.                  Para->price[0]=ObvData[j].obv;
  43.                 }
  44.                 else
  45.                 {
  46.                   if(Para->price[1]>ObvData[j].obv)
  47.                   Para->price[1]=ObvData[j].obv;
  48.                   if(Para->price[0]<ObvData[j].obv)
  49.                   Para->price[0]=ObvData[j].obv;
  50.                 }
  51.          }
  52.     }
  53.     for(j=0;j<10;j++)
  54.     {
  55.         if(Data->v==NULL) 
  56.          break;
  57.      if(Data->v[j]!=NULL)
  58.      {
  59.      _ffree(Data->v[j]);
  60.      Data->v[j]=NULL;
  61.      }
  62.     }    
  63.     Data->v==NULL;     
  64.     Data->num =Para->dnum; 
  65.     Data->no =Para->no;
  66.     strcpy(Data->gpdm,Fx->gpdm);
  67.     Data->type =Fx->type;
  68.     Data->range =Fx->range;
  69.     Data->size =RNum;
  70.     for(j=0;j<Data->num;j++)
  71.      Data->v[j]=(double *)_fmalloc(sizeof(double)*RNum);
  72.     for(i=0;i<Data->num;i++)
  73.     {
  74.      for(j=0;j<RNum&&i==0;j++) 
  75.      Data->v[i][j]=ObvData[j].obv;
  76.      Data->method[i]=CURVE_METHOD;
  77.     }
  78.     Para->feature |=DW_ALL;
  79.     _ffree(ObvData);
  80. return TRUE;
  81. }