Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter naming for orders #92

Open
MrPacheko opened this issue Jul 5, 2020 · 1 comment
Open

Filter naming for orders #92

MrPacheko opened this issue Jul 5, 2020 · 1 comment

Comments

@MrPacheko
Copy link

MrPacheko commented Jul 5, 2020

Hi, first of all, congratulations for the code!!

I'm playing with some parts of your code and I find a problem with the filter to format quantity and price properly in relation to the trading rules of the exchange.

When I use for example BTCUSDT, the values that the function ValueProcessor returns have no sense. I put you an example:

If I pass:
quantity: '0.0000000000234414211', price: 30.000000001

Returns: { quantity: '0.333334', price: '30.00' }

If I pass:
quantity: '0.3568', price: 0
Returns: { quantity: '1000.000000', price: '0.01' }

If I pass:
quantity: '1504.2356896', price: 0
Returns: { quantity: '1504.235689', price: '0.01' } This seems ok, but the rest not.

Any idea about what? I put you the complete code if it helps:

THanks in advance!!!

const api = require('binance');
const binanceRest = new api.BinanceRest({
    key: 'apikeyhere', // Get this from your account on binance.com
    secret: 'apisecrethere', // Same for this
    timeout: 15000, // Optional, defaults to 15000, is the request time out in milliseconds
    recvWindow: 10000, // Optional, defaults to 5000, increase if you're getting timestamp errors
    disableBeautification: false,
    /*
     * Optional, default is false. Binance's API returns objects with lots of one letter keys.  By
     * default those keys will be replaced with more descriptive, longer ones.
     */
    handleDrift: true,
    /*
     * Optional, default is false.  If turned on, the library will attempt to handle any drift of
     * your clock on it's own.  If a request fails due to drift, it'll attempt a fix by requesting
     * binance's server time, calculating the difference with your own clock, and then reattempting
     * the request.
     */
    baseUrl: 'https://api.binance.com/',
    /*
     * Optional, default is 'https://api.binance.com/'. Can be useful in case default url stops working.
     * In february 2018, Binance had a major outage and when service started to be up again, only
     * https://us.binance.com was working.
     */
    requestOptions: {}
    /*
     * Options as supported by the 'request' library
     * For a list of available options, see:
     * https://github.com/request/request
     */
});
const { ValueProcessor } = require('binance');

var simboloFiltro;
var simboloFiltrado1;
var simboloFiltrado2;
var simboloFiltrado3;
var par1 = 'BTCUSDT';
var par2 = 'BTCUSDT';
var par3 = 'BTCUSDT';
var op1;
var op2;
var op3;

