Beispiel #1
0
// join an integer to a list and join a K object to a list
int eg8()
{
        K z=ki(20);
        K intlist=ktn(KI,0);
		K x=ktn(0,0);
        DO(5,ja(&intlist,&i));        
        jk(&x,intlist);
        jk(&x,z);
        k(c,"display",x,(K)0);
        return 1;
}
static int ProcessMessage(const FeedData *data)
{
    static int sent = 0;

    K condvec;
 
    if (trades == NULL)  {
        trades = create_trade_schema();
    }

    if (quotes == NULL) {
        quotes = create_quote_schema();
    }

    switch(data->type) {
        case FF_TRADE_MSG:
            js(&kK(trades)[0], ss(data->core.sym));
            js(&kK(trades)[1], ss(data->core.exg));
            ja(&kK(trades)[2], (void *) &data->msg.trade.size);
            ja(&kK(trades)[3], (void *) &data->msg.trade.volume);
            ja(&kK(trades)[4], (void *) &data->core.sequence);
            ja(&kK(trades)[5], (void *) &data->msg.trade.price); 
            
            condvec = ktn(4, KC);
            memcpy(&kC(condvec)[0], &data->core.cond, 4);
            jk(&kK(trades)[6], condvec); 
           
            break;
        case FF_QUOTE_MSG:
            js(&kK(quotes)[0], ss(data->core.sym));
            js(&kK(quotes)[1], ss(data->core.exg));
            ja(&kK(quotes)[2], (void *) &data->msg.quote.asksize);
            ja(&kK(quotes)[3], (void *) &data->msg.quote.bidsize);
            ja(&kK(quotes)[4], (void *) &data->msg.quote.askprice);
            ja(&kK(quotes)[5], (void *) &data->msg.quote.bidprice);
            ja(&kK(quotes)[6], (void *) &data->core.sequence);

            condvec = ktn(4, KC);
            memcpy(&kC(condvec)[0], &data->core.cond, 4);
            jk(&kK(quotes)[7], condvec);

            break;
    }
 
    if (++sent >= 10) {
        SendToKDB("quote", quotes); quotes = NULL;
        SendToKDB("trade", trades); trades = NULL;
        sent = 0;
    }

    return FEED_STATE;
}
Beispiel #3
0
K eval(K x,K y,K z){K*k;S*b,s;SQLULEN w;SQLLEN*nb;SQLINTEGER*wb;H*tb,u,t,j=0,p,m;F f;C c[128];I n=xj<0;D d=d1(n?-xj:xj);U(d)x=y;Q(z->t!=-KJ||xt!=-KS&&xt!=KC,"type")
 if(z->j)SQLSetStmtAttr(d,SQL_ATTR_QUERY_TIMEOUT,(SQLPOINTER)(SQLULEN)z->j,0);
 if(xt==-KS)Q1(SQLColumns(d,(S)0,0,(S)0,0,xs,S0,(S)0,0))else{I e;K q=kpn(xG,xn);ja(&q,"\0");e=SQLExecDirect(d,q->G0,xn);r0(q);Q1(e)}
 SQLNumResultCols(d,&j);P(!j,(d0(d),knk(0)))
 b=malloc(j*SZ),tb=malloc(j*2),wb=malloc(j*SZ),nb=malloc(j*SZ),x=ktn(KS,j),y=ktn(0,j);// sqlserver: no bind past nonbind
 DO(j,Q1(SQLDescribeCol(d,(H)(i+1),c,128,&u,&t,&w,&p,&m))xS[i]=sn(c,u);
if(t>90)t-=82;
Q(t<-11||t>12,xS[i])wb[i]=ut[tb[i]=t=t>0?t:12-t]==KS&&w?w+1:wt[t];if(ut[t]==KS&&(n||!wb[i]||wb[i]>9))tb[i]=13)
 DO(j,kK(y)[i]=ktn(ut[t=tb[i]],0);if(w=wb[i])Q1(SQLBindCol(d,(H)(i+1),ct[t],b[i]=malloc(w),w,nb+i)))
 for(;SQL_SUCCEEDED(SQLFetch(d));)DO(j,k=kK(y)+i;u=ut[t=tb[i]];s=b[i];n=SQL_NULL_DATA==(int)nb[i];
if(!u)jk(k,n?ktn(ct[t]?KC:KG,0):wb[i]?kp(s):gb(d,(H)(i+1),t));
else ja(k,n?nu(u):u==KH&&wb[i]==1?(t=(H)*s,(S)&t):u==KS?(s=dtb(s,nb[i]),(S)&s):u<KD?s:u==KZ?(f=ds(s)+(vs(s+6)+*(I*)(s+12)/1e9)/8.64e4,(S)&f):(w=u==KD?ds(s):vs(s),(S)&w))) 
 if(!SQLMoreResults(d))O("more\n");DO(j,if(wb[i])free(b[i]))R free(b),free(tb),free(wb),free(nb),d0(d),xT(xD(x,y));}
Beispiel #4
0
K fa2q(double *data,long *dims,long d,long size){
  int length=dims[0],elesize=size/length,i;
  K L;

  if(1==d){
    L=ktn(KF,length);
    for(i=0;i<length;i++)kF(L)[i]=*(data+i);
    R L; 
  }else if(1<d){
    L=knk(0);
    for(i=0;i<length;i++)jk(&L,fa2q(data+i*elesize,dims+1,d-1,elesize));
    R L; 
  }

  R (K)0;
}
Beispiel #5
0
double NuD1(double Re, double Pr) {
  // Nussalt number based on above correlation//
  return jk(Re)*Re*pow(Pr, (1/3.));
}