From 629e91a6ceb5d0a04c9581630287b4dc18c1ed2d Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 31 Jan 2016 19:33:23 -0300 Subject: [PATCH] instaforex --- InstantDEX/exchangeparse.h | 1 - InstantDEX/exchanges/lakebtc.c | 1 - iguana/InstantDEX/exchangeparse.h | 1 - iguana/exchanges/fxcm.c | 1 - iguana/exchanges/instaforex.c | 63 +++++++++++++++++++++++++++---- iguana/exchanges/lakebtc.c | 1 - iguana/iguana_exchanges.c | 11 ++++-- 7 files changed, 64 insertions(+), 15 deletions(-) diff --git a/InstantDEX/exchangeparse.h b/InstantDEX/exchangeparse.h index 1f1193867..80698c60c 100755 --- a/InstantDEX/exchangeparse.h +++ b/InstantDEX/exchangeparse.h @@ -694,7 +694,6 @@ double prices777_coinbase(struct prices777 *prices,int32_t maxdepth) char *lakebtc_parsebalance(struct exchange_info *exchange,double *balancep,char *coinstr) { - //lakebtc.({"balance":{"BTC":0.1},"locked":{"BTC":0.0},"profile":{"email":"jameslee777@yahoo.com","id":"U137561934","btc_deposit_addres":"1RyKrNJjezeFfvYaicnJEozHfhWfYzbuh"}}) char field[128],*str,*itemstr = 0; cJSON *obj=0,*item=0,*prof=0; double locked = 0; *balancep = 0.; strcpy(field,coinstr); diff --git a/InstantDEX/exchanges/lakebtc.c b/InstantDEX/exchanges/lakebtc.c index 2b9bf7e31..d1568a274 100755 --- a/InstantDEX/exchanges/lakebtc.c +++ b/InstantDEX/exchanges/lakebtc.c @@ -147,7 +147,6 @@ if ( (sig= hmac_sha1_str(dest,exchange->apisecret,(int32_t)strlen(exchange->apis char *PARSEBALANCE(struct exchange_info *exchange,double *balancep,char *coinstr) { - //lakebtc.({"balance":{"BTC":0.1},"locked":{"BTC":0.0},"profile":{"email":"jameslee777@yahoo.com","id":"U137561934","btc_deposit_addres":"1RyKrNJjezeFfvYaicnJEozHfhWfYzbuh"}}) char field[128],*str,*itemstr = 0; cJSON *obj=0,*item=0,*prof=0; double locked = 0; *balancep = 0.; strcpy(field,coinstr); diff --git a/iguana/InstantDEX/exchangeparse.h b/iguana/InstantDEX/exchangeparse.h index 1f1193867..80698c60c 100755 --- a/iguana/InstantDEX/exchangeparse.h +++ b/iguana/InstantDEX/exchangeparse.h @@ -694,7 +694,6 @@ double prices777_coinbase(struct prices777 *prices,int32_t maxdepth) char *lakebtc_parsebalance(struct exchange_info *exchange,double *balancep,char *coinstr) { - //lakebtc.({"balance":{"BTC":0.1},"locked":{"BTC":0.0},"profile":{"email":"jameslee777@yahoo.com","id":"U137561934","btc_deposit_addres":"1RyKrNJjezeFfvYaicnJEozHfhWfYzbuh"}}) char field[128],*str,*itemstr = 0; cJSON *obj=0,*item=0,*prof=0; double locked = 0; *balancep = 0.; strcpy(field,coinstr); diff --git a/iguana/exchanges/fxcm.c b/iguana/exchanges/fxcm.c index 7f88c29de..b369f0751 100755 --- a/iguana/exchanges/fxcm.c +++ b/iguana/exchanges/fxcm.c @@ -265,7 +265,6 @@ double UPDATE(struct exchange_info *exchange,char *base,char *rel,struct exchang { prices777_fxcm(bids,asks,highs,lows); numbids = numasks = 0; - printf("invert.%d\n",invert); bid = exchange_setquote(bidasks,&numbids,&numasks,0,invert,bids[c],1,commission,0,(uint32_t)time(NULL),0); ask = exchange_setquote(bidasks,&numbids,&numasks,1,invert,asks[c],1,commission,0,(uint32_t)time(NULL),0); if ( bid > SMALLVAL && ask > SMALLVAL ) diff --git a/iguana/exchanges/instaforex.c b/iguana/exchanges/instaforex.c index 1714684e5..00605e9ea 100755 --- a/iguana/exchanges/instaforex.c +++ b/iguana/exchanges/instaforex.c @@ -30,16 +30,65 @@ #define FUNCS instaforex ## _funcs #define BASERELS instaforex ## _baserels -static char *BASERELS[][2] = { {"btc","nxt"}, {"btc","btcd"}, {"btc","ltc"}, {"btc","vrc"}, {"btc","doge"} }; +static char *BASERELS[][2] = { {"NZD","USD"},{"NZD","CHF"},{"NZD","CAD"},{"NZD","JPY"},{"GBP","NZD"},{"EUR","NZD"},{"AUD","NZD"},{"CAD","JPY"},{"CAD","CHF"},{"USD","CAD"},{"EUR","CAD"},{"GBP","CAD"},{"AUD","CAD"},{"USD","CHF"},{"CHF","JPY"},{"EUR","CHF"},{"GBP","CHF"},{"AUD","CHF"},{"EUR","USD"},{"EUR","AUD"},{"EUR","JPY"},{"EUR","GBP"},{"GBP","USD"},{"GBP","JPY"},{"GBP","AUD"},{"USD","JPY"},{"AUD","JPY"},{"AUD","USD"},{"XAU","USD"} }; #include "exchange_supports.h" +#define NUM_INSTAFOREX ((int32_t)(sizeof(BASERELS)/sizeof(*BASERELS))) -double UPDATE(struct exchange_info *exchange,char *base,char *rel,struct exchange_quote *quotes,int32_t maxdepth,double commission,cJSON *argjson,int32_t invert) +void prices777_instaforex(uint32_t timestamps[NUM_INSTAFOREX],double bids[NUM_INSTAFOREX],double asks[NUM_INSTAFOREX]) { - char url[1024],lrel[16],lbase[16]; - strcpy(lrel,rel), strcpy(lbase,base); - tolowercase(lrel), tolowercase(lbase); - sprintf(url,"http://api.quadrigacx.com/v2/order_book?book=%s_%s",lbase,lrel); - return(exchanges777_standardprices(exchange,commission,base,rel,url,quotes,0,0,maxdepth,0,invert)); + 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; + 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); + } + if ( jsonstr != 0 ) + { + // printf("(%s)\n",jsonstr); + if ( (json= cJSON_Parse(jsonstr)) != 0 ) + { + for (i=0; i SMALLVAL && ask > SMALLVAL ) + return((bid + ask) * .5); + else return(0.); + } + } + return(0); } cJSON *SIGNPOST(void **cHandlep,int32_t dotrade,char **retstrp,struct exchange_info *exchange,char *payload,char *path) diff --git a/iguana/exchanges/lakebtc.c b/iguana/exchanges/lakebtc.c index bbf897c20..992665a07 100755 --- a/iguana/exchanges/lakebtc.c +++ b/iguana/exchanges/lakebtc.c @@ -142,7 +142,6 @@ if ( (sig= hmac_sha1_str(dest,exchange->apisecret,(int32_t)strlen(exchange->apis char *PARSEBALANCE(struct exchange_info *exchange,double *balancep,char *coinstr,cJSON *argjson) { - //lakebtc.({"balance":{"BTC":0.1},"locked":{"BTC":0.0},"profile":{"email":"jameslee777@yahoo.com","id":"U137561934","btc_deposit_addres":"1RyKrNJjezeFfvYaicnJEozHfhWfYzbuh"}}) char field[128],*str,*itemstr = 0; cJSON *obj=0,*item=0,*prof=0; double locked = 0; *balancep = 0.; strcpy(field,coinstr); diff --git a/iguana/iguana_exchanges.c b/iguana/iguana_exchanges.c index 895beffc6..dfb47cbc0 100755 --- a/iguana/iguana_exchanges.c +++ b/iguana/iguana_exchanges.c @@ -485,9 +485,14 @@ char *exchanges777_process(struct exchange_info *exchange,int32_t *retvalp,struc if ( exchange->issue.price != 0 ) { memset(req->bidasks,0,req->depth * sizeof(*req->bidasks) * 2); - polarity = exchanges777_orient(exchange,base,rel,0,0,req); - (*exchange->issue.price)(exchange,base,rel,req->bidasks,req->depth,req->commission,req->argjson,polarity < 0); - retstr = exchanges777_orderbook_jsonstr(exchange,base,rel,req->bidasks,req->depth,0,req->allflag); + if ( (polarity= exchanges777_orient(exchange,base,rel,0,0,req)) <= 0 ) + retstr = clonestr("{\"error\":\"invalid polarity\"}"); + else + { + //printf("polarity.%d %s %s req.(%s %s)\n",polarity,base,rel,req->base,req->rel); + (*exchange->issue.price)(exchange,req->base,req->rel,req->bidasks,req->depth,req->commission,req->argjson,req->invert); + retstr = exchanges777_orderbook_jsonstr(exchange,base,rel,req->bidasks,req->depth,0,req->allflag); + } } break; case 'S':