test
This commit is contained in:
33
src/komodo.h
33
src/komodo.h
@@ -68,7 +68,7 @@ uint32_t MINDENOMS[] = { 1000, 1000, 100000, 1000, 1000, 1000, 1000, 1000, // ma
|
||||
|
||||
double PAX_val(uint32_t pval,int32_t baseid)
|
||||
{
|
||||
printf("PAX_val baseid.%d pval.%u\n",baseid,pval);
|
||||
//printf("PAX_val baseid.%d pval.%u\n",baseid,pval);
|
||||
if ( baseid >= 0 && baseid < MAX_CURRENCIES )
|
||||
return(((double)pval / 1000000000.) / MINDENOMS[baseid]);
|
||||
return(0.);
|
||||
@@ -488,15 +488,17 @@ int32_t komodo_baseid(char *origbase)
|
||||
for (i=0; origbase[i]!=0&&i<sizeof(base); i++)
|
||||
base[i] = toupper((int32_t)(origbase[i] & 0xff));
|
||||
base[i] = 0;
|
||||
if ( strcmp(base,"KMD") == 0 )
|
||||
return(MAX_CURRENCIES);
|
||||
for (i=0; i<MAX_CURRENCIES; i++)
|
||||
if ( strcmp(CURRENCIES[i],base) == 0 )
|
||||
return(i);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
uint64_t komodo_paxprice(int32_t height,char *base,char *rel)
|
||||
uint64_t komodo_paxprice(int32_t height,char *base,char *rel,uint64_t volume)
|
||||
{
|
||||
int32_t baseid,relid,i,ht; uint32_t pvalb,pvalr,*ptr; double baseval,relval;
|
||||
int32_t baseid,relid,i,ht; uint32_t usdval,kmdbtc,btcusd,pvalb,pvalr,*ptr; double usdval,baseval,relval,KMDBTC,BTCUSD;
|
||||
if ( (baseid= komodo_baseid(base)) >= 0 && (relid= komodo_baseid(rel)) >= 0 )
|
||||
{
|
||||
for (i=NUM_PRICES-1; i>=0; i--)
|
||||
@@ -504,12 +506,29 @@ uint64_t komodo_paxprice(int32_t height,char *base,char *rel)
|
||||
ptr = &PVALS[36 * i];
|
||||
if ( *ptr < height )
|
||||
{
|
||||
if ( (pvalb= ptr[1 + baseid]) != 0 && (pvalr= ptr[1 + relid]) != 0 )
|
||||
if ( (pvalb= ptr[1 + baseid]) != 0 )
|
||||
{
|
||||
baseval = PAX_val(pvalb,baseid);
|
||||
relval = PAX_val(pvalr,relid);
|
||||
printf("ht.%d [%d] base.(%u %f) rel.(%u %f) -> %llu\n",height,*ptr,pvalb,baseval,pvalr,relval,(long long)(COIN * (baseval / relval)));
|
||||
return(COIN * (baseval / relval));
|
||||
if ( relid == MAX_CURRENCIES )
|
||||
{
|
||||
kmdbtc = ptr[1 + MAX_CURRENCIES];
|
||||
btcusd = ptr[1 + MAX_CURRENCIES + 1];
|
||||
if ( ptr[1 + USD] != 0 && kmdbtc != 0 && btcusd != 0 )
|
||||
{
|
||||
usdval = PAX_val(ptr[1 + USD],USD);
|
||||
KMDBTC = ((double)kmdbtc / (1000000000. * 1000.));
|
||||
BTCUSD = ((double)btcusd / (1000000000. / 1000.));
|
||||
KMDUSD = (KMDBTC * BTCUSD);
|
||||
printf("base -> USD %f, BTC %f KMDUSD %f\n",baseval/usdval,BTCUSD,KMDUSD);
|
||||
return(volume * (baseval / usdval) / KMDUSD);
|
||||
}
|
||||
}
|
||||
else if ( (pvalr= ptr[1 + relid]) != 0 )
|
||||
{
|
||||
relval = PAX_val(pvalr,relid);
|
||||
printf("ht.%d [%d] base.(%u %f) rel.(%u %f) -> %llu\n",height,*ptr,pvalb,baseval,pvalr,relval,(long long)(COIN * (baseval / relval)));
|
||||
return(volume * (baseval / relval));
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user