// se sacan todos los pares de Binance, esto servirá para poder sacar la posicion exacta
var paresRules = ["ETHBTC", "LTCBTC", "BNBBTC", "NEOBTC", "QTUMETH", "EOSETH", "SNTETH", "BNTETH", "BCCBTC", "GASBTC", "BNBETH", "BTCUSDT", "ETHUSDT", "HSRBTC", "OAXETH", "DNTETH", "MCOETH", "ICNETH", "MCOBTC", "WTCBTC", "WTCETH", "LRCBTC", "LRCETH", "QTUMBTC", "YOYOBTC", "OMGBTC", "OMGETH", "ZRXBTC", "ZRXETH", "STRATBTC", "STRATETH", "SNGLSBTC", "SNGLSETH", "BQXBTC", "BQXETH", "KNCBTC", "KNCETH", "FUNBTC", "FUNETH", "SNMBTC", "SNMETH", "NEOETH", "IOTABTC", "IOTAETH", "LINKBTC", "LINKETH", "XVGBTC", "XVGETH", "SALTBTC", "SALTETH", "MDABTC", "MDAETH", "MTLBTC", "MTLETH", "SUBBTC", "SUBETH", "EOSBTC", "SNTBTC", "ETCETH", "ETCBTC", "MTHBTC", "MTHETH", "ENGBTC", "ENGETH", "DNTBTC", "ZECBTC", "ZECETH", "BNTBTC", "ASTBTC", "ASTETH", "DASHBTC", "DASHETH", "OAXBTC", "ICNBTC", "BTGBTC", "BTGETH", "EVXBTC", "EVXETH", "REQBTC", "REQETH", "VIBBTC", "VIBETH", "HSRETH", "TRXBTC", "TRXETH", "POWRBTC", "POWRETH", "ARKBTC", "ARKETH", "YOYOETH", "XRPBTC", "XRPETH", "MODBTC", "MODETH", "ENJBTC", "ENJETH", "STORJBTC", "STORJETH", "BNBUSDT", "VENBNB", "YOYOBNB", "POWRBNB", "VENBTC", "VENETH", "KMDBTC", "KMDETH", "NULSBNB", "RCNBTC", "RCNETH", "RCNBNB", "NULSBTC", "NULSETH", "RDNBTC", "RDNETH", "RDNBNB", "XMRBTC", "XMRETH", "DLTBNB", "WTCBNB", "DLTBTC", "DLTETH", "AMBBTC", "AMBETH", "AMBBNB", "BCCETH", "BCCUSDT", "BCCBNB", "BATBTC", "BATETH", "BATBNB", "BCPTBTC", "BCPTETH", "BCPTBNB", "ARNBTC", "ARNETH", "GVTBTC", "GVTETH", "CDTBTC", "CDTETH", "GXSBTC", "GXSETH", "NEOUSDT", "NEOBNB", "POEBTC", "POEETH", "QSPBTC", "QSPETH", "QSPBNB", "BTSBTC", "BTSETH", "BTSBNB", "XZCBTC", "XZCETH", "XZCBNB", "LSKBTC", "LSKETH", "LSKBNB", "TNTBTC", "TNTETH", "FUELBTC", "FUELETH", "MANABTC", "MANAETH", "BCDBTC", "BCDETH", "DGDBTC", "DGDETH", "IOTABNB", "ADXBTC", "ADXETH", "ADXBNB", "ADABTC", "ADAETH", "PPTBTC", "PPTETH", "CMTBTC", "CMTETH", "CMTBNB", "XLMBTC", "XLMETH", "XLMBNB", "CNDBTC", "CNDETH", "CNDBNB", "LENDBTC", "LENDETH", "WABIBTC", "WABIETH", "WABIBNB", "LTCETH", "LTCUSDT", "LTCBNB", "TNBBTC", "TNBETH", "WAVESBTC", "WAVESETH", "WAVESBNB", "GTOBTC", "GTOETH", "GTOBNB", "ICXBTC", "ICXETH", "ICXBNB", "OSTBTC", "OSTETH", "OSTBNB", "ELFBTC", "ELFETH", "AIONBTC", "AIONETH", "AIONBNB", "NEBLBTC", "NEBLETH", "NEBLBNB", "BRDBTC", "BRDETH", "BRDBNB", "MCOBNB", "EDOBTC", "EDOETH", "WINGSBTC", "WINGSETH", "NAVBTC", "NAVETH", "NAVBNB", "LUNBTC", "LUNETH", "TRIGBTC", "TRIGETH", "TRIGBNB", "APPCBTC", "APPCETH", "APPCBNB", "VIBEBTC", "VIBEETH", "RLCBTC", "RLCETH", "RLCBNB", "INSBTC", "INSETH", "PIVXBTC", "PIVXETH", "PIVXBNB", "IOSTBTC", "IOSTETH", "CHATBTC", "CHATETH", "STEEMBTC", "STEEMETH", "STEEMBNB", "NANOBTC", "NANOETH", "NANOBNB", "VIABTC", "VIAETH", "VIABNB", "BLZBTC", "BLZETH", "BLZBNB", "AEBTC", "AEETH", "AEBNB", "RPXBTC", "RPXETH", "RPXBNB", "NCASHBTC", "NCASHETH", "NCASHBNB", "POABTC", "POAETH", "POABNB", "ZILBTC", "ZILETH", "ZILBNB", "ONTBTC", "ONTETH", "ONTBNB", "STORMBTC", "STORMETH", "STORMBNB", "QTUMBNB", "QTUMUSDT", "XEMBTC", "XEMETH", "XEMBNB", "WANBTC", "WANETH", "WANBNB", "WPRBTC", "WPRETH", "QLCBTC", "QLCETH", "SYSBTC", "SYSETH", "SYSBNB", "QLCBNB", "GRSBTC", "GRSETH", "ADAUSDT", "ADABNB", "CLOAKBTC", "CLOAKETH", "GNTBTC", "GNTETH", "GNTBNB", "LOOMBTC", "LOOMETH", "LOOMBNB", "XRPUSDT", "BCNBTC", "BCNETH", "BCNBNB", "REPBTC", "REPETH", "REPBNB", "BTCTUSD", "TUSDBTC", "ETHTUSD", "TUSDETH", "TUSDBNB", "ZENBTC", "ZENETH", "ZENBNB", "SKYBTC", "SKYETH", "SKYBNB", "EOSUSDT", "EOSBNB", "CVCBTC", "CVCETH", "CVCBNB", "THETABTC", "THETAETH", "THETABNB", "XRPBNB", "TUSDUSDT", "IOTAUSDT", "XLMUSDT", "IOTXBTC", "IOTXETH", "QKCBTC", "QKCETH", "AGIBTC", "AGIETH", "AGIBNB", "NXSBTC", "NXSETH", "NXSBNB", "ENJBNB", "DATABTC", "DATAETH", "ONTUSDT", "TRXBNB", "TRXUSDT", "ETCUSDT", "ETCBNB", "ICXUSDT", "SCBTC", "SCETH", "SCBNB", "NPXSBTC", "NPXSETH", "VENUSDT", "KEYBTC", "KEYETH", "NASBTC", "NASETH", "NASBNB", "MFTBTC", "MFTETH", "MFTBNB", "DENTBTC", "DENTETH", "ARDRBTC", "ARDRETH", "ARDRBNB", "NULSUSDT", "HOTBTC", "HOTETH", "VETBTC", "VETETH", "VETUSDT", "VETBNB", "DOCKBTC", "DOCKETH", "POLYBTC", "POLYBNB", "PHXBTC", "PHXETH", "PHXBNB", "HCBTC", "HCETH", "GOBTC", "GOBNB", "PAXBTC", "PAXBNB", "PAXUSDT", "PAXETH", "RVNBTC", "RVNBNB", "DCRBTC", "DCRBNB", "USDCBNB", "MITHBTC", "MITHBNB", "BCHABCBTC", "BCHSVBTC", "BCHABCUSDT", "BCHSVUSDT", "BNBPAX", "BTCPAX", "ETHPAX", "XRPPAX", "EOSPAX", "XLMPAX", "RENBTC", "RENBNB", "BNBTUSD", "XRPTUSD", "EOSTUSD", "XLMTUSD", "BNBUSDC", "BTCUSDC", "ETHUSDC", "XRPUSDC", "EOSUSDC", "XLMUSDC", "USDCUSDT", "ADATUSD", "TRXTUSD", "NEOTUSD", "TRXXRP", "XZCXRP", "PAXTUSD", "USDCTUSD", "USDCPAX", "LINKUSDT", "LINKTUSD", "LINKPAX", "LINKUSDC", "WAVESUSDT", "WAVESTUSD", "WAVESPAX", "WAVESUSDC", "BCHABCTUSD", "BCHABCPAX", "BCHABCUSDC", "BCHSVTUSD", "BCHSVPAX", "BCHSVUSDC", "LTCTUSD", "LTCPAX", "LTCUSDC", "TRXPAX", "TRXUSDC", "BTTBTC", "BTTBNB", "BTTUSDT", "BNBUSDS", "BTCUSDS", "USDSUSDT", "USDSPAX", "USDSTUSD", "USDSUSDC", "BTTPAX", "BTTTUSD", "BTTUSDC", "ONGBNB", "ONGBTC", "ONGUSDT", "HOTBNB", "HOTUSDT", "ZILUSDT", "ZRXBNB", "ZRXUSDT", "FETBNB", "FETBTC", "FETUSDT", "BATUSDT", "XMRBNB", "XMRUSDT", "ZECBNB", "ZECUSDT", "ZECPAX", "ZECTUSD", "ZECUSDC", "IOSTBNB", "IOSTUSDT", "CELRBNB", "CELRBTC", "CELRUSDT", "ADAPAX", "ADAUSDC", "NEOPAX", "NEOUSDC", "DASHBNB", "DASHUSDT", "NANOUSDT", "OMGBNB", "OMGUSDT", "THETAUSDT", "ENJUSDT", "MITHUSDT", "MATICBNB", "MATICBTC", "MATICUSDT", "ATOMBNB", "ATOMBTC", "ATOMUSDT", "ATOMUSDC", "ATOMPAX", "ATOMTUSD", "ETCUSDC", "ETCPAX", "ETCTUSD", "BATUSDC", "BATPAX", "BATTUSD", "PHBBNB", "PHBBTC", "PHBUSDC", "PHBTUSD", "PHBPAX", "TFUELBNB", "TFUELBTC", "TFUELUSDT", "TFUELUSDC", "TFUELTUSD", "TFUELPAX", "ONEBNB", "ONEBTC", "ONEUSDT", "ONETUSD", "ONEPAX", "ONEUSDC", "FTMBNB", "FTMBTC", "FTMUSDT", "FTMTUSD", "FTMPAX", "FTMUSDC", "BTCBBTC", "BCPTTUSD", "BCPTPAX", "BCPTUSDC", "ALGOBNB", "ALGOBTC", "ALGOUSDT", "ALGOTUSD", "ALGOPAX", "ALGOUSDC", "USDSBUSDT", "USDSBUSDS", "GTOUSDT", "GTOPAX", "GTOTUSD", "GTOUSDC", "ERDBNB", "ERDBTC", "ERDUSDT", "ERDPAX", "ERDUSDC", "DOGEBNB", "DOGEBTC", "DOGEUSDT", "DOGEPAX", "DOGEUSDC", "DUSKBNB", "DUSKBTC", "DUSKUSDT", "DUSKUSDC", "DUSKPAX", "BGBPUSDC", "ANKRBNB", "ANKRBTC", "ANKRUSDT", "ANKRTUSD", "ANKRPAX", "ANKRUSDC", "ONTPAX", "ONTUSDC", "WINBNB", "WINBTC", "WINUSDT", "WINUSDC", "COSBNB", "COSBTC", "COSUSDT", "TUSDBTUSD", "NPXSUSDT", "NPXSUSDC", "COCOSBNB", "COCOSBTC", "COCOSUSDT", "MTLUSDT", "TOMOBNB", "TOMOBTC", "TOMOUSDT", "TOMOUSDC", "PERLBNB", "PERLBTC", "PERLUSDC", "PERLUSDT", "DENTUSDT", "MFTUSDT", "KEYUSDT", "STORMUSDT", "DOCKUSDT", "WANUSDT", "FUNUSDT", "CVCUSDT", "BTTTRX", "WINTRX", "CHZBNB", "CHZBTC", "CHZUSDT", "BANDBNB", "BANDBTC", "BANDUSDT", "BNBBUSD", "BTCBUSD", "BUSDUSDT", "BEAMBNB", "BEAMBTC", "BEAMUSDT", "XTZBNB", "XTZBTC", "XTZUSDT", "RENUSDT", "RVNUSDT", "HCUSDT", "HBARBNB", "HBARBTC", "HBARUSDT", "NKNBNB", "NKNBTC", "NKNUSDT", "XRPBUSD", "ETHBUSD", "BCHABCBUSD", "LTCBUSD", "LINKBUSD", "ETCBUSD", "STXBNB", "STXBTC", "STXUSDT", "KAVABNB", "KAVABTC", "KAVAUSDT", "BUSDNGN", "BNBNGN", "BTCNGN", "ARPABNB", "ARPABTC", "ARPAUSDT", "TRXBUSD", "EOSBUSD", "IOTXUSDT", "RLCUSDT", "MCOUSDT", "XLMBUSD", "ADABUSD", "CTXCBNB", "CTXCBTC", "CTXCUSDT", "BCHBNB", "BCHBTC", "BCHUSDT", "BCHUSDC", "BCHTUSD", "BCHPAX", "BCHBUSD", "BTCRUB", "ETHRUB", "XRPRUB", "BNBRUB", "TROYBNB", "TROYBTC", "TROYUSDT", "BUSDRUB", "QTUMBUSD", "VETBUSD", "VITEBNB", "VITEBTC", "VITEUSDT", "FTTBNB", "FTTBTC", "FTTUSDT", "BTCTRY", "BNBTRY", "BUSDTRY", "ETHTRY", "XRPTRY", "USDTTRY", "USDTRUB", "BTCEUR", "ETHEUR", "BNBEUR", "XRPEUR", "EURBUSD", "EURUSDT", "OGNBNB", "OGNBTC", "OGNUSDT", "DREPBNB", "DREPBTC", "DREPUSDT", "BULLUSDT", "BULLBUSD", "BEARUSDT", "BEARBUSD", "ETHBULLUSDT", "ETHBULLBUSD", "ETHBEARUSDT", "ETHBEARBUSD", "TCTBNB", "TCTBTC", "TCTUSDT", "WRXBNB", "WRXBTC", "WRXUSDT", "ICXBUSD", "BTSUSDT", "BTSBUSD", "LSKUSDT", "BNTUSDT", "BNTBUSD", "LTOBNB", "LTOBTC", "LTOUSDT", "ATOMBUSD", "DASHBUSD", "NEOBUSD", "WAVESBUSD", "XTZBUSD", "EOSBULLUSDT", "EOSBULLBUSD", "EOSBEARUSDT", "EOSBEARBUSD", "XRPBULLUSDT", "XRPBULLBUSD", "XRPBEARUSDT", "XRPBEARBUSD", "BATBUSD", "ENJBUSD", "NANOBUSD", "ONTBUSD", "RVNBUSD", "STRATBUSD", "STRATBNB", "STRATUSDT", "AIONBUSD", "AIONUSDT", "MBLBNB", "MBLBTC", "MBLUSDT", "COTIBNB", "COTIBTC", "COTIUSDT", "ALGOBUSD", "BTTBUSD", "TOMOBUSD", "XMRBUSD", "ZECBUSD", "BNBBULLUSDT", "BNBBULLBUSD", "BNBBEARUSDT", "BNBBEARBUSD", "STPTBNB", "STPTBTC", "STPTUSDT", "BTCZAR", "ETHZAR", "BNBZAR", "USDTZAR", "BUSDZAR", "BTCBKRW", "ETHBKRW", "BNBBKRW", "WTCUSDT", "DATABUSD", "DATAUSDT", "XZCUSDT", "SOLBNB", "SOLBTC", "SOLBUSD", "BTCIDRT", "BNBIDRT", "USDTIDRT", "BUSDIDRT", "CTSIBTC", "CTSIUSDT", "CTSIBNB", "CTSIBUSD", "HIVEBNB", "HIVEBTC", "HIVEUSDT", "CHRBNB", "CHRBTC", "CHRUSDT", "BTCUPUSDT", "BTCDOWNUSDT", "GXSUSDT", "ARDRUSDT", "ERDBUSD", "LENDUSDT", "HBARBUSD", "MATICBUSD", "WRXBUSD", "ZILBUSD", "MDTBNB", "MDTBTC", "MDTUSDT", "STMXBNB", "STMXBTC", "STMXETH", "STMXUSDT", "KNCBUSD", "KNCUSDT", "REPBUSD", "REPUSDT", "LRCBUSD", "LRCUSDT", "IQBNB", "IQBUSD", "PNTBTC", "PNTUSDT", "BTCGBP", "ETHGBP", "XRPGBP", "BNBGBP", "GBPBUSD", "DGBBNB", "DGBBTC", "DGBBUSD", "BTCUAH", "USDTUAH", "COMPBTC", "COMPBNB", "COMPBUSD", "COMPUSDT", "BTCBIDR", "ETHBIDR", "BNBBIDR", "BUSDBIDR", "USDTBIDR", ];
var parPos1 = 0;
var parPos2 = 0;
var parPos3 = 0;

