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