VR.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. extern LPFX Fx;
  9. int CreateVrData(K_DATA *lpKData,int RNum,DATA *Data,PARA *Para)
  10. {   
  11. int i,j,l;
  12.     long m;
  13.     double Tun[2],Tdn[2];
  14.     double Ttr;
  15. VR_DATA *VrData;
  16. VrData=(VR_DATA*)_fmalloc(sizeof(VR_DATA)*RNum);
  17. memset(VrData,0,sizeof(VR_DATA)*RNum);
  18.     for(j=0;j<RNum;j++)
  19.     {
  20.      if(j==0)
  21.      {
  22.      Tun[0]=Tdn[0]=Ttr=0;
  23.      Para->price[0]=0.0;
  24.      VrData[j].vr=0;
  25.      }
  26.      if(j<=Para->periods[0]-1&&j>0)
  27.      {          
  28.      if(lpKData[j-1].ss<lpKData[j].ss)
  29.      Tun[0]+=lpKData[j].cj*lpKData[j].ss;
  30.      if(lpKData[j-1].ss>lpKData[j].ss)
  31.      Tdn[0]+=lpKData[j].cj*lpKData[j].ss;
  32.      Ttr+=lpKData[j].cj*lpKData[j].ss;          
  33.      VrData[j].vr=0;
  34.      }
  35.      m=j-Para->periods[0];
  36.      if(j>Para->periods[0]-1)
  37.      {
  38.     
  39.      Tun[0]=Tdn[0]=0;
  40.      for(l=1;l<=Para->periods[0];l++)
  41.      {
  42.          m=l+j-Para->periods[0];
  43.      if(lpKData[m-1].ss<lpKData[m].ss)
  44.              Tun[0]+=lpKData[m].ss*lpKData[m].cj;
  45.      if(lpKData[m-1].ss>lpKData[m].ss)
  46.              Tdn[0]+=lpKData[m].ss*lpKData[m].cj;             
  47.      }    
  48.      m=j-Para->periods[0];
  49.      Ttr+=lpKData[j].cj*lpKData[j].ss-lpKData[m].cj*lpKData[m].ss;
  50.      }
  51.      if(j>=Para->periods[0]-1)
  52.      {   
  53.          if((Tdn[0]+Ttr/2)!=0)
  54.      VrData[j].vr=(Tun[0]+Ttr/(double)2.00)/(Tdn[0]+Ttr/(double)2.00);
  55.      else
  56.      VrData[j].vr=0;
  57.      if(Para->price[0]<VrData[j].vr)
  58.      Para->price[0]=VrData[j].vr;
  59.      }
  60.     }
  61.     for(j=0;j<10;j++)
  62.     {
  63.         if(Data->v==NULL) 
  64.          break;
  65.      if(Data->v[j]!=NULL)
  66.      {
  67.      _ffree(Data->v[j]);
  68.      Data->v[j]=NULL;
  69.      }
  70.     }    
  71.     Data->v==NULL;     
  72.     Data->num =Para->dnum; 
  73.     Data->no =Para->no;
  74.     strcpy(Data->gpdm,Fx->gpdm);
  75.     Data->type =Fx->type;
  76.     Data->range =Fx->range;
  77.     Data->size =RNum;
  78.     for(j=0;j<Data->num;j++)
  79.      Data->v[j]=(double *)_fmalloc(sizeof(double)*RNum);
  80.     for(i=0;i<Data->num;i++)
  81.     {
  82.      for(j=0;j<RNum&&i==0;j++) 
  83.      Data->v[i][j]=VrData[j].vr;
  84.      Data->method[i]=CURVE_METHOD;
  85.     }
  86.     Para->feature |=DW_ALL;
  87.     _ffree(VrData);
  88. return TRUE;
  89. }