binanceRest.exchangeInfo((err, data) => { //Con esta función refrescamos el objeto simboloFiltro para tener los datos necesarios para poder aplicar las restricciones de precio y cantidad
    if (err) {
        console.error(err);
    } else {
        simboloFiltro = data;
        //  console.log(simboloFiltro.symbols[1].filters); // esta es la posicion en la que se sacan las restricciones del simbolo en la posicion 1, es solo un ejemplo
    }
});



setTimeout(function() {

    parPos1 = paresRules.indexOf(par1); // sacamos la posicion del par1 en el arreglo paresRules
    console.log(parPos1);
    simboloFiltrado1 = ValueProcessor.processFilters(simboloFiltro.symbols[parPos1], { // se filtra el par con la cantidad y precio, y esta funcion retorna los valores filtrados y formateados para poder tradear
        quantity: '0.0000000000234414211',
        price: 30.000000001 // Puede ser texto o numero
            // Puede ser texto o numero
    });
    parPos2 = paresRules.indexOf(par2); // sacamos la posicion del par1 en el arreglo paresRules
    console.log(parPos2);
    simboloFiltrado2 = ValueProcessor.processFilters(simboloFiltro.symbols[parPos2], { // se filtra el par con la cantidad y precio, y esta funcion retorna los valores filtrados y formateados para poder tradear
        quantity: '0.3568', // Puede ser texto o numero
        price: 0 // Puede ser texto o numero
    });
    parPos3 = paresRules.indexOf(par3); // sacamos la posicion del par1 en el arreglo paresRules
    console.log(parPos3);
    simboloFiltrado3 = ValueProcessor.processFilters(simboloFiltro.symbols[parPos3], { // se filtra el par con la cantidad y precio, y esta funcion retorna los valores filtrados y formateados para poder tradear
        quantity: '1504.2356896', // Puede ser texto o numero
        price: 0 // Puede ser texto o numero
    });


    console.log(simboloFiltrado1); // objeto con cantidad y precio filtrado y formateado correctamente.
    console.log(simboloFiltrado2);
    console.log(simboloFiltrado3);
    console.log(simboloFiltro.symbols[parPos3].filters[2]);

}, 4000);
@bmschwartz
Copy link

bmschwartz commented Jul 24, 2020

Not sure I can answer your question, but I have a code-style recommendation. Comments like the multi-line ones you have in the api.BinanceRest initialization should be above the field they reference. Makes it a little more difficult to read when the rest of the programming world does it differently.

EDIT:
I just noticed that's how the author of the library does it. 🤷‍♂️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants