Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
fd5b1734e6
  1. 4
      crypto777/cJSON.c
  2. 13
      iguana/exchanges/fxcm.c
  3. 12
      iguana/exchanges/instaforex.c
  4. 19
      iguana/exchanges/nxtae.c
  5. 13
      iguana/exchanges/truefx.c
  6. 38
      iguana/peggy_update.c

4
crypto777/cJSON.c

@ -1062,9 +1062,9 @@ uint64_t calc_nxt64bits(const char *NXTaddr)
{
printf("calc_nxt64bits: illegal char.(%c %d) in (%s).%d\n",c,c,NXTaddr,(int32_t)i);
#ifdef __APPLE__
while ( 1 )
//while ( 1 )
{
sleep(60);
//sleep(60);
printf("calc_nxt64bits: illegal char.(%c %d) in (%s).%d\n",c,c,NXTaddr,(int32_t)i);
}
#endif

13
iguana/exchanges/fxcm.c

@ -206,20 +206,12 @@ int32_t SUPPORTS(struct exchange_info *exchange,char *_base,char *_rel,cJSON *ar
void prices777_fxcm(double bids[64],double asks[64],double highs[64],double lows[64])
{
static char *xmlstr; static uint32_t lasttime;
char name[64],*str; cJSON *json,*obj; int32_t i,c,flag,n = 0; double bid,ask,high,low; struct destbuf numstr;
char name[64],*str,*xmlstr; cJSON *json,*obj; int32_t i,c,flag,n = 0; double bid,ask,high,low; struct destbuf numstr;
memset(bids,0,sizeof(*bids) * 64), memset(asks,0,sizeof(*asks) * 64);
memset(highs,0,sizeof(*highs) * 64), memset(lows,0,sizeof(*lows) * 64);
if ( fxcm_ensure() < 0 )
return;
if ( time(NULL) > lasttime )
{
if ( xmlstr != 0 )
free(xmlstr);
xmlstr = fxcm_xmlstr();
lasttime = (uint32_t)time(NULL);
}
if ( xmlstr != 0 )
if ( (xmlstr= fxcm_xmlstr()) != 0 )
{
if ( (json= cJSON_Parse(xmlstr)) != 0 )
{
@ -252,6 +244,7 @@ void prices777_fxcm(double bids[64],double asks[64],double highs[64],double lows
}
free_json(json);
} else printf("couldnt parse.(%s)\n",xmlstr);
free(xmlstr);
}
}

12
iguana/exchanges/instaforex.c

@ -36,19 +36,12 @@ static char *BASERELS[][2] = { {"NZD","USD"},{"NZD","CHF"},{"NZD","CAD"},{"NZD",
void prices777_instaforex(uint32_t timestamps[NUM_INSTAFOREX],double bids[NUM_INSTAFOREX],double asks[NUM_INSTAFOREX])
{
static uint32_t lasttime; static char *jsonstr;
//{"NZDUSD":{"symbol":"NZDUSD","lasttime":1437580206,"digits":4,"change":"-0.0001","bid":"0.6590","ask":"0.6593"},
char contract[32]; cJSON *json,*item; int32_t i;
char contract[32],*jsonstr; cJSON *json,*item; int32_t i;
memset(timestamps,0,sizeof(*timestamps) * NUM_INSTAFOREX);
memset(bids,0,sizeof(*bids) * NUM_INSTAFOREX);
memset(asks,0,sizeof(*asks) * NUM_INSTAFOREX);
if ( time(NULL) > lasttime )
{
if ( jsonstr != 0 )
free(jsonstr);
jsonstr = issue_curl("https://quotes.instaforex.com/get_quotes.php?q=NZDUSD,NZDCHF,NZDCAD,NZDJPY,GBPNZD,EURNZD,AUDNZD,CADJPY,CADCHF,USDCAD,EURCAD,GBPCAD,AUDCAD,USDCHF,CHFJPY,EURCHF,GBPCHF,AUDCHF,EURUSD,EURAUD,EURJPY,EURGBP,GBPUSD,GBPJPY,GBPAUD,USDJPY,AUDJPY,AUDUSD,XAUUSD&m=json");
lasttime = (uint32_t)time(NULL);
}
jsonstr = issue_curl("https://quotes.instaforex.com/get_quotes.php?q=NZDUSD,NZDCHF,NZDCAD,NZDJPY,GBPNZD,EURNZD,AUDNZD,CADJPY,CADCHF,USDCAD,EURCAD,GBPCAD,AUDCAD,USDCHF,CHFJPY,EURCHF,GBPCHF,AUDCHF,EURUSD,EURAUD,EURJPY,EURGBP,GBPUSD,GBPJPY,GBPAUD,USDJPY,AUDJPY,AUDUSD,XAUUSD&m=json");
if ( jsonstr != 0 )
{
// printf("(%s)\n",jsonstr);
@ -66,6 +59,7 @@ void prices777_instaforex(uint32_t timestamps[NUM_INSTAFOREX],double bids[NUM_IN
}
free_json(json);
}
free(jsonstr);
}
}

19
iguana/exchanges/nxtae.c

@ -140,7 +140,9 @@ uint64_t NXT_assetid(char *name)
uint64_t assetid;
if ( (assetid= is_MGWcoin(name)) != 0 )
return(assetid);
else return(calc_nxt64bits(name));
else if ( is_decimalstr(name) > 0 )
return(calc_nxt64bits(name));
else return(0);
}
double NXT_price_volume(double *volumep,uint64_t baseamount,uint64_t relamount)
@ -180,7 +182,7 @@ int32_t get_assettype(struct supernet_info *myinfo,int32_t *numdecimalsp,char *a
*numdecimalsp = 8;
return(0);
}
if ( (assetid= calc_nxt64bits(assetidstr)) == NXT_ASSETID )
if ( is_decimalstr(assetidstr) > 0 && (assetid= calc_nxt64bits(assetidstr)) == NXT_ASSETID )
{
//printf("found NXT_ASSETID.(%s)\n",assetidstr);
ap_type = 0;
@ -298,8 +300,11 @@ double get_minvolume(struct supernet_info *myinfo,uint64_t assetid)
int64_t get_asset_quantity(struct supernet_info *myinfo,int64_t *unconfirmedp,char *NXTaddr,char *assetidstr)
{
char cmd[2*MAX_JSON_FIELD],*jsonstr; struct destbuf assetid; int32_t i,n,iter; cJSON *array,*item,*obj,*json; int64_t quantity,qty = 0;
uint64_t assetidbits = calc_nxt64bits(assetidstr);
quantity = *unconfirmedp = 0;
uint64_t assetidbits;
quantity = *unconfirmedp = 0;
if ( is_decimalstr(assetidstr) > 0 )
assetidbits = calc_nxt64bits(assetidstr);
else return(0);
if ( assetidbits == NXT_ASSETID )
{
sprintf(cmd,"requestType=getBalance&account=%s",NXTaddr);
@ -428,9 +433,9 @@ int32_t SUPPORTS(struct exchange_info *exchange,char *base,char *rel,cJSON *argj
int32_t polarity; struct supernet_info *myinfo = SuperNET_MYINFO(0);
if ( (polarity= baserel_polarity(BASERELS,(int32_t)(sizeof(BASERELS)/sizeof(*BASERELS)),base,rel)) == 0 )
{
if ( strcmp(rel,"NXT") == 0 || strcmp(rel,"nxt") == 0 || calc_nxt64bits(rel) == NXT_ASSETID )
if ( strcmp(rel,"NXT") == 0 || strcmp(rel,"nxt") == 0 || (is_decimalstr(rel) != 0 && calc_nxt64bits(rel) == NXT_ASSETID) )
return(NXT_assetpolarity(myinfo,base));
else if ( strcmp(base,"NXT") == 0 || strcmp(base,"nxt") == 0 || calc_nxt64bits(base) == NXT_ASSETID )
else if ( strcmp(base,"NXT") == 0 || strcmp(base,"nxt") == 0 || (is_decimalstr(base) != 0 && calc_nxt64bits(rel) == NXT_ASSETID) )
return(-NXT_assetpolarity(myinfo,rel));
}
return(polarity);
@ -703,7 +708,7 @@ char *CANCELORDER(struct exchange_info *exchange,uint64_t orderid,cJSON *argjson
uint64_t nxt64bits; char cmd[4096],secret[8192],*str = "Bid",*retstr = 0; struct supernet_info *myinfo = SuperNET_MYINFO(0);
if ( (nxt64bits= _get_AEquote(myinfo,str,orderid)) == 0 )
str = "Ask", nxt64bits = _get_AEquote(myinfo,str,orderid);
if ( nxt64bits == calc_nxt64bits(myinfo->myaddr.NXTADDR) )
if ( nxt64bits == myinfo->myaddr.nxt64bits )
{
escape_code(secret,myinfo->secret);
sprintf(cmd,"requestType=cancel%sOrder&secretPhrase=%s&feeNQT=%d&deadline=%d&order=%llu",str,secret,0,DEFAULT_NXT_DEADLINE,(long long)orderid);

13
iguana/exchanges/truefx.c

@ -35,7 +35,7 @@ static char *BASERELS[][2] = { {"EUR","USD"},{"USD","JPY"},{"GBP","USD"},{"EUR",
uint64_t prices777_truefx(char *reqbase,char *reqrel,uint64_t *millistampp,double *bidp,double *askp,double *openp,double *highp,double *lowp,double *closep,char *username,char *password,uint64_t sessionid)
{
static uint32_t lasttime; static char *laststr;
// static uint32_t lasttime; static char *laststr;
char *truefxfmt = "http://webrates.truefx.com/rates/connect.html?f=csv&id=%s:%s:poll:%llu&c=EUR/USD,USD/JPY,GBP/USD,EUR/GBP,USD/CHF,AUD/NZD,CAD/CHF,CHF/JPY,EUR/AUD,EUR/CAD,EUR/JPY,EUR/CHF,USD/CAD,AUD/USD,GBP/JPY,AUD/CAD,AUD/CHF,AUD/JPY,EUR/NOK,EUR/NZD,GBP/CAD,GBP/CHF,NZD/JPY,NZD/USD,USD/NOK,USD/SEK";
// EUR/USD,1437569931314,1.09,034,1.09,038,1.08922,1.09673,1.09384 USD/JPY,1437569932078,123.,778,123.,781,123.569,123.903,123.860 GBP/USD,1437569929008,1.56,332,1.56,337,1.55458,1.56482,1.55538 EUR/GBP,1437569931291,0.69,742,0.69,750,0.69710,0.70383,0.70338 USD/CHF,1437569932237,0.96,142,0.96,153,0.95608,0.96234,0.95748 EUR/JPY,1437569932237,134.,960,134.,972,134.842,135.640,135.476 EUR/CHF,1437569930233,1.04,827,1.04,839,1.04698,1.04945,1.04843 USD/CAD,1437569929721,1.30,231,1.30,241,1.29367,1.30340,1.29466 AUD/USD,1437569931700,0.73,884,0.73,890,0.73721,0.74395,0.74200 GBP/JPY,1437569931924,193.,500,193.,520,192.298,193.670,192.649
char url[1024],userpass[1024],buf[128],base[64],rel[64],*str=0; cJSON *array;
@ -63,7 +63,7 @@ uint64_t prices777_truefx(char *reqbase,char *reqrel,uint64_t *millistampp,doubl
}
if ( url[0] == 0 )
sprintf(url,"http://webrates.truefx.com/rates/connect.html?f=csv&s=y");
if ( laststr != 0 && time(NULL) > lasttime )
/*if ( laststr != 0 && time(NULL) > lasttime )
{
//printf("free laststr.%p lag.%d\n",laststr,(int32_t)(time(NULL) - lasttime));
free(laststr);
@ -74,10 +74,11 @@ uint64_t prices777_truefx(char *reqbase,char *reqrel,uint64_t *millistampp,doubl
str = issue_curl(url);
lasttime = (uint32_t)time(NULL);
laststr = str;
}
}*/
str = issue_curl(url);
if ( str != 0 )
{
printf("(%s) -> (%s)\n",url,str);
//printf("(%s) -> (%s)\n",url,str);
/*EUR/USD,1454354222037,1.08,997,1.09,000,1.08142,1.09130,1.08333
USD/JPY,1454354221120,121.,049,121.,053,120.676,121.496,121.289
GBP/USD,1454354221048,1.44,242,1.44,254,1.42280,1.44305,1.42483
@ -106,8 +107,8 @@ uint64_t prices777_truefx(char *reqbase,char *reqrel,uint64_t *millistampp,doubl
memcpy(base,str+n,3), base[3] = 0;
memcpy(rel,str+n+4,3), rel[3] = 0;
str[n + i] = 0;
printf("str.(%s) (%s/%s) %d n.%d i.%d\n",str+n,base,rel,str[n],n,i);
sprintf(buf,"[%s]",str+n+7+1);
//printf("str.(%s) (%s/%s) %d n.%d i.%d |%s|\n",str+n,base,rel,str[n],n,i,buf);
n += i + 1;
if ( (array= cJSON_Parse(buf)) != 0 )
{
@ -129,12 +130,14 @@ uint64_t prices777_truefx(char *reqbase,char *reqrel,uint64_t *millistampp,doubl
*bidp = bid, *askp = ask, *openp = openval, *highp = high, *lowp = low;
*closep = 0;
*millistampp = millistamp;
//printf("(%f %f)\n ",bid,ask);
break;
}
}
free_json(array);
} else printf("cant parse.(%s)\n",buf);
}
free(str);
}
return(sessionid);
}

38
iguana/peggy_update.c

@ -186,7 +186,7 @@ double PAX_yahoo(char *metal)
}
free(jsonstr);
}
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("(%s %f) ",metal,price);
return(price);
}
@ -233,13 +233,13 @@ void PAX_btcprices(struct peggy_info *PEGS,int32_t enddatenum,int32_t numdates)
// ["Date","24h Average","Ask","Bid","Last","Total Volume"]
// ["2015-07-25",289.27,288.84,288.68,288.87,44978.61]
item = jitem(array,i);
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("(%s) ",cJSON_Print(item));
if ( (dstr= jstr(jitem(item,0),0)) != 0 && (datenum= conv_date(&seconds,dstr)) > 0 )
{
price = jdouble(jitem(item,1),0), ask = jdouble(jitem(item,2),0), bid = jdouble(jitem(item,3),0);
close = jdouble(jitem(item,4),0), vol = jdouble(jitem(item,5),0);
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
fprintf(stderr,"%d.[%d %f %f %f %f %f].%d ",i,datenum,price,ask,bid,close,vol,n);
utc32[numdates - 1 - i] = OS_conv_datenum(datenum,12,0,0), qdaily[numdates - 1 - i] = price * .001;
}
@ -258,11 +258,11 @@ void PAX_btcprices(struct peggy_info *PEGS,int32_t enddatenum,int32_t numdates)
timestamp = juint(item,"date"), high = jdouble(item,"high"), low = jdouble(item,"low"), open = jdouble(item,"open");
close = jdouble(item,"close"), vol = jdouble(item,"volume"), quotevol = jdouble(item,"quoteVolume"), price = jdouble(item,"weightedAverage");
//printf("[%u %f %f %f %f %f %f %f]",timestamp,high,low,open,close,vol,quotevol,price);
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("[%u %d %f]",timestamp,OS_conv_unixtime(&t,&seconds,timestamp),price);
utc32[i] = timestamp - 12*3600, btcddaily[i] = price * 100.;
}
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("poloniex.%d\n",n);
PAX_genspline(&PEGS->splines[MAX_CURRENCIES+2],MAX_CURRENCIES+2,"btcdhist",utc32,btcddaily,n<MAX_SPLINES?n:MAX_SPLINES,btcddaily);
}
@ -274,8 +274,8 @@ int32_t PAX_ecbparse(char *date,double *prices,char *url,int32_t basenum)
char *jsonstr,*relstr,*basestr; int32_t count=0,i,relnum; cJSON *json,*ratesobj,*item; struct destbuf tmp;
if ( (jsonstr= issue_curl(url)) != 0 )
{
//if ( Debuglevel > 2 )
printf("(%s)\n",jsonstr);
if ( Debuglevel > 2 )
printf("(%s)\n",jsonstr);
if ( (json= cJSON_Parse(jsonstr)) != 0 )
{
copy_cJSON(&tmp,jobj(json,"date")), safecopy(date,tmp.buf,64);
@ -292,8 +292,8 @@ int32_t PAX_ecbparse(char *date,double *prices,char *url,int32_t basenum)
// else if ( relnum == JPYNUM )
// prices[i] /= 100.;
count++;
//if ( Debuglevel > 2 )
printf("(%02d:%02d %f) ",basenum,relnum,prices[i]);
if ( Debuglevel > 2 )
printf("(%02d:%02d %f) ",basenum,relnum,prices[i]);
} else printf("cant find.(%s)\n",relstr);//, getchar();
item = item->next;
}
@ -344,11 +344,11 @@ int32_t PAX_ecbprices(char *date,double *prices,int32_t year,int32_t month,int32
break;
if ( prices[MAX_CURRENCIES*basenum + i] != 0. )
nonz++;
//if ( Debuglevel > 2 )
printf("%8.5f ",prices[MAX_CURRENCIES*basenum + i]);
if ( Debuglevel > 2 )
printf("%8.5f ",prices[MAX_CURRENCIES*basenum + i]);
}
//if ( Debuglevel > 2 )
printf("%s.%d %d\n",CURRENCIES[basenum],basenum,nonz);
if ( Debuglevel > 2 )
printf("%s.%d %d\n",CURRENCIES[basenum],basenum,nonz);
}
}
}
@ -573,7 +573,7 @@ void _crypto_update(struct peggy_info *PEGS,double cryptovols[2][8][2],struct PA
}
cryptovols[0][i][iter] = _pairaved(cryptovols[0][i][iter],prices[i][iter]);
cryptovols[1][i][iter] = _pairaved(cryptovols[1][i][iter],volumes[i][iter]);
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("(%f %f).%d:%d ",cryptovols[0][i][iter],cryptovols[1][i][iter],i,iter);
//if ( cnyusd < SMALLVAL || btcusd < SMALLVAL )
// break;
@ -619,19 +619,19 @@ void PAX_RTupdate(struct peggy_info *PEGS,double cryptovols[2][8][2],double RTme
if ( (vol= volumes[i][0]+volumes[i][1]) > SMALLVAL )
{
price = ((prices[i][0] * volumes[i][0]) + (prices[i][1] * volumes[i][1])) / vol;
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("%s %f v%f + %f v%f -> %f %f\n",cryptostrs[i],prices[i][0],volumes[i][0],prices[i][1],volumes[i][1],price,dp->cryptos[i]);
dxblend(&dp->cryptos[i],price,.995);
}
}
btcusd = PEGS->btcusd;
btcdbtc = PEGS->btcdbtc;
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf(" update with btcusd %f btcd %f\n",btcusd,btcdbtc);
if ( btcusd < SMALLVAL || btcdbtc < SMALLVAL )
{
PAX_update(PEGS,&btcusd,&btcdbtc);
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf(" price777_update with btcusd %f btcd %f\n",btcusd,btcdbtc);
} else PEGS->btcusd = btcusd, PEGS->btcdbtc = btcdbtc;
for (c=0; c<sizeof(CONTRACTS)/sizeof(*CONTRACTS); c++)
@ -646,7 +646,7 @@ void PAX_RTupdate(struct peggy_info *PEGS,double cryptovols[2][8][2],double RTme
}
if ( (price= _pairaved(bid,ask)) > SMALLVAL )
{
//if ( Debuglevel > 2 )
if ( Debuglevel > 2 )
printf("%.6f ",price);
dxblend(&RTprices[c],price,.995);
if ( 0 && (baserel= PAX_ispair(base,rel,CONTRACTS[c])) >= 0 )
@ -676,7 +676,7 @@ void PAX_bidask(struct exchange_info *exchange,uint32_t *timestamps,double *bids
bids[contractnum] = bidasks[0].price;
asks[contractnum] = bidasks[1].price;
timestamps[contractnum] = bidasks[0].timestamp;
printf("%.6f ",_pairaved(bids[contractnum],asks[contractnum]));
printf("(%d %.6f) ",contractnum,_pairaved(bids[contractnum],asks[contractnum]));
}
struct exchange_info *PAX_bidasks(char *exchangestr,uint32_t *timestamps,double *bids,double *asks)

Loading…
Cancel
Save