Browse Source

instaforex

release/v0.1
jl777 9 years ago
parent
commit
629e91a6ce
  1. 1
      InstantDEX/exchangeparse.h
  2. 1
      InstantDEX/exchanges/lakebtc.c
  3. 1
      iguana/InstantDEX/exchangeparse.h
  4. 1
      iguana/exchanges/fxcm.c
  5. 63
      iguana/exchanges/instaforex.c
  6. 1
      iguana/exchanges/lakebtc.c
  7. 11
      iguana/iguana_exchanges.c

1
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);

1
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);

1
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);

1
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 )

63
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<NUM_INSTAFOREX; i++)
{
sprintf(contract,"%s%s",BASERELS[i][0],BASERELS[i][1]);
if ( (item= jobj(json,contract)) != 0 )
{
timestamps[i] = juint(item,"lasttime");
bids[i] = jdouble(item,"bid");
asks[i] = jdouble(item,"ask");
}
}
free_json(json);
}
}
}
double UPDATE(struct exchange_info *exchange,char *_base,char *_rel,struct exchange_quote *bidasks,int32_t maxdepth,double commission,cJSON *argjson,int32_t invert)
{
uint32_t timestamps[NUM_INSTAFOREX]; double bids[NUM_INSTAFOREX],asks[NUM_INSTAFOREX];
char base[32],rel[32]; int32_t numbids,numasks,i; double bid,ask;
strcpy(base,_base), touppercase(base);
strcpy(rel,_rel), touppercase(rel);
for (i=0; i<NUM_INSTAFOREX; i++)
{
if ( strcmp(base,BASERELS[i][0]) == 0 && strcmp(rel,BASERELS[i][1]) == 0 )
{
prices777_instaforex(timestamps,bids,asks);
numbids = numasks = 0;
bid = exchange_setquote(bidasks,&numbids,&numasks,0,invert,bids[i],1,commission,0,timestamps[i],0);
ask = exchange_setquote(bidasks,&numbids,&numasks,1,invert,asks[i],1,commission,0,timestamps[i],0);
if ( bid > 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)

1
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);

11
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':

Loading…
Cancel
Save