Browse Source

Goal

etomic
jl777 7 years ago
parent
commit
880739a1e5
  1. 2
      iguana/exchanges/LP_coins.c
  2. 4
      iguana/exchanges/LP_commands.c
  3. 2
      iguana/exchanges/LP_include.h
  4. 24
      iguana/exchanges/LP_portfolio.c

2
iguana/exchanges/LP_coins.c

@ -158,7 +158,7 @@ int32_t LP_userpass(char *userpass,char *symbol,char *assetname,char *confroot,c
LP_userpassfp(symbol,username,password,fp);
sprintf(userpass,"%s:%s",username,password);
fclose(fp);
if ( 1 )
if ( 0 )
printf("LP_statefname.(%s) <- %s %s %s (%s)\n",fname,name,symbol,assetname,userpass);
return((int32_t)strlen(userpass));
} else printf("cant open.(%s)\n",fname);

4
iguana/exchanges/LP_commands.c

@ -257,6 +257,10 @@ trust(pubkey, trust)\n\
return(jprint(retjson,1));
}
}
else if ( strcmp(method,"goal") == 0 )
{
return(LP_portfolio_goal(coin,jdouble(argjson,"goal")));
}
}
else if ( strcmp(method,"swapstatus") == 0 )
{

2
iguana/exchanges/LP_include.h

@ -183,7 +183,7 @@ struct iguana_info
uint8_t pubtype,p2shtype,isPoS,wiftype,wiftaddr,taddr,noimportprivkey_flag;
char symbol[16],smartaddr[64],userpass[1024],serverport[128];
// portfolio
double price_kmd,force,perc,goal;
double price_kmd,force,perc,goal,goalperc;
uint64_t maxamount,kmd_equiv,balanceA,balanceB,valuesumA,valuesumB;
};

24
iguana/exchanges/LP_portfolio.c

@ -18,16 +18,16 @@
// marketmaker
//
cJSON *LP_portfolio_entry(struct iguana_info *coin,uint64_t kmdsum)
cJSON *LP_portfolio_entry(struct iguana_info *coin)
{
cJSON *item = cJSON_CreateObject();
jaddstr(item,"coin",coin->symbol);
jaddnum(item,"amount",dstr(coin->maxamount));
jaddnum(item,"price",coin->price_kmd);
jaddnum(item,"kmd_equiv",dstr(coin->kmd_equiv));
jaddnum(item,"kmdsum",dstr(kmdsum));
jaddnum(item,"goal",coin->goal);
jaddnum(item,"perc",coin->perc);
jaddnum(item,"goal",coin->goal);
jaddnum(item,"goalperc",coin->goalperc);
jaddnum(item,"force",coin->force);
jaddnum(item,"balanceA",dstr(coin->balanceA));
jaddnum(item,"valuesumA",dstr(coin->valuesumA));
@ -86,14 +86,16 @@ char *LP_portfolio()
}
else if ( coin->maxamount > 0 )
{
if ( kmdsum > SMALLVAL )
coin->perc = 100. * coin->kmd_equiv / kmdsum;
if ( goalsum > SMALLVAL && coin->goal > SMALLVAL )
{
coin->perc = 100. * coin->kmd_equiv / goalsum;
if ( (coin->force= (coin->perc - coin->goal)) < 0. )
coin->goalperc = 100. * coin->goal / goalsum;
if ( (coin->force= (coin->perc - coin->goalperc)) < 0. )
coin->force *= -coin->force;
else coin->force *= coin->force;
} else coin->perc = coin->force = 0.;
jaddi(array,LP_portfolio_entry(coin,kmdsum));
jaddi(array,LP_portfolio_entry(coin));
}
}
}
@ -103,4 +105,14 @@ char *LP_portfolio()
return(jprint(retjson,1));
}
char *LP_portfolio_goal(char *symbol,double goal)
{
struct iguana_info *coin;
if ( (coin= LP_coinfind(symbol)) != 0 && coin->inactive == 0 )
{
coin->goal = goal;
return(LP_portfolio());
} else return(clonestr("{\error\":\"cant set goal for inactive coin\"}"));
}

Loading…
Cancel
Save