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