From ab10d78065b5d33fa1f297dd6f35e02ead29f89d Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 24 Apr 2018 11:21:32 +0000 Subject: [PATCH 001/208] Exchanges: update-products 1011 --- extensions/exchanges/bittrex/products.json | 560 +++++++++++---------- 1 file changed, 288 insertions(+), 272 deletions(-) diff --git a/extensions/exchanges/bittrex/products.json b/extensions/exchanges/bittrex/products.json index 4f9e3c4791..774ff21fcc 100644 --- a/extensions/exchanges/bittrex/products.json +++ b/extensions/exchanges/bittrex/products.json @@ -2,7 +2,7 @@ { "asset": "LTC", "currency": "BTC", - "min_size": "0.01441756", + "min_size": "0.01435906", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LTC" @@ -10,7 +10,7 @@ { "asset": "DOGE", "currency": "BTC", - "min_size": "362.31884058", + "min_size": "396.82539683", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DOGE" @@ -18,7 +18,7 @@ { "asset": "VTC", "currency": "BTC", - "min_size": "0.80796329", + "min_size": "0.84217618", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VTC" @@ -26,7 +26,7 @@ { "asset": "PPC", "currency": "BTC", - "min_size": "0.94693383", + "min_size": "0.84745763", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PPC" @@ -34,7 +34,7 @@ { "asset": "FTC", "currency": "BTC", - "min_size": "8.51208716", + "min_size": "8.80281690", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/FTC" @@ -42,7 +42,7 @@ { "asset": "RDD", "currency": "BTC", - "min_size": "252.52525253", + "min_size": "287.35632184", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/RDD" @@ -50,7 +50,7 @@ { "asset": "NXT", "currency": "BTC", - "min_size": "9.80392157", + "min_size": "11.03752759", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NXT" @@ -58,7 +58,7 @@ { "asset": "DASH", "currency": "BTC", - "min_size": "0.00487329", + "min_size": "0.00437054", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DASH" @@ -66,7 +66,7 @@ { "asset": "POT", "currency": "BTC", - "min_size": "14.35956347", + "min_size": "15.84283904", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/POT" @@ -74,7 +74,7 @@ { "asset": "BLK", "currency": "BTC", - "min_size": "6.80087051", + "min_size": "7.20046083", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BLK" @@ -82,7 +82,7 @@ { "asset": "EMC2", "currency": "BTC", - "min_size": "6.49857031", + "min_size": "6.74763833", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EMC2" @@ -90,7 +90,7 @@ { "asset": "XMY", "currency": "BTC", - "min_size": "215.51724138", + "min_size": "225.22522523", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XMY" @@ -98,7 +98,7 @@ { "asset": "AUR", "currency": "BTC", - "min_size": "1.83688464", + "min_size": "1.55811779", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/AUR" @@ -106,7 +106,7 @@ { "asset": "EFL", "currency": "BTC", - "min_size": "11.01321586", + "min_size": "11.60631383", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EFL" @@ -114,7 +114,7 @@ { "asset": "GLD", "currency": "BTC", - "min_size": "10.23751024", + "min_size": "13.74381528", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GLD" @@ -122,7 +122,7 @@ { "asset": "SLR", "currency": "BTC", - "min_size": "5.29548824", + "min_size": "5.65482922", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SLR" @@ -130,7 +130,7 @@ { "asset": "PTC", "currency": "BTC", - "min_size": "44.64285714", + "min_size": "41.59733777", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PTC" @@ -138,7 +138,7 @@ { "asset": "GRS", "currency": "BTC", - "min_size": "1.43636886", + "min_size": "1.51048275", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GRS" @@ -146,7 +146,7 @@ { "asset": "NLG", "currency": "BTC", - "min_size": "19.59247649", + "min_size": "18.32844575", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NLG" @@ -154,7 +154,7 @@ { "asset": "RBY", "currency": "BTC", - "min_size": "3.29380764", + "min_size": "3.40182338", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/RBY" @@ -162,7 +162,7 @@ { "asset": "XWC", "currency": "BTC", - "min_size": "24.34274586", + "min_size": "31.25000000", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XWC" @@ -170,7 +170,7 @@ { "asset": "MONA", "currency": "BTC", - "min_size": "0.51653960", + "min_size": "0.55545681", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MONA" @@ -178,7 +178,7 @@ { "asset": "THC", "currency": "BTC", - "min_size": "20.37489813", + "min_size": "19.56181534", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/THC" @@ -186,7 +186,7 @@ { "asset": "ENRG", "currency": "BTC", - "min_size": "16.65556296", + "min_size": "18.89644747", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ENRG" @@ -194,7 +194,7 @@ { "asset": "ERC", "currency": "BTC", - "min_size": "3.79939210", + "min_size": "3.80401704", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ERC" @@ -202,7 +202,7 @@ { "asset": "VRC", "currency": "BTC", - "min_size": "3.17299150", + "min_size": "3.13008639", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VRC" @@ -210,7 +210,7 @@ { "asset": "CURE", "currency": "BTC", - "min_size": "5.64206725", + "min_size": "5.70645971", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CURE" @@ -218,7 +218,7 @@ { "asset": "XMR", "currency": "BTC", - "min_size": "0.00873147", + "min_size": "0.00799564", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XMR" @@ -226,7 +226,7 @@ { "asset": "CLOAK", "currency": "BTC", - "min_size": "0.14287592", + "min_size": "0.15339117", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CLOAK" @@ -234,7 +234,7 @@ { "asset": "KORE", "currency": "BTC", - "min_size": "0.63164810", + "min_size": "0.63053293", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/KORE" @@ -242,7 +242,7 @@ { "asset": "XDN", "currency": "BTC", - "min_size": "147.05882353", + "min_size": "162.33766234", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XDN" @@ -250,7 +250,7 @@ { "asset": "TRUST", "currency": "BTC", - "min_size": "20.81598668", + "min_size": "20.97315436", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TRUST" @@ -258,7 +258,7 @@ { "asset": "NAV", "currency": "BTC", - "min_size": "1.51735858", + "min_size": "1.54933069", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NAV" @@ -266,7 +266,7 @@ { "asset": "XST", "currency": "BTC", - "min_size": "6.92328995", + "min_size": "6.49013499", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XST" @@ -274,7 +274,7 @@ { "asset": "VIA", "currency": "BTC", - "min_size": "0.95954556", + "min_size": "0.91790278", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VIA" @@ -282,7 +282,7 @@ { "asset": "PINK", "currency": "BTC", - "min_size": "88.02816901", + "min_size": "89.28571429", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PINK" @@ -290,7 +290,7 @@ { "asset": "IOC", "currency": "BTC", - "min_size": "1.47110745", + "min_size": "1.35113225", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/IOC" @@ -298,7 +298,7 @@ { "asset": "CANN", "currency": "BTC", - "min_size": "32.72251309", + "min_size": "32.46753247", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CANN" @@ -306,7 +306,7 @@ { "asset": "SYS", "currency": "BTC", - "min_size": "4.59558824", + "min_size": "4.35767823", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SYS" @@ -314,7 +314,7 @@ { "asset": "NEOS", "currency": "BTC", - "min_size": "0.62956434", + "min_size": "0.60839093", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NEOS" @@ -322,7 +322,7 @@ { "asset": "DGB", "currency": "BTC", - "min_size": "59.38242280", + "min_size": "63.29113924", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DGB" @@ -330,7 +330,7 @@ { "asset": "BURST", "currency": "BTC", - "min_size": "90.90909091", + "min_size": "86.20689655", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BURST" @@ -338,7 +338,7 @@ { "asset": "EXCL", "currency": "BTC", - "min_size": "1.67728950", + "min_size": "1.69894665", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EXCL" @@ -346,7 +346,7 @@ { "asset": "SWIFT", "currency": "BTC", - "min_size": "2.17391304", + "min_size": "2.41662639", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SWIFT" @@ -354,7 +354,7 @@ { "asset": "DOPE", "currency": "BTC", - "min_size": "31.36762861", + "min_size": "33.64737550", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DOPE" @@ -362,7 +362,7 @@ { "asset": "BLOCK", "currency": "BTC", - "min_size": "0.11230857", + "min_size": "0.11052215", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BLOCK" @@ -370,7 +370,7 @@ { "asset": "ABY", "currency": "BTC", - "min_size": "213.67521368", + "min_size": "233.64485981", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ABY" @@ -378,7 +378,7 @@ { "asset": "BYC", "currency": "BTC", - "min_size": "3.28127051", + "min_size": "3.65070093", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BYC" @@ -386,7 +386,7 @@ { "asset": "XMG", "currency": "BTC", - "min_size": "5.49450549", + "min_size": "6.11097531", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XMG" @@ -394,7 +394,7 @@ { "asset": "BLITZ", "currency": "BTC", - "min_size": "2.24982001", + "min_size": "2.16882103", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BLITZ" @@ -402,7 +402,7 @@ { "asset": "BAY", "currency": "BTC", - "min_size": "30.04807692", + "min_size": "30.26634383", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BAY" @@ -410,7 +410,7 @@ { "asset": "SPR", "currency": "BTC", - "min_size": "5.09683996", + "min_size": "3.53007625", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SPR" @@ -418,7 +418,7 @@ { "asset": "VTR", "currency": "BTC", - "min_size": "5.65355043", + "min_size": "4.84590037", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VTR" @@ -426,7 +426,7 @@ { "asset": "XRP", "currency": "BTC", - "min_size": "2.82741461", + "min_size": "2.56383961", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XRP" @@ -434,7 +434,7 @@ { "asset": "GAME", "currency": "BTC", - "min_size": "1.17918966", + "min_size": "1.21424061", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GAME" @@ -442,7 +442,7 @@ { "asset": "COVAL", "currency": "BTC", - "min_size": "223.21428571", + "min_size": "233.64485981", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/COVAL" @@ -450,7 +450,7 @@ { "asset": "NXS", "currency": "BTC", - "min_size": "0.94428706", + "min_size": "0.93019795", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NXS" @@ -458,7 +458,7 @@ { "asset": "XCP", "currency": "BTC", - "min_size": "0.11573217", + "min_size": "0.10869565", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XCP" @@ -466,7 +466,7 @@ { "asset": "BITB", "currency": "BTC", - "min_size": "189.39393939", + "min_size": "206.61157025", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BITB" @@ -474,7 +474,7 @@ { "asset": "GEO", "currency": "BTC", - "min_size": "0.85144064", + "min_size": "0.75718569", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GEO" @@ -482,7 +482,7 @@ { "asset": "FLDC", "currency": "BTC", - "min_size": "95.78544061", + "min_size": "105.93220339", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/FLDC" @@ -490,7 +490,7 @@ { "asset": "GRC", "currency": "BTC", - "min_size": "41.73622705", + "min_size": "38.46153846", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GRC" @@ -498,7 +498,7 @@ { "asset": "FLO", "currency": "BTC", - "min_size": "21.92982456", + "min_size": "19.34984520", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/FLO" @@ -506,7 +506,7 @@ { "asset": "NBT", "currency": "BTC", - "min_size": "3.49699259", + "min_size": "3.89044507", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NBT" @@ -514,7 +514,7 @@ { "asset": "MUE", "currency": "BTC", - "min_size": "15.31862745", + "min_size": "16.11863314", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MUE" @@ -522,7 +522,7 @@ { "asset": "XEM", "currency": "BTC", - "min_size": "5.42299349", + "min_size": "5.62936276", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XEM" @@ -530,7 +530,7 @@ { "asset": "CLAM", "currency": "BTC", - "min_size": "0.47981882", + "min_size": "0.48923679", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CLAM" @@ -538,7 +538,7 @@ { "asset": "DMD", "currency": "BTC", - "min_size": "0.26681466", + "min_size": "0.25208728", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DMD" @@ -546,7 +546,7 @@ { "asset": "GAM", "currency": "BTC", - "min_size": "0.20258991", + "min_size": "0.24271845", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GAM" @@ -554,7 +554,7 @@ { "asset": "SPHR", "currency": "BTC", - "min_size": "0.76426890", + "min_size": "0.68466889", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SPHR" @@ -562,7 +562,7 @@ { "asset": "OK", "currency": "BTC", - "min_size": "10.15434606", + "min_size": "11.27649977", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/OK" @@ -570,7 +570,7 @@ { "asset": "SNRG", "currency": "BTC", - "min_size": "3.73134328", + "min_size": "5.11875512", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SNRG" @@ -578,7 +578,7 @@ { "asset": "AEON", "currency": "BTC", - "min_size": "1.01754243", + "min_size": "1.03919857", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/AEON" @@ -586,7 +586,7 @@ { "asset": "ETH", "currency": "BTC", - "min_size": "0.00372024", + "min_size": "0.00346548", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ETH" @@ -594,7 +594,7 @@ { "asset": "TX", "currency": "BTC", - "min_size": "1.18253630", + "min_size": "1.25006250", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TX" @@ -602,7 +602,7 @@ { "asset": "BCY", "currency": "BTC", - "min_size": "5.29324582", + "min_size": "5.36711035", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BCY" @@ -610,7 +610,7 @@ { "asset": "EXP", "currency": "BTC", - "min_size": "0.91274188", + "min_size": "0.90619110", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EXP" @@ -618,7 +618,7 @@ { "asset": "OMNI", "currency": "BTC", - "min_size": "0.05326981", + "min_size": "0.05636979", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/OMNI" @@ -626,7 +626,7 @@ { "asset": "AMP", "currency": "BTC", - "min_size": "6.65070497", + "min_size": "7.10227273", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/AMP" @@ -634,7 +634,7 @@ { "asset": "XLM", "currency": "BTC", - "min_size": "5.76701269", + "min_size": "6.02119461", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XLM" @@ -642,7 +642,7 @@ { "asset": "BTC", "currency": "USDT", - "min_size": "0.00036243", + "min_size": "0.00033580", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/BTC" @@ -650,7 +650,7 @@ { "asset": "RVR", "currency": "BTC", - "min_size": "20.08032129", + "min_size": "20.29220779", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/RVR" @@ -658,7 +658,7 @@ { "asset": "EMC", "currency": "BTC", - "min_size": "0.56948905", + "min_size": "0.65269039", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EMC" @@ -666,7 +666,7 @@ { "asset": "FCT", "currency": "BTC", - "min_size": "0.06924651", + "min_size": "0.07386856", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/FCT" @@ -674,7 +674,7 @@ { "asset": "EGC", "currency": "BTC", - "min_size": "8.44880027", + "min_size": "7.45823389", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EGC" @@ -682,7 +682,7 @@ { "asset": "SLS", "currency": "BTC", - "min_size": "0.03412937", + "min_size": "0.03571408", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SLS" @@ -690,7 +690,7 @@ { "asset": "RADS", "currency": "BTC", - "min_size": "0.32510176", + "min_size": "0.36759841", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/RADS" @@ -698,7 +698,7 @@ { "asset": "DCR", "currency": "BTC", - "min_size": "0.03302999", + "min_size": "0.03381646", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DCR" @@ -706,7 +706,7 @@ { "asset": "BSD", "currency": "BTC", - "min_size": "3.02846760", + "min_size": "2.76548673", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BSD" @@ -714,7 +714,7 @@ { "asset": "XVG", "currency": "BTC", - "min_size": "29.79737783", + "min_size": "32.76539974", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XVG" @@ -722,7 +722,7 @@ { "asset": "PIVX", "currency": "BTC", - "min_size": "0.40194218", + "min_size": "0.39782311", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PIVX" @@ -738,7 +738,7 @@ { "asset": "MEME", "currency": "BTC", - "min_size": "7.36160188", + "min_size": "6.92137320", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MEME" @@ -746,7 +746,7 @@ { "asset": "STEEM", "currency": "BTC", - "min_size": "0.67309246", + "min_size": "0.68136600", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/STEEM" @@ -754,7 +754,7 @@ { "asset": "2GIVE", "currency": "BTC", - "min_size": "200.00000000", + "min_size": "221.23893805", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/2GIVE" @@ -762,7 +762,7 @@ { "asset": "LSK", "currency": "BTC", - "min_size": "0.17857143", + "min_size": "0.18243115", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LSK" @@ -770,7 +770,7 @@ { "asset": "BRK", "currency": "BTC", - "min_size": "7.63591936", + "min_size": "8.26446281", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BRK" @@ -778,7 +778,7 @@ { "asset": "WAVES", "currency": "BTC", - "min_size": "0.40392290", + "min_size": "0.40176778", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/WAVES" @@ -786,7 +786,7 @@ { "asset": "LBC", "currency": "BTC", - "min_size": "6.70600858", + "min_size": "7.28226041", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LBC" @@ -794,7 +794,7 @@ { "asset": "SBD", "currency": "BTC", - "min_size": "0.68613459", + "min_size": "0.67383628", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SBD" @@ -802,7 +802,7 @@ { "asset": "BRX", "currency": "BTC", - "min_size": "1.78253119", + "min_size": "1.76978621", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BRX" @@ -810,7 +810,7 @@ { "asset": "ETC", "currency": "BTC", - "min_size": "0.11363636", + "min_size": "0.10775862", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ETC" @@ -818,7 +818,7 @@ { "asset": "ETC", "currency": "ETH", - "min_size": "0.15258547", + "min_size": "0.15618640", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ETC" @@ -826,7 +826,7 @@ { "asset": "STRAT", "currency": "BTC", - "min_size": "0.36295006", + "min_size": "0.36243440", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/STRAT" @@ -834,7 +834,7 @@ { "asset": "UNB", "currency": "BTC", - "min_size": "2.52627324", + "min_size": "2.59956327", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/UNB" @@ -842,7 +842,7 @@ { "asset": "SYNX", "currency": "BTC", - "min_size": "4.09836066", + "min_size": "4.03551251", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SYNX" @@ -850,7 +850,7 @@ { "asset": "EBST", "currency": "BTC", - "min_size": "5.86579071", + "min_size": "4.28522455", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EBST" @@ -858,7 +858,7 @@ { "asset": "VRM", "currency": "BTC", - "min_size": "0.66146316", + "min_size": "0.64452924", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VRM" @@ -866,7 +866,7 @@ { "asset": "SEQ", "currency": "BTC", - "min_size": "10.17087063", + "min_size": "10.63377286", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SEQ" @@ -874,7 +874,7 @@ { "asset": "REP", "currency": "BTC", - "min_size": "0.05361666", + "min_size": "0.05283089", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/REP" @@ -882,7 +882,7 @@ { "asset": "SHIFT", "currency": "BTC", - "min_size": "0.79279508", + "min_size": "0.83333333", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SHIFT" @@ -890,7 +890,7 @@ { "asset": "ARDR", "currency": "BTC", - "min_size": "5.49450549", + "min_size": "5.62556256", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ARDR" @@ -898,7 +898,7 @@ { "asset": "XZC", "currency": "BTC", - "min_size": "0.05265375", + "min_size": "0.04781934", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XZC" @@ -906,7 +906,7 @@ { "asset": "NEO", "currency": "BTC", - "min_size": "0.02821670", + "min_size": "0.02926862", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NEO" @@ -914,7 +914,7 @@ { "asset": "ZEC", "currency": "BTC", - "min_size": "0.00804295", + "min_size": "0.00748989", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ZEC" @@ -922,7 +922,7 @@ { "asset": "ZCL", "currency": "BTC", - "min_size": "0.33332889", + "min_size": "0.14792987", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ZCL" @@ -930,7 +930,7 @@ { "asset": "IOP", "currency": "BTC", - "min_size": "0.76984665", + "min_size": "0.81969901", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/IOP" @@ -938,7 +938,7 @@ { "asset": "GOLOS", "currency": "BTC", - "min_size": "22.52252252", + "min_size": "20.88554720", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GOLOS" @@ -946,7 +946,7 @@ { "asset": "UBQ", "currency": "BTC", - "min_size": "0.82723934", + "min_size": "0.88283071", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/UBQ" @@ -954,7 +954,7 @@ { "asset": "KMD", "currency": "BTC", - "min_size": "0.53651523", + "min_size": "0.54835384", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/KMD" @@ -962,7 +962,7 @@ { "asset": "GBG", "currency": "BTC", - "min_size": "28.90173410", + "min_size": "29.55082742", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GBG" @@ -970,7 +970,7 @@ { "asset": "SIB", "currency": "BTC", - "min_size": "1.73526758", + "min_size": "1.66489078", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SIB" @@ -978,7 +978,7 @@ { "asset": "ION", "currency": "BTC", - "min_size": "0.73065233", + "min_size": "0.72212594", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ION" @@ -986,7 +986,7 @@ { "asset": "LMC", "currency": "BTC", - "min_size": "30.78817734", + "min_size": "30.33980583", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LMC" @@ -994,7 +994,7 @@ { "asset": "QWARK", "currency": "BTC", - "min_size": "17.05320600", + "min_size": "19.11314985", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/QWARK" @@ -1002,7 +1002,7 @@ { "asset": "CRW", "currency": "BTC", - "min_size": "1.31419860", + "min_size": "1.35596898", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CRW" @@ -1010,7 +1010,7 @@ { "asset": "SWT", "currency": "BTC", - "min_size": "1.18063754", + "min_size": "1.16474096", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SWT" @@ -1018,7 +1018,7 @@ { "asset": "MLN", "currency": "BTC", - "min_size": "0.03144654", + "min_size": "0.03410213", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MLN" @@ -1026,7 +1026,7 @@ { "asset": "ARK", "currency": "BTC", - "min_size": "0.67033114", + "min_size": "0.65189048", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ARK" @@ -1034,7 +1034,7 @@ { "asset": "DYN", "currency": "BTC", - "min_size": "1.02274587", + "min_size": "0.98386462", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DYN" @@ -1042,7 +1042,7 @@ { "asset": "TKS", "currency": "BTC", - "min_size": "0.82962766", + "min_size": "0.87062511", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TKS" @@ -1050,7 +1050,7 @@ { "asset": "MUSIC", "currency": "BTC", - "min_size": "116.27906977", + "min_size": "121.35922330", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MUSIC" @@ -1058,7 +1058,7 @@ { "asset": "DTB", "currency": "BTC", - "min_size": "3.03545410", + "min_size": "3.25182102", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DTB" @@ -1066,7 +1066,7 @@ { "asset": "INCNT", "currency": "BTC", - "min_size": "5.66251416", + "min_size": "5.69087184", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/INCNT" @@ -1074,7 +1074,7 @@ { "asset": "GBYTE", "currency": "BTC", - "min_size": "0.00729391", + "min_size": "0.00792858", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GBYTE" @@ -1082,7 +1082,7 @@ { "asset": "GNT", "currency": "BTC", - "min_size": "4.63821892", + "min_size": "3.81679389", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GNT" @@ -1090,7 +1090,7 @@ { "asset": "NXC", "currency": "BTC", - "min_size": "11.08647450", + "min_size": "10.41666667", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NXC" @@ -1098,7 +1098,7 @@ { "asset": "EDG", "currency": "BTC", - "min_size": "3.01386377", + "min_size": "3.13479624", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/EDG" @@ -1106,7 +1106,7 @@ { "asset": "LGD", "currency": "BTC", - "min_size": "2.90090508", + "min_size": "3.17258883", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LGD" @@ -1114,7 +1114,7 @@ { "asset": "TRST", "currency": "BTC", - "min_size": "7.39207569", + "min_size": "7.05616709", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TRST" @@ -1122,7 +1122,7 @@ { "asset": "GNT", "currency": "ETH", - "min_size": "6.16545618", + "min_size": "5.48769111", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/GNT" @@ -1130,7 +1130,7 @@ { "asset": "REP", "currency": "ETH", - "min_size": "0.07047472", + "min_size": "0.07710338", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/REP" @@ -1138,7 +1138,7 @@ { "asset": "ETH", "currency": "USDT", - "min_size": "0.00540540", + "min_size": "0.00464218", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/ETH" @@ -1146,7 +1146,7 @@ { "asset": "WINGS", "currency": "ETH", - "min_size": "5.19545294", + "min_size": "5.28412754", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/WINGS" @@ -1154,7 +1154,7 @@ { "asset": "WINGS", "currency": "BTC", - "min_size": "3.71471025", + "min_size": "3.49993000", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/WINGS" @@ -1162,7 +1162,7 @@ { "asset": "RLC", "currency": "BTC", - "min_size": "1.26646403", + "min_size": "1.49584156", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/RLC" @@ -1170,7 +1170,7 @@ { "asset": "GNO", "currency": "BTC", - "min_size": "0.01881116", + "min_size": "0.02066037", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GNO" @@ -1178,7 +1178,7 @@ { "asset": "GUP", "currency": "BTC", - "min_size": "4.86949747", + "min_size": "4.58547322", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/GUP" @@ -1186,7 +1186,7 @@ { "asset": "LUN", "currency": "BTC", - "min_size": "0.16228708", + "min_size": "0.16367362", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LUN" @@ -1194,7 +1194,7 @@ { "asset": "GUP", "currency": "ETH", - "min_size": "6.54835964", + "min_size": "6.87162431", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/GUP" @@ -1202,7 +1202,7 @@ { "asset": "RLC", "currency": "ETH", - "min_size": "1.68800302", + "min_size": "2.16582416", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/RLC" @@ -1210,7 +1210,7 @@ { "asset": "LUN", "currency": "ETH", - "min_size": "0.21835367", + "min_size": "0.23810658", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/LUN" @@ -1218,7 +1218,7 @@ { "asset": "GNO", "currency": "ETH", - "min_size": "0.02538070", + "min_size": "0.02995681", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/GNO" @@ -1226,7 +1226,7 @@ { "asset": "HMQ", "currency": "BTC", - "min_size": "11.90476190", + "min_size": "11.24606388", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/HMQ" @@ -1234,7 +1234,7 @@ { "asset": "HMQ", "currency": "ETH", - "min_size": "15.67791296", + "min_size": "16.37143512", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/HMQ" @@ -1242,7 +1242,7 @@ { "asset": "ANT", "currency": "BTC", - "min_size": "0.56611037", + "min_size": "0.54221702", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ANT" @@ -1250,7 +1250,7 @@ { "asset": "TRST", "currency": "ETH", - "min_size": "9.80392157", + "min_size": "9.83961429", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/TRST" @@ -1258,7 +1258,7 @@ { "asset": "ANT", "currency": "ETH", - "min_size": "0.74946226", + "min_size": "0.78012978", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ANT" @@ -1266,7 +1266,7 @@ { "asset": "SC", "currency": "BTC", - "min_size": "105.93220339", + "min_size": "109.17030568", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SC" @@ -1274,7 +1274,7 @@ { "asset": "BAT", "currency": "ETH", - "min_size": "7.51936236", + "min_size": "7.31635938", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/BAT" @@ -1282,7 +1282,7 @@ { "asset": "BAT", "currency": "BTC", - "min_size": "5.59159025", + "min_size": "5.08233381", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BAT" @@ -1290,7 +1290,7 @@ { "asset": "ZEN", "currency": "BTC", - "min_size": "0.05560523", + "min_size": "0.06534820", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ZEN" @@ -1298,7 +1298,7 @@ { "asset": "QRL", "currency": "BTC", - "min_size": "1.70149051", + "min_size": "1.74800727", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/QRL" @@ -1306,7 +1306,7 @@ { "asset": "QRL", "currency": "ETH", - "min_size": "2.31761527", + "min_size": "2.55550558", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/QRL" @@ -1314,7 +1314,7 @@ { "asset": "CRB", "currency": "BTC", - "min_size": "7.90139064", + "min_size": "8.18866689", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CRB" @@ -1322,7 +1322,7 @@ { "asset": "CRB", "currency": "ETH", - "min_size": "10.54585337", + "min_size": "12.14152158", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/CRB" @@ -1330,7 +1330,7 @@ { "asset": "LGD", "currency": "ETH", - "min_size": "3.79075057", + "min_size": "4.61650678", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/LGD" @@ -1338,7 +1338,7 @@ { "asset": "PTOY", "currency": "BTC", - "min_size": "10.03613007", + "min_size": "10.92657343", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PTOY" @@ -1346,7 +1346,7 @@ { "asset": "PTOY", "currency": "ETH", - "min_size": "13.63661157", + "min_size": "15.69316720", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/PTOY" @@ -1354,7 +1354,7 @@ { "asset": "CFI", "currency": "BTC", - "min_size": "21.68256722", + "min_size": "20.49180328", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CFI" @@ -1362,7 +1362,7 @@ { "asset": "CFI", "currency": "ETH", - "min_size": "28.90173410", + "min_size": "29.67006883", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/CFI" @@ -1370,7 +1370,7 @@ { "asset": "BNT", "currency": "BTC", - "min_size": "0.58624894", + "min_size": "0.51444563", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BNT" @@ -1378,7 +1378,7 @@ { "asset": "BNT", "currency": "ETH", - "min_size": "0.79185592", + "min_size": "0.74850299", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/BNT" @@ -1386,7 +1386,7 @@ { "asset": "NMR", "currency": "BTC", - "min_size": "0.12077295", + "min_size": "0.12189057", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/NMR" @@ -1394,7 +1394,7 @@ { "asset": "NMR", "currency": "ETH", - "min_size": "0.16286645", + "min_size": "0.17537245", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/NMR" @@ -1402,7 +1402,7 @@ { "asset": "LTC", "currency": "ETH", - "min_size": "0.01944379", + "min_size": "0.02070400", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/LTC" @@ -1410,7 +1410,7 @@ { "asset": "XRP", "currency": "ETH", - "min_size": "3.79722802", + "min_size": "3.73449252", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/XRP" @@ -1418,7 +1418,7 @@ { "asset": "SNT", "currency": "BTC", - "min_size": "15.16990291", + "min_size": "15.03307276", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SNT" @@ -1426,7 +1426,7 @@ { "asset": "SNT", "currency": "ETH", - "min_size": "20.39900453", + "min_size": "21.69385630", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/SNT" @@ -1434,7 +1434,7 @@ { "asset": "DCT", "currency": "BTC", - "min_size": "2.91069973", + "min_size": "2.53369819", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DCT" @@ -1442,7 +1442,7 @@ { "asset": "XEL", "currency": "BTC", - "min_size": "6.00384246", + "min_size": "6.33713561", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/XEL" @@ -1450,7 +1450,7 @@ { "asset": "MCO", "currency": "BTC", - "min_size": "0.14576750", + "min_size": "0.17028001", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MCO" @@ -1458,7 +1458,7 @@ { "asset": "MCO", "currency": "ETH", - "min_size": "0.19976356", + "min_size": "0.24923522", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/MCO" @@ -1466,7 +1466,7 @@ { "asset": "ADT", "currency": "BTC", - "min_size": "41.18616145", + "min_size": "33.60215054", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ADT" @@ -1474,7 +1474,7 @@ { "asset": "ADT", "currency": "ETH", - "min_size": "55.65449688", + "min_size": "49.55401388", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ADT" @@ -1482,7 +1482,7 @@ { "asset": "PAY", "currency": "BTC", - "min_size": "1.32978723", + "min_size": "1.39136242", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PAY" @@ -1490,7 +1490,7 @@ { "asset": "PAY", "currency": "ETH", - "min_size": "1.75358608", + "min_size": "2.01508899", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/PAY" @@ -1498,7 +1498,7 @@ { "asset": "STORJ", "currency": "BTC", - "min_size": "1.96016936", + "min_size": "1.98145359", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/STORJ" @@ -1506,7 +1506,7 @@ { "asset": "STORJ", "currency": "ETH", - "min_size": "2.62565050", + "min_size": "2.87013226", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/STORJ" @@ -1514,7 +1514,7 @@ { "asset": "ADX", "currency": "BTC", - "min_size": "2.36585597", + "min_size": "2.19029262", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ADX" @@ -1522,7 +1522,7 @@ { "asset": "ADX", "currency": "ETH", - "min_size": "3.14001319", + "min_size": "3.15318156", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ADX" @@ -1530,7 +1530,7 @@ { "asset": "DASH", "currency": "ETH", - "min_size": "0.00660536", + "min_size": "0.00643036", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/DASH" @@ -1538,7 +1538,7 @@ { "asset": "SC", "currency": "ETH", - "min_size": "142.00511218", + "min_size": "156.69069257", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/SC" @@ -1546,7 +1546,7 @@ { "asset": "ZEC", "currency": "ETH", - "min_size": "0.01075115", + "min_size": "0.01072884", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ZEC" @@ -1554,7 +1554,7 @@ { "asset": "ZEC", "currency": "USDT", - "min_size": "0.01176891", + "min_size": "0.01001703", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/ZEC" @@ -1562,7 +1562,7 @@ { "asset": "LTC", "currency": "USDT", - "min_size": "0.02097519", + "min_size": "0.01928167", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/LTC" @@ -1570,7 +1570,7 @@ { "asset": "ETC", "currency": "USDT", - "min_size": "0.16528926", + "min_size": "0.14523924", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/ETC" @@ -1578,7 +1578,7 @@ { "asset": "XRP", "currency": "USDT", - "min_size": "4.08997955", + "min_size": "3.47988748", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/XRP" @@ -1586,7 +1586,7 @@ { "asset": "OMG", "currency": "BTC", - "min_size": "0.13261192", + "min_size": "0.14224508", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/OMG" @@ -1594,7 +1594,7 @@ { "asset": "OMG", "currency": "ETH", - "min_size": "0.17856818", + "min_size": "0.20338787", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/OMG" @@ -1602,7 +1602,7 @@ { "asset": "CVC", "currency": "BTC", - "min_size": "5.55432126", + "min_size": "5.40540541", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/CVC" @@ -1610,7 +1610,7 @@ { "asset": "CVC", "currency": "ETH", - "min_size": "7.42302325", + "min_size": "7.75374118", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/CVC" @@ -1618,7 +1618,7 @@ { "asset": "PART", "currency": "BTC", - "min_size": "0.12818738", + "min_size": "0.13450695", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PART" @@ -1626,7 +1626,7 @@ { "asset": "QTUM", "currency": "BTC", - "min_size": "0.11264712", + "min_size": "0.10783485", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/QTUM" @@ -1634,7 +1634,7 @@ { "asset": "QTUM", "currency": "ETH", - "min_size": "0.15105740", + "min_size": "0.15619841", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/QTUM" @@ -1642,7 +1642,7 @@ { "asset": "XMR", "currency": "ETH", - "min_size": "0.01177831", + "min_size": "0.01159747", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/XMR" @@ -1650,7 +1650,7 @@ { "asset": "XEM", "currency": "ETH", - "min_size": "7.20835015", + "min_size": "8.23709659", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/XEM" @@ -1658,7 +1658,7 @@ { "asset": "XLM", "currency": "ETH", - "min_size": "7.69668888", + "min_size": "8.77731941", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/XLM" @@ -1666,7 +1666,7 @@ { "asset": "NEO", "currency": "ETH", - "min_size": "0.03761537", + "min_size": "0.04246609", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/NEO" @@ -1674,7 +1674,7 @@ { "asset": "XMR", "currency": "USDT", - "min_size": "0.01266181", + "min_size": "0.01079137", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/XMR" @@ -1682,7 +1682,7 @@ { "asset": "DASH", "currency": "USDT", - "min_size": "0.00709329", + "min_size": "0.00590621", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/DASH" @@ -1690,7 +1690,7 @@ { "asset": "BCC", "currency": "ETH", - "min_size": "0.00282371", + "min_size": "0.00218614", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/BCC" @@ -1698,7 +1698,7 @@ { "asset": "BCC", "currency": "USDT", - "min_size": "0.00306588", + "min_size": "0.00202703", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/BCC" @@ -1706,7 +1706,7 @@ { "asset": "BCC", "currency": "BTC", - "min_size": "0.00208856", + "min_size": "0.00157040", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BCC" @@ -1714,7 +1714,7 @@ { "asset": "DNT", "currency": "BTC", - "min_size": "24.92522433", + "min_size": "21.15059222", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DNT" @@ -1722,7 +1722,7 @@ { "asset": "DNT", "currency": "ETH", - "min_size": "33.29559832", + "min_size": "30.41362530", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/DNT" @@ -1730,7 +1730,7 @@ { "asset": "NEO", "currency": "USDT", - "min_size": "0.04087193", + "min_size": "0.03931848", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/NEO" @@ -1738,7 +1738,7 @@ { "asset": "WAVES", "currency": "ETH", - "min_size": "0.54347826", + "min_size": "0.58207285", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/WAVES" @@ -1746,7 +1746,7 @@ { "asset": "STRAT", "currency": "ETH", - "min_size": "0.48543689", + "min_size": "0.52966102", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/STRAT" @@ -1754,7 +1754,7 @@ { "asset": "DGB", "currency": "ETH", - "min_size": "79.16402787", + "min_size": "90.92562284", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/DGB" @@ -1762,7 +1762,7 @@ { "asset": "FCT", "currency": "ETH", - "min_size": "0.09307791", + "min_size": "0.10776222", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/FCT" @@ -1770,7 +1770,7 @@ { "asset": "OMG", "currency": "USDT", - "min_size": "0.19146217", + "min_size": "0.19083969", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/OMG" @@ -1778,7 +1778,7 @@ { "asset": "ADA", "currency": "BTC", - "min_size": "7.65696784", + "min_size": "7.82962731", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ADA" @@ -1786,7 +1786,7 @@ { "asset": "MANA", "currency": "BTC", - "min_size": "19.23076923", + "min_size": "15.26251526", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MANA" @@ -1794,7 +1794,7 @@ { "asset": "MANA", "currency": "ETH", - "min_size": "25.59115570", + "min_size": "21.95196909", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/MANA" @@ -1802,7 +1802,7 @@ { "asset": "SALT", "currency": "BTC", - "min_size": "0.60245319", + "min_size": "0.61274510", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SALT" @@ -1810,7 +1810,7 @@ { "asset": "SALT", "currency": "ETH", - "min_size": "0.81037277", + "min_size": "0.88099828", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/SALT" @@ -1818,7 +1818,7 @@ { "asset": "TIX", "currency": "BTC", - "min_size": "3.59298649", + "min_size": "3.73134328", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TIX" @@ -1826,7 +1826,7 @@ { "asset": "TIX", "currency": "ETH", - "min_size": "4.84575948", + "min_size": "5.37617066", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/TIX" @@ -1834,7 +1834,7 @@ { "asset": "RCN", "currency": "BTC", - "min_size": "15.21606817", + "min_size": "15.16990291", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/RCN" @@ -1842,7 +1842,7 @@ { "asset": "RCN", "currency": "ETH", - "min_size": "20.48256933", + "min_size": "21.60293800", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/RCN" @@ -1850,7 +1850,7 @@ { "asset": "VIB", "currency": "BTC", - "min_size": "11.06194690", + "min_size": "11.19068935", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VIB" @@ -1858,7 +1858,7 @@ { "asset": "VIB", "currency": "ETH", - "min_size": "14.67997651", + "min_size": "16.07613658", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/VIB" @@ -1866,7 +1866,7 @@ { "asset": "MER", "currency": "BTC", - "min_size": "7.17360115", + "min_size": "7.53012048", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/MER" @@ -1874,7 +1874,7 @@ { "asset": "POWR", "currency": "BTC", - "min_size": "4.36604960", + "min_size": "4.41384181", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/POWR" @@ -1882,7 +1882,7 @@ { "asset": "POWR", "currency": "ETH", - "min_size": "5.87116319", + "min_size": "6.41025641", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/POWR" @@ -1890,7 +1890,7 @@ { "asset": "BTG", "currency": "BTC", - "min_size": "0.03541312", + "min_size": "0.02793293", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BTG" @@ -1898,7 +1898,7 @@ { "asset": "BTG", "currency": "ETH", - "min_size": "0.04800724", + "min_size": "0.04081633", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/BTG" @@ -1906,7 +1906,7 @@ { "asset": "BTG", "currency": "USDT", - "min_size": "0.05138589", + "min_size": "0.03759398", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/BTG" @@ -1914,7 +1914,7 @@ { "asset": "ADA", "currency": "ETH", - "min_size": "10.29760066", + "min_size": "11.29943503", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ADA" @@ -1922,7 +1922,7 @@ { "asset": "ENG", "currency": "BTC", - "min_size": "0.94346743", + "min_size": "0.90031691", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ENG" @@ -1930,7 +1930,7 @@ { "asset": "ENG", "currency": "ETH", - "min_size": "1.26797031", + "min_size": "1.30303346", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ENG" @@ -1938,7 +1938,7 @@ { "asset": "ADA", "currency": "USDT", - "min_size": "11.04672263", + "min_size": "10.54116218", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/ADA" @@ -1946,7 +1946,7 @@ { "asset": "XVG", "currency": "USDT", - "min_size": "42.85714286", + "min_size": "44.06580494", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/XVG" @@ -1954,7 +1954,7 @@ { "asset": "NXT", "currency": "USDT", - "min_size": "14.42306791", + "min_size": "14.77832585", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/NXT" @@ -1962,7 +1962,7 @@ { "asset": "UKG", "currency": "BTC", - "min_size": "7.94407372", + "min_size": "8.54408749", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/UKG" @@ -1970,7 +1970,7 @@ { "asset": "UKG", "currency": "ETH", - "min_size": "10.57082452", + "min_size": "12.23421175", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/UKG" @@ -1978,7 +1978,7 @@ { "asset": "IGNIS", "currency": "BTC", - "min_size": "17.42160279", + "min_size": "19.57713391", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/IGNIS" @@ -1986,7 +1986,7 @@ { "asset": "SRN", "currency": "BTC", - "min_size": "5.43714659", + "min_size": "5.71297989", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/SRN" @@ -1994,7 +1994,7 @@ { "asset": "SRN", "currency": "ETH", - "min_size": "7.35672773", + "min_size": "8.15620769", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/SRN" @@ -2002,7 +2002,7 @@ { "asset": "WAX", "currency": "BTC", - "min_size": "5.34644996", + "min_size": "6.19732276", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/WAX" @@ -2010,7 +2010,7 @@ { "asset": "WAX", "currency": "ETH", - "min_size": "7.16876712", + "min_size": "8.92124326", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/WAX" @@ -2018,7 +2018,7 @@ { "asset": "ZRX", "currency": "BTC", - "min_size": "2.26449275", + "min_size": "2.23713647", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/ZRX" @@ -2026,7 +2026,7 @@ { "asset": "ZRX", "currency": "ETH", - "min_size": "3.01719196", + "min_size": "3.19394938", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/ZRX" @@ -2034,7 +2034,7 @@ { "asset": "VEE", "currency": "BTC", - "min_size": "42.37288136", + "min_size": "39.61965135", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/VEE" @@ -2042,7 +2042,7 @@ { "asset": "VEE", "currency": "ETH", - "min_size": "57.85697755", + "min_size": "55.75379126", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/VEE" @@ -2050,7 +2050,7 @@ { "asset": "BCPT", "currency": "BTC", - "min_size": "3.84615385", + "min_size": "3.77757631", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/BCPT" @@ -2058,7 +2058,7 @@ { "asset": "BCPT", "currency": "ETH", - "min_size": "5.17346633", + "min_size": "5.47573156", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/BCPT" @@ -2066,7 +2066,7 @@ { "asset": "TRX", "currency": "BTC", - "min_size": "41.39072848", + "min_size": "39.06250000", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TRX" @@ -2074,7 +2074,7 @@ { "asset": "TRX", "currency": "ETH", - "min_size": "55.43237251", + "min_size": "56.69577050", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/TRX" @@ -2082,7 +2082,7 @@ { "asset": "TUSD", "currency": "BTC", - "min_size": "2.07022193", + "min_size": "2.24921278", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/TUSD" @@ -2090,7 +2090,7 @@ { "asset": "LRC", "currency": "BTC", - "min_size": "2.72628135", + "min_size": "2.76946937", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/LRC" @@ -2098,7 +2098,7 @@ { "asset": "LRC", "currency": "ETH", - "min_size": "3.68413684", + "min_size": "4.06309169", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/LRC" @@ -2106,7 +2106,7 @@ { "asset": "TUSD", "currency": "ETH", - "min_size": "2.73201650", + "min_size": "3.23825808", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/TUSD" @@ -2114,7 +2114,7 @@ { "asset": "UP", "currency": "BTC", - "min_size": "8.31669993", + "min_size": "9.39849624", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/UP" @@ -2122,7 +2122,7 @@ { "asset": "UP", "currency": "ETH", - "min_size": "11.49266768", + "min_size": "13.51351351", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/UP" @@ -2130,7 +2130,7 @@ { "asset": "DMT", "currency": "BTC", - "min_size": "3.42559605", + "min_size": "3.60854503", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/DMT" @@ -2138,7 +2138,7 @@ { "asset": "DMT", "currency": "ETH", - "min_size": "4.61199303", + "min_size": "5.18817511", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/DMT" @@ -2146,7 +2146,7 @@ { "asset": "TUSD", "currency": "USDT", - "min_size": "2.99580886", + "min_size": "3.00025937", "max_size": "1000000", "increment": "0.00000001", "label": "USDT/TUSD" @@ -2154,7 +2154,7 @@ { "asset": "POLY", "currency": "BTC", - "min_size": "4.81510015", + "min_size": "4.47227191", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/POLY" @@ -2162,7 +2162,7 @@ { "asset": "POLY", "currency": "ETH", - "min_size": "6.41683778", + "min_size": "6.41617904", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/POLY" @@ -2170,7 +2170,7 @@ { "asset": "PRO", "currency": "BTC", - "min_size": "0.00000001", + "min_size": "1.13352981", "max_size": "1000000", "increment": "0.00000001", "label": "BTC/PRO" @@ -2178,9 +2178,25 @@ { "asset": "PRO", "currency": "ETH", - "min_size": "0.00000001", + "min_size": "1.61290323", "max_size": "1000000", "increment": "0.00000001", "label": "ETH/PRO" + }, + { + "asset": "SC", + "currency": "USDT", + "min_size": "145.77252392", + "max_size": "1000000", + "increment": "0.00000001", + "label": "USDT/SC" + }, + { + "asset": "TRX", + "currency": "USDT", + "min_size": "52.55785963", + "max_size": "1000000", + "increment": "0.00000001", + "label": "USDT/TRX" } ] \ No newline at end of file From 0b5c9734a7aa89c1329ad646775579b25b095f05 Mon Sep 17 00:00:00 2001 From: brucetus <31704711+brucetus@users.noreply.github.com> Date: Wed, 25 Apr 2018 01:44:18 -0700 Subject: [PATCH 002/208] Fix Bittrex error (#1563) I fixed the order cancel error in issue #1514. I changed the cancelOrder and getOrder functions. I also changed 'fistRun' to 'firstRun' --- extensions/exchanges/bittrex/exchange.js | 90 +++++++++++------------- 1 file changed, 41 insertions(+), 49 deletions(-) diff --git a/extensions/exchanges/bittrex/exchange.js b/extensions/exchanges/bittrex/exchange.js index 977e2769d4..6af479a40e 100644 --- a/extensions/exchanges/bittrex/exchange.js +++ b/extensions/exchanges/bittrex/exchange.js @@ -7,9 +7,9 @@ var bittrex_authed = require('node-bittrex-api'), **/ module.exports = function bittrex(conf) { let recoverableErrors = new RegExp(/(ESOCKETTIMEOUT|ESOCKETTIMEDOUT|ETIMEDOUT|ECONNRESET|ECONNREFUSED|ENOTFOUND|Invalid nonce|Rate limit exceeded|URL request error)/) - + let shownWarning = false - let fistRun = true + let firstRun = true let allowGetMarketCall=true let marketRefresh = 15000 @@ -31,7 +31,7 @@ module.exports = function bittrex(conf) { if (error.message) if (error.message.match(/Rate limit exceeded/)) { timeout = 10000 - } + } setTimeout(function () { exchange[method].apply(exchange, args) }, timeout) @@ -43,13 +43,13 @@ module.exports = function bittrex(conf) { if (err) { if (err.message && err.message.match(recoverableErrors)) { - + return retry(command, args, err) } - return callback(err, []) + return callback(err, []) } - - + + if (typeof data !== 'object') { console.log(`bittrex API ${command} had an abnormal response, quitting.`) return callback(null, []) @@ -103,7 +103,7 @@ module.exports = function bittrex(conf) { //accomplish back trades using 2 calls. //ticks and getMarket and create a hybrid result. var trades = [] - // first run do the full deal. + // first run do the full deal. // 2nd run. only return the last trades if (allowGetMarketCall != true) { @@ -111,7 +111,7 @@ module.exports = function bittrex(conf) { return null } - if (fistRun) + if (firstRun) { bittrex_public.getticks(args, function( data, err) { let res = handleErrors('getTrades', err, data, func_args, cb) @@ -126,13 +126,13 @@ module.exports = function bittrex(conf) { if (res) { let lastVal = 0 - + for (const key in Object.keys(data.result)) { - + var trade = data.result[key] if (isNaN(opts.from) || new Date(trade.T).getTime() > new Date(opts.from).getTime()) { let buySell = 'sell' - //todo: unsure about the >. if the price is greater than the last one should this one be a buy or sell. figure it out. + //todo: unsure about the >. if the price is greater than the last one should this one be a buy or sell. figure it out. if (parseFloat(trade.C) > lastVal) buySell = 'buy' trades.push({ trade_id: new Date(trade.T).getTime(), @@ -148,16 +148,16 @@ module.exports = function bittrex(conf) { } - + bittrex_public.getmarkethistory(args, function( data, err) { let res2 = handleErrors('getTrades', err, data, func_args, cb) - + if (res2) { for (const key in Object.keys(data.result)) { var trade = data.result[key] if (isNaN(opts.from) || new Date(trade.TimeStamp).getTime() > new Date(opts.from).getTime()) { - + trades.push({ //trade_id: trade.Id, trade_id: new Date(trade.TimeStamp).getTime(), @@ -171,7 +171,7 @@ module.exports = function bittrex(conf) { }) } } - fistRun = false + firstRun = false allowGetMarketCall = false setTimeout(()=>{allowGetMarketCall = true},marketRefresh) //make sure all times come out sorted correctly. there is a chance they can appear in the array out of order otherwise. @@ -181,21 +181,21 @@ module.exports = function bittrex(conf) { return 0 } ) - cb(null, trades) - + cb(null, trades) + } }) - + } }) } else { bittrex_public.getmarkethistory(args, function( data, err) { let res2 = handleErrors('getTrades', err, data, func_args, cb) - + if (res2) { - + for (const key in Object.keys(data.result)) { var trade = data.result[key] if (isNaN(opts.from) || new Date(trade.TimeStamp).getTime() > new Date(opts.from).getTime()) { @@ -210,12 +210,12 @@ module.exports = function bittrex(conf) { side: trade.OrderType || trade.OrderType == 'SELL' ? 'sell': 'buy' }) } - + } allowGetMarketCall = false - - + + setTimeout(()=>{allowGetMarketCall = true},marketRefresh) //Sorting at this point may be redundant. trades = trades.sort((a, b) => { @@ -225,18 +225,18 @@ module.exports = function bittrex(conf) { } ) cb(null, trades) - + } }) } - + }, getBalance: function (opts, cb) { var func_args = [].slice.call(arguments) bittrex_authed.getbalances(function( data,err ) { - + let res = handleErrors('getBalance', err, data, func_args, cb) var balance = { @@ -269,7 +269,7 @@ module.exports = function bittrex(conf) { } cb(null, balance) } - + }) }, @@ -327,14 +327,11 @@ module.exports = function bittrex(conf) { let args = { uuid: opts.order_id } - bittrex_authed.cancel(args, function( data,err ) { - - let res = handleErrors('cancelOrder', err, data, func_args, cb) - - - if (res) { - cb(null) + bittrex_authed.cancel(args, function (data, err) { + if (err) { + return retry('cancelOrder', func_args, err) } + cb() }) }, @@ -360,7 +357,7 @@ module.exports = function bittrex(conf) { data.message = err.message data.success = err.success data.result = err.result - } + } console.log('API Error') console.log(JSON.stringify(err)) if (err.message && err.message.match(recoverableErrors)) { @@ -378,11 +375,11 @@ module.exports = function bittrex(conf) { return cb(null, returnResult) } } - + if (typeof data !== 'object') { return cb(null, {}) } - + if(!data.success) { if (data.message && data.message.match(recoverableErrors)) { return retry('trade', func_args, data.message) @@ -390,7 +387,7 @@ module.exports = function bittrex(conf) { console.log(data.message) return cb(null, []) } - + var order = { id: data && data.result ? data.result.uuid : null, @@ -414,7 +411,7 @@ module.exports = function bittrex(conf) { if (opts.order_type === 'taker') { bittrex_authed.buymarket(params, fn) } - } + } if (type === 'sell') { if (opts.order_type === 'maker') { bittrex_authed.selllimit(params, fn) @@ -433,31 +430,26 @@ module.exports = function bittrex(conf) { exchange.trade('sell', opts, cb) }, - getOrder: function (opts, cb) { + getOrder: function(opts, cb) { var func_args = [].slice.call(arguments) var order = orders['~' + opts.order_id] if (!order) return cb(new Error('order not found in cache')) var params = { uuid: opts.order_id } - bittrex_authed.getorder(params, function (data,err) { + bittrex_authed.getorder(params, function(data, err) { let res = handleErrors('getOrder', err, data, func_args, cb) - - if (res) - { + if (res) { var orderData = data.result - if (!orderData) { return cb('Order not found') } - - if (orderData.IsOpen === false) { + if (orderData.QuantityRemaining == 0) { order.status = 'done' order.done_at = new Date().getTime() order.filled_size = parseFloat(orderData.Quantity) - parseFloat(orderData.QuantityRemaining) return cb(null, order) } - cb(null, order) } }) From 4d9a12d18a951bf3c09a1cb7be3a0072abe5d243 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Thu, 26 Apr 2018 11:21:47 +0000 Subject: [PATCH 003/208] Exchanges: update-products 1019 --- extensions/exchanges/bitfinex/products.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 28b4e044d6..563f77f47b 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -482,7 +482,7 @@ { "asset": "GNT", "currency": "USD", - "min_size": "50.0", + "min_size": "46.0", "max_size": "200000.0", "increment": "0.000001", "label": "GNT/USD" @@ -490,7 +490,7 @@ { "asset": "GNT", "currency": "BTC", - "min_size": "50.0", + "min_size": "46.0", "max_size": "200000.0", "increment": "0.000000001", "label": "GNT/BTC" @@ -498,7 +498,7 @@ { "asset": "GNT", "currency": "ETH", - "min_size": "50.0", + "min_size": "46.0", "max_size": "200000.0", "increment": "0.000000001", "label": "GNT/ETH" @@ -1210,7 +1210,7 @@ { "asset": "ODE", "currency": "USD", - "min_size": "174.0", + "min_size": "148.0", "max_size": "200000.0", "increment": "0.0000001", "label": "ODE/USD" @@ -1218,7 +1218,7 @@ { "asset": "ODE", "currency": "BTC", - "min_size": "174.0", + "min_size": "148.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "ODE/BTC" @@ -1226,7 +1226,7 @@ { "asset": "ODE", "currency": "ETH", - "min_size": "174.0", + "min_size": "148.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "ODE/ETH" From 61b7850c8421d14335c9f929aa8c4caddc70c060 Mon Sep 17 00:00:00 2001 From: brucetus <31704711+brucetus@users.noreply.github.com> Date: Thu, 26 Apr 2018 04:41:06 -0700 Subject: [PATCH 004/208] Bittrex code cleanup (#1566) This time there are no functional changes, I just wanted to clean up the code. I also combined the warning messages and made it more clear. --- extensions/exchanges/bittrex/exchange.js | 595 ++++++++++------------- 1 file changed, 265 insertions(+), 330 deletions(-) diff --git a/extensions/exchanges/bittrex/exchange.js b/extensions/exchanges/bittrex/exchange.js index 6af479a40e..6468e53346 100644 --- a/extensions/exchanges/bittrex/exchange.js +++ b/extensions/exchanges/bittrex/exchange.js @@ -1,21 +1,17 @@ var bittrex_authed = require('node-bittrex-api'), - bittrex_public = require('node-bittrex-api'), - n = require('numbro') +bittrex_public = require('node-bittrex-api'), +n = require('numbro') -/** - ** Bittrex API - **/ module.exports = function bittrex(conf) { let recoverableErrors = new RegExp(/(ESOCKETTIMEOUT|ESOCKETTIMEDOUT|ETIMEDOUT|ECONNRESET|ECONNREFUSED|ENOTFOUND|Invalid nonce|Rate limit exceeded|URL request error)/) - let shownWarning = false let firstRun = true - let allowGetMarketCall=true + let allowGetMarketCall = true let marketRefresh = 15000 bittrex_authed.options({ - 'apikey' : conf.bittrex.key.trim(), - 'apisecret' : conf.bittrex.secret.trim(), + 'apikey': conf.bittrex.key.trim(), + 'apisecret': conf.bittrex.secret.trim(), 'stream': false, 'cleartext': false, 'verbose': false @@ -28,10 +24,10 @@ module.exports = function bittrex(conf) { function retry(method, args, error) { var timeout = 2500 if (error) - if (error.message) - if (error.message.match(/Rate limit exceeded/)) { - timeout = 10000 - } + if (error.message) + if (error.message.match(/Rate limit exceeded/)) { + timeout = 10000 + } setTimeout(function () { exchange[method].apply(exchange, args) }, timeout) @@ -39,47 +35,33 @@ module.exports = function bittrex(conf) { } function handleErrors(command, err, data, args, callback) { - - if (err) - { + if (err) { if (err.message && err.message.match(recoverableErrors)) { - return retry(command, args, err) } return callback(err, []) } - - if (typeof data !== 'object') { - console.log(`bittrex API ${command} had an abnormal response, quitting.`) + console.log(`Bittrex API ${command} had an abnormal response, quitting.`) return callback(null, []) } - // generic error handler data was null and err was null - if (data == null) - { + if (data == null) { return retry(command, args, err) } - // specific handlers - if ((command == 'getQuote' || command == 'getTrades') && data.result == null ) - { - + if ((command == 'getQuote' || command == 'getTrades') && data.result == null ) { return retry(command, args, data) } - - if(!data.success) { + if (!data.success) { if (data.message && data.message.match(recoverableErrors)) { return retry(command, args, data.message) } return callback(null, []) } - - return true } - var orders = {} var exchange = { @@ -88,377 +70,330 @@ module.exports = function bittrex(conf) { makerFee: 0.25, takerFee: 0.25, - getProducts: function () { + getProducts: function() { return require('./products.json') }, - getTrades: function (opts, cb) { + getTrades: function (opts, cb) { var func_args = [].slice.call(arguments) var args = { market:joinProduct(opts.product_id), marketName: joinProduct(opts.product_id), tickInterval: 'oneMin' } - - //accomplish back trades using 2 calls. - //ticks and getMarket and create a hybrid result. + // accomplish back trades using 2 calls. ticks and getMarket and create a hybrid result. var trades = [] - // first run do the full deal. - // 2nd run. only return the last trades - if (allowGetMarketCall != true) - { + // first run do the full deal. 2nd run only returns the last trades + if (allowGetMarketCall != true) { cb(null, []) return null } - - if (firstRun) - { - bittrex_public.getticks(args, function( data, err) { + if (firstRun) { + bittrex_public.getticks(args, function(data, err) { let res = handleErrors('getTrades', err, data, func_args, cb) - if (!shownWarning) { - console.log('Please note: the bittrex api does not support backfilling directly.') - console.log('Backfill is indirectly supported thru the use of a hybrid system that combines a low resolution long term market of about 10 days and a short term high res market of the last 1-5 minutes.') - console.log('Please note: make sure to set the --period_length=1m to make sure data for trade/paper is fetched.') + console.log('Bittrex backfill is indirectly supported through the use of a hybrid system that combines a low resolution') + console.log('long term market of about 10 days and a short term high resolution market of the last 1-5 minutes.') shownWarning = true } - - if (res) - { + if (res) { let lastVal = 0 - for (const key in Object.keys(data.result)) { - var trade = data.result[key] if (isNaN(opts.from) || new Date(trade.T).getTime() > new Date(opts.from).getTime()) { let buySell = 'sell' - //todo: unsure about the >. if the price is greater than the last one should this one be a buy or sell. figure it out. + // todo: unsure about the >. if the price is greater than the last one should this one be a buy or sell. figure it out. if (parseFloat(trade.C) > lastVal) buySell = 'buy' trades.push({ trade_id: new Date(trade.T).getTime(), time: new Date(trade.T).getTime(), size: parseFloat(trade.V), price: parseFloat(trade.C), - //selector should get overwritten by backfill, but was a point where it was missing in the backfill function so this was put in so it is never missed + // selector should get overwritten by backfill, but was a point where it was missing in the backfill function so this was put in so it is never missed selector: 'bittrex.'+opts.product_id, side: buySell }) lastVal = parseFloat(trade.C) } } - - - - bittrex_public.getmarkethistory(args, function( data, err) { + bittrex_public.getmarkethistory(args, function(data, err) { let res2 = handleErrors('getTrades', err, data, func_args, cb) - - if (res2) - { + if (res2) { for (const key in Object.keys(data.result)) { var trade = data.result[key] if (isNaN(opts.from) || new Date(trade.TimeStamp).getTime() > new Date(opts.from).getTime()) { - trades.push({ - //trade_id: trade.Id, + // trade_id: trade.Id, trade_id: new Date(trade.TimeStamp).getTime(), time: new Date(trade.TimeStamp).getTime(), size: parseFloat(trade.Quantity), price: parseFloat(trade.Price), - //selector should get overwritten by backfill, but was a point where it was missing in the backfill function so this was put in so it is never missed + // selector should get overwritten by backfill, but was a point where it was missing in the backfill function so this was put in so it is never missed selector: 'bittrex.'+opts.product_id, side: trade.OrderType || trade.OrderType == 'SELL' ? 'sell': 'buy' - //selector: + // selector: }) } } firstRun = false allowGetMarketCall = false setTimeout(()=>{allowGetMarketCall = true},marketRefresh) - //make sure all times come out sorted correctly. there is a chance they can appear in the array out of order otherwise. + // make sure all times come out sorted correctly. there is a chance they can appear in the array out of order otherwise. trades = trades.sort((a, b) => { - if (a.time < b.time) {return 1} - if (a.time > b.time) {return -1} + if (a.time < b.time) return 1 + if (a.time > b.time) return -1 return 0 } - ) - cb(null, trades) - - } - }) - - } - }) - } else - { - bittrex_public.getmarkethistory(args, function( data, err) { - let res2 = handleErrors('getTrades', err, data, func_args, cb) - - if (res2) - { - - for (const key in Object.keys(data.result)) { - var trade = data.result[key] - if (isNaN(opts.from) || new Date(trade.TimeStamp).getTime() > new Date(opts.from).getTime()) { - trades.push({ - //trade_id: trade.Id, - trade_id: new Date(trade.TimeStamp).getTime(), - time: new Date(trade.TimeStamp).getTime(), - size: parseFloat(trade.Quantity), - price: parseFloat(trade.Price), - //selector should get overwritten by backfill, but was a point where it was missing in the backfill function so this was put in so it is never missed - selector: 'bittrex.'+opts.product_id, - side: trade.OrderType || trade.OrderType == 'SELL' ? 'sell': 'buy' - }) - } - - } - - allowGetMarketCall = false - - - setTimeout(()=>{allowGetMarketCall = true},marketRefresh) - //Sorting at this point may be redundant. - trades = trades.sort((a, b) => { - if (a.time < b.time) {return 1} - if (a.time > b.time) {return -1} - return 0 + ) + cb(null, trades) } - ) - cb(null, trades) - - } - }) - } - - }, - - getBalance: function (opts, cb) { - var func_args = [].slice.call(arguments) - - bittrex_authed.getbalances(function( data,err ) { - - let res = handleErrors('getBalance', err, data, func_args, cb) - - var balance = { - asset: 0, - currency: 0 + }) } - if (res) - { - for (const key in data.result) { - var _balance = data.result[key] - if(opts.last_signal === 'buy') { - if (_balance['Currency'] === opts.currency.toUpperCase()) { - balance.currency = n(_balance.Available).format('0.00000000'), - balance.currency_hold = 0 - } - if (_balance['Currency'] === opts.asset.toUpperCase()) { - balance.asset = n(_balance.Available).format('0.00000000'), - balance.asset_hold = 0 - } - } else { - if (_balance['Currency'] === opts.asset.toUpperCase()) { - balance.asset = n(_balance.Available).format('0.00000000'), - balance.asset_hold = 0 - } - if (_balance['Currency'] === opts.currency.toUpperCase()) { - balance.currency = n(_balance.Available).format('0.00000000'), - balance.currency_hold = 0 - } + }) + } + else { + bittrex_public.getmarkethistory(args, function(data, err) { + let res2 = handleErrors('getTrades', err, data, func_args, cb) + if (res2) { + for (const key in Object.keys(data.result)) { + var trade = data.result[key] + if (isNaN(opts.from) || new Date(trade.TimeStamp).getTime() > new Date(opts.from).getTime()) { + trades.push({ + // trade_id: trade.Id, + trade_id: new Date(trade.TimeStamp).getTime(), + time: new Date(trade.TimeStamp).getTime(), + size: parseFloat(trade.Quantity), + price: parseFloat(trade.Price), + // selector should get overwritten by backfill, but was a point where it was missing in the backfill function so this was put in so it is never missed + selector: 'bittrex.'+opts.product_id, + side: trade.OrderType || trade.OrderType == 'SELL' ? 'sell': 'buy' + }) } } - cb(null, balance) - } - - }) - }, - - getOrderBook: function (opts, cb) { - var args = { - market: joinProduct(opts.product_id), - type: 'both', - depth: 10 - } - bittrex_public.getorderbook(args, function( data ) { - if (typeof data !== 'object') { - console.log('bittrex API (getorderbook) had an abnormal response, quitting.') - return cb(null, []) - } - - if(!data.success) { - if (data.message && data.message.match(recoverableErrors)) { - return retry('getOrderBook', args, data.message) + allowGetMarketCall = false + setTimeout(()=>{allowGetMarketCall = true},marketRefresh) + // Sorting at this point may be redundant. + trades = trades.sort((a, b) => { + if (a.time < b.time) return 1 + if (a.time > b.time) return -1 + return 0 } - console.log(data.message) - return cb(null, []) - } - if(typeof data.result.buy[0].Rate === 'undefined') { - console.log(data.message) - return cb(null, []) - } - cb(null, { - buyOrderRate: data.result.buy[0].Rate, - buyOrderAmount: data.result.buy[0].Quantity, - sellOrderRate: data.result.sell[0].Rate, - sellOrderAmount: data.result.sell[0].Quantity - }) - }) - }, - - getQuote: function (opts, cb) { - if (opts == null) return - if (opts.product_id == null) return - var func_args = [].slice.call(arguments) - var args = { - market: joinProduct(opts.product_id) - } - bittrex_public.getticker(args, function( data, err ) { - let res = handleErrors('getQuote', err, data, func_args, cb) - if (res) - cb(null, { - bid: data.result.Bid, - ask: data.result.Ask - }) - }) - }, - - cancelOrder: function (opts, cb) { - var func_args = [].slice.call(arguments) - let args = { - uuid: opts.order_id - } - bittrex_authed.cancel(args, function (data, err) { - if (err) { - return retry('cancelOrder', func_args, err) - } - cb() - }) - }, - - trade: function (type, opts, cb) { - var func_args = [].slice.call(arguments) - - var params = { - market: joinProduct(opts.product_id), - quantity: opts.size, - rate: opts.price + ) + cb(null, trades) } - - if(!('order_type' in opts) || !opts.order_type) { - opts.order_type = 'maker' - } - - var fn = function(data,err) { - if (err != null ) - { - if (data == null) - { - data = {} - data.message = err.message - data.success = err.success - data.result = err.result + }) + } +}, + +getBalance: function (opts, cb) { + var func_args = [].slice.call(arguments) + bittrex_authed.getbalances(function(data,err ) { + let res = handleErrors('getBalance', err, data, func_args, cb) + var balance = { + asset: 0, + currency: 0 + } + if (res) { + for (const key in data.result) { + var _balance = data.result[key] + if (opts.last_signal === 'buy') { + if (_balance['Currency'] === opts.currency.toUpperCase()) { + balance.currency = n(_balance.Available).format('0.00000000'), + balance.currency_hold = 0 } - console.log('API Error') - console.log(JSON.stringify(err)) - if (err.message && err.message.match(recoverableErrors)) { - return retry('trade', func_args, err.message) + if (_balance['Currency'] === opts.asset.toUpperCase()) { + balance.asset = n(_balance.Available).format('0.00000000'), + balance.asset_hold = 0 } } - if (err && err.message) - { - if (err.message =='MIN_TRADE_REQUIREMENT_NOT_MET') - { - let returnResult = { - reject_reason:'balance', - status:'rejected' - } - return cb(null, returnResult) + else { + if (_balance['Currency'] === opts.asset.toUpperCase()) { + balance.asset = n(_balance.Available).format('0.00000000'), + balance.asset_hold = 0 } - } - - if (typeof data !== 'object') { - return cb(null, {}) - } - - if(!data.success) { - if (data.message && data.message.match(recoverableErrors)) { - return retry('trade', func_args, data.message) + if (_balance['Currency'] === opts.currency.toUpperCase()) { + balance.currency = n(_balance.Available).format('0.00000000'), + balance.currency_hold = 0 } - console.log(data.message) - return cb(null, []) - } - - - var order = { - id: data && data.result ? data.result.uuid : null, - status: 'open', - price: opts.price, - size: opts.size, - post_only: !!opts.post_only, - created_at: new Date().getTime(), - filled_size: '0', - ordertype: opts.order_type } + } + cb(null, balance) + } + }) +}, - orders['~' + data.result.uuid] = order - cb(null, order) +getOrderBook: function (opts, cb) { + var args = { + market: joinProduct(opts.product_id), + type: 'both', + depth: 10 + } + bittrex_public.getorderbook(args, function(data) { + if (typeof data !== 'object') { + console.log('Bittrex API (getorderbook) had an abnormal response, quitting.') + return cb(null, []) + } + if (!data.success) { + if (data.message && data.message.match(recoverableErrors)) { + return retry('getOrderBook', args, data.message) } + console.log(data.message) + return cb(null, []) + } + if (typeof data.result.buy[0].Rate === 'undefined') { + console.log(data.message) + return cb(null, []) + } + cb(null, { + buyOrderRate: data.result.buy[0].Rate, + buyOrderAmount: data.result.buy[0].Quantity, + sellOrderRate: data.result.sell[0].Rate, + sellOrderAmount: data.result.sell[0].Quantity + }) + }) +}, + +getQuote: function (opts, cb) { + if (opts == null) return + if (opts.product_id == null) return + var func_args = [].slice.call(arguments) + var args = { + market: joinProduct(opts.product_id) + } + bittrex_public.getticker(args, function(data, err ) { + let res = handleErrors('getQuote', err, data, func_args, cb) + if (res) + cb(null, { + bid: data.result.Bid, + ask: data.result.Ask + }) + }) +}, - if (type === 'buy') { - if (opts.order_type === 'maker') { - bittrex_authed.buylimit(params, fn) - } - if (opts.order_type === 'taker') { - bittrex_authed.buymarket(params, fn) - } +cancelOrder: function (opts, cb) { + var func_args = [].slice.call(arguments) + let args = { + uuid: opts.order_id + } + bittrex_authed.cancel(args, function (data, err) { + if (err) { + return retry('cancelOrder', func_args, err) + } + cb() + }) +}, + +trade: function (type, opts, cb) { + var func_args = [].slice.call(arguments) + var params = { + market: joinProduct(opts.product_id), + quantity: opts.size, + rate: opts.price + } + if (!('order_type' in opts) || !opts.order_type) { + opts.order_type = 'maker' + } + var fn = function(data,err) { + if (err != null ) { + if (data == null) { + data = {} + data.message = err.message + data.success = err.success + data.result = err.result } - if (type === 'sell') { - if (opts.order_type === 'maker') { - bittrex_authed.selllimit(params, fn) - } - if (opts.order_type === 'taker') { - bittrex_authed.sellmarket(params, fn) + console.log('API Error') + console.log(JSON.stringify(err)) + if (err.message && err.message.match(recoverableErrors)) { + return retry('trade', func_args, err.message) + } + } + if (err && err.message) { + if (err.message =='MIN_TRADE_REQUIREMENT_NOT_MET') { + let returnResult = { + reject_reason:'balance', + status:'rejected' } + return cb(null, returnResult) } - }, - - buy: function (opts, cb) { - exchange.trade('buy', opts, cb) - }, - - sell: function (opts, cb) { - exchange.trade('sell', opts, cb) - }, - - getOrder: function(opts, cb) { - var func_args = [].slice.call(arguments) - var order = orders['~' + opts.order_id] - if (!order) return cb(new Error('order not found in cache')) - var params = { - uuid: opts.order_id + } + if (typeof data !== 'object') { + return cb(null, {}) + } + if (!data.success) { + if (data.message && data.message.match(recoverableErrors)) { + return retry('trade', func_args, data.message) } - bittrex_authed.getorder(params, function(data, err) { - let res = handleErrors('getOrder', err, data, func_args, cb) - if (res) { - var orderData = data.result - if (!orderData) { - return cb('Order not found') - } - if (orderData.QuantityRemaining == 0) { - order.status = 'done' - order.done_at = new Date().getTime() - order.filled_size = parseFloat(orderData.Quantity) - parseFloat(orderData.QuantityRemaining) - return cb(null, order) - } - cb(null, order) - } - }) - }, - - // return the property used for range querying. - getCursor: function (trade) { - return (trade.time || trade) + console.log(data.message) + return cb(null, []) + } + var order = { + id: data && data.result ? data.result.uuid : null, + status: 'open', + price: opts.price, + size: opts.size, + post_only: !!opts.post_only, + created_at: new Date().getTime(), + filled_size: '0', + ordertype: opts.order_type } + orders['~' + data.result.uuid] = order + cb(null, order) } - return exchange + if (type === 'buy') { + if (opts.order_type === 'maker') { + bittrex_authed.buylimit(params, fn) + } + if (opts.order_type === 'taker') { + bittrex_authed.buymarket(params, fn) + } + } + if (type === 'sell') { + if (opts.order_type === 'maker') { + bittrex_authed.selllimit(params, fn) + } + if (opts.order_type === 'taker') { + bittrex_authed.sellmarket(params, fn) + } + } +}, + +buy: function (opts, cb) { + exchange.trade('buy', opts, cb) +}, + +sell: function (opts, cb) { + exchange.trade('sell', opts, cb) +}, + +getOrder: function(opts, cb) { + var func_args = [].slice.call(arguments) + var order = orders['~' + opts.order_id] + if (!order) return cb(new Error('order not found in cache')) + var params = { + uuid: opts.order_id + } + bittrex_authed.getorder(params, function(data, err) { + let res = handleErrors('getOrder', err, data, func_args, cb) + if (res) { + var orderData = data.result + if (!orderData) { + return cb('Order not found') + } + if (orderData.QuantityRemaining == 0) { + order.status = 'done' + order.done_at = new Date().getTime() + order.filled_size = parseFloat(orderData.Quantity) - parseFloat(orderData.QuantityRemaining) + return cb(null, order) + } + cb(null, order) + } + }) +}, + +// return the property used for range querying. +getCursor: function (trade) { + return (trade.time || trade) +} +} +return exchange } From f338ec77cb87b6b8f0bc359a55de6bb36099600b Mon Sep 17 00:00:00 2001 From: Travis CI Date: Fri, 27 Apr 2018 11:21:55 +0000 Subject: [PATCH 005/208] Exchanges: update-products 1023 --- extensions/exchanges/binance/products.json | 30 ++++++ extensions/exchanges/bitfinex/products.json | 108 ++++++++++++++++++-- 2 files changed, 132 insertions(+), 6 deletions(-) diff --git a/extensions/exchanges/binance/products.json b/extensions/exchanges/binance/products.json index ff378f626c..1caf8a9497 100644 --- a/extensions/exchanges/binance/products.json +++ b/extensions/exchanges/binance/products.json @@ -3018,5 +3018,35 @@ "increment": "0.000001", "asset_increment": "0.01", "label": "CLOAK/ETH" + }, + { + "id": "GNTBTC", + "asset": "GNT", + "currency": "BTC", + "min_size": "1.00000000", + "max_size": "100000.00000000", + "increment": "0.00000001", + "asset_increment": "1.", + "label": "GNT/BTC" + }, + { + "id": "GNTETH", + "asset": "GNT", + "currency": "ETH", + "min_size": "1.00000000", + "max_size": "100000.00000000", + "increment": "0.00000001", + "asset_increment": "1.", + "label": "GNT/ETH" + }, + { + "id": "GNTBNB", + "asset": "GNT", + "currency": "BNB", + "min_size": "0.01000000", + "max_size": "10000.00000000", + "increment": "0.00001", + "asset_increment": "0.01", + "label": "GNT/BNB" } ] \ No newline at end of file diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 563f77f47b..a770be27ff 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -682,7 +682,7 @@ { "asset": "TRX", "currency": "USD", - "min_size": "354.0", + "min_size": "340.0", "max_size": "1000000.0", "increment": "0.0000001", "label": "TRX/USD" @@ -690,7 +690,7 @@ { "asset": "TRX", "currency": "BTC", - "min_size": "354.0", + "min_size": "340.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/BTC" @@ -698,7 +698,7 @@ { "asset": "TRX", "currency": "ETH", - "min_size": "354.0", + "min_size": "340.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/ETH" @@ -1210,7 +1210,7 @@ { "asset": "ODE", "currency": "USD", - "min_size": "148.0", + "min_size": "134.0", "max_size": "200000.0", "increment": "0.0000001", "label": "ODE/USD" @@ -1218,7 +1218,7 @@ { "asset": "ODE", "currency": "BTC", - "min_size": "148.0", + "min_size": "134.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "ODE/BTC" @@ -1226,9 +1226,105 @@ { "asset": "ODE", "currency": "ETH", - "min_size": "148.0", + "min_size": "134.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "ODE/ETH" + }, + { + "asset": "ANT", + "currency": "USD", + "min_size": "2.0", + "max_size": "10000.0", + "increment": "0.00001", + "label": "ANT/USD" + }, + { + "asset": "ANT", + "currency": "BTC", + "min_size": "2.0", + "max_size": "10000.0", + "increment": "0.00000001", + "label": "ANT/BTC" + }, + { + "asset": "ANT", + "currency": "ETH", + "min_size": "2.0", + "max_size": "10000.0", + "increment": "0.00000001", + "label": "ANT/ETH" + }, + { + "asset": "DTH", + "currency": "USD", + "min_size": "90.0", + "max_size": "100000.0", + "increment": "0.000001", + "label": "DTH/USD" + }, + { + "asset": "DTH", + "currency": "BTC", + "min_size": "90.0", + "max_size": "100000.0", + "increment": "0.000000001", + "label": "DTH/BTC" + }, + { + "asset": "DTH", + "currency": "ETH", + "min_size": "90.0", + "max_size": "100000.0", + "increment": "0.000000001", + "label": "DTH/ETH" + }, + { + "asset": "MIT", + "currency": "USD", + "min_size": "10.0", + "max_size": "30000.0", + "increment": "0.00001", + "label": "MIT/USD" + }, + { + "asset": "MIT", + "currency": "BTC", + "min_size": "10.0", + "max_size": "30000.0", + "increment": "0.00000001", + "label": "MIT/BTC" + }, + { + "asset": "MIT", + "currency": "ETH", + "min_size": "10.0", + "max_size": "30000.0", + "increment": "0.00000001", + "label": "MIT/ETH" + }, + { + "asset": "STJ", + "currency": "USD", + "min_size": "10.0", + "max_size": "30000.0", + "increment": "0.00001", + "label": "STJ/USD" + }, + { + "asset": "STJ", + "currency": "BTC", + "min_size": "10.0", + "max_size": "30000.0", + "increment": "0.00000001", + "label": "STJ/BTC" + }, + { + "asset": "STJ", + "currency": "ETH", + "min_size": "10.0", + "max_size": "30000.0", + "increment": "0.00000001", + "label": "STJ/ETH" } ] \ No newline at end of file From b40e45321bc3361f95a5518d5565121980063951 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sun, 29 Apr 2018 11:22:31 +0000 Subject: [PATCH 006/208] Exchanges: update-products 1026 --- extensions/exchanges/bitfinex/products.json | 42 ++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index a770be27ff..eb6747b48b 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -482,7 +482,7 @@ { "asset": "GNT", "currency": "USD", - "min_size": "46.0", + "min_size": "42.0", "max_size": "200000.0", "increment": "0.000001", "label": "GNT/USD" @@ -490,7 +490,7 @@ { "asset": "GNT", "currency": "BTC", - "min_size": "46.0", + "min_size": "42.0", "max_size": "200000.0", "increment": "0.000000001", "label": "GNT/BTC" @@ -498,7 +498,7 @@ { "asset": "GNT", "currency": "ETH", - "min_size": "46.0", + "min_size": "42.0", "max_size": "200000.0", "increment": "0.000000001", "label": "GNT/ETH" @@ -610,7 +610,7 @@ { "asset": "ZRX", "currency": "USD", - "min_size": "22.0", + "min_size": "20.0", "max_size": "200000.0", "increment": "0.00001", "label": "ZRX/USD" @@ -618,7 +618,7 @@ { "asset": "ZRX", "currency": "BTC", - "min_size": "22.0", + "min_size": "20.0", "max_size": "200000.0", "increment": "0.00000001", "label": "ZRX/BTC" @@ -626,7 +626,7 @@ { "asset": "ZRX", "currency": "ETH", - "min_size": "22.0", + "min_size": "20.0", "max_size": "200000.0", "increment": "0.00000001", "label": "ZRX/ETH" @@ -682,7 +682,7 @@ { "asset": "TRX", "currency": "USD", - "min_size": "340.0", + "min_size": "306.0", "max_size": "1000000.0", "increment": "0.0000001", "label": "TRX/USD" @@ -690,7 +690,7 @@ { "asset": "TRX", "currency": "BTC", - "min_size": "340.0", + "min_size": "306.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/BTC" @@ -698,7 +698,7 @@ { "asset": "TRX", "currency": "ETH", - "min_size": "340.0", + "min_size": "306.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/ETH" @@ -826,7 +826,7 @@ { "asset": "ELF", "currency": "USD", - "min_size": "20.0", + "min_size": "16.0", "max_size": "25000.0", "increment": "0.00001", "label": "ELF/USD" @@ -834,7 +834,7 @@ { "asset": "ELF", "currency": "BTC", - "min_size": "20.0", + "min_size": "16.0", "max_size": "25000.0", "increment": "0.00000001", "label": "ELF/BTC" @@ -842,7 +842,7 @@ { "asset": "ELF", "currency": "ETH", - "min_size": "20.0", + "min_size": "16.0", "max_size": "25000.0", "increment": "0.00000001", "label": "ELF/ETH" @@ -1162,7 +1162,7 @@ { "asset": "BFT", "currency": "USD", - "min_size": "104.0", + "min_size": "86.0", "max_size": "200000.0", "increment": "0.000001", "label": "BFT/USD" @@ -1170,7 +1170,7 @@ { "asset": "BFT", "currency": "BTC", - "min_size": "104.0", + "min_size": "86.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BFT/BTC" @@ -1178,7 +1178,7 @@ { "asset": "BFT", "currency": "ETH", - "min_size": "104.0", + "min_size": "86.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BFT/ETH" @@ -1210,25 +1210,25 @@ { "asset": "ODE", "currency": "USD", - "min_size": "134.0", + "min_size": "122.0", "max_size": "200000.0", - "increment": "0.0000001", + "increment": "0.000001", "label": "ODE/USD" }, { "asset": "ODE", "currency": "BTC", - "min_size": "134.0", + "min_size": "122.0", "max_size": "200000.0", - "increment": "0.0000000001", + "increment": "0.000000001", "label": "ODE/BTC" }, { "asset": "ODE", "currency": "ETH", - "min_size": "134.0", + "min_size": "122.0", "max_size": "200000.0", - "increment": "0.0000000001", + "increment": "0.000000001", "label": "ODE/ETH" }, { From 6a0b025aa50034d0e7865f082218054289acb514 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 30 Apr 2018 11:22:44 +0000 Subject: [PATCH 007/208] Exchanges: update-products 1029 --- extensions/exchanges/bitfinex/products.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index eb6747b48b..c768addd38 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -682,7 +682,7 @@ { "asset": "TRX", "currency": "USD", - "min_size": "306.0", + "min_size": "282.0", "max_size": "1000000.0", "increment": "0.0000001", "label": "TRX/USD" @@ -690,7 +690,7 @@ { "asset": "TRX", "currency": "BTC", - "min_size": "306.0", + "min_size": "282.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/BTC" @@ -698,7 +698,7 @@ { "asset": "TRX", "currency": "ETH", - "min_size": "306.0", + "min_size": "282.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/ETH" @@ -826,7 +826,7 @@ { "asset": "ELF", "currency": "USD", - "min_size": "16.0", + "min_size": "14.0", "max_size": "25000.0", "increment": "0.00001", "label": "ELF/USD" @@ -834,7 +834,7 @@ { "asset": "ELF", "currency": "BTC", - "min_size": "16.0", + "min_size": "14.0", "max_size": "25000.0", "increment": "0.00000001", "label": "ELF/BTC" @@ -842,7 +842,7 @@ { "asset": "ELF", "currency": "ETH", - "min_size": "16.0", + "min_size": "14.0", "max_size": "25000.0", "increment": "0.00000001", "label": "ELF/ETH" @@ -1042,7 +1042,7 @@ { "asset": "LRC", "currency": "USD", - "min_size": "26.0", + "min_size": "24.0", "max_size": "50000.0", "increment": "0.00001", "label": "LRC/USD" @@ -1050,7 +1050,7 @@ { "asset": "LRC", "currency": "BTC", - "min_size": "26.0", + "min_size": "24.0", "max_size": "50000.0", "increment": "0.00000001", "label": "LRC/BTC" @@ -1058,7 +1058,7 @@ { "asset": "LRC", "currency": "ETH", - "min_size": "26.0", + "min_size": "24.0", "max_size": "50000.0", "increment": "0.00000001", "label": "LRC/ETH" From 4ed6401b3d2ac9573730e7bb94f52200708e6783 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 1 May 2018 11:23:34 +0000 Subject: [PATCH 008/208] Exchanges: update-products 1032 --- extensions/exchanges/bitfinex/products.json | 108 ++++++++++++++++++-- 1 file changed, 102 insertions(+), 6 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index c768addd38..a8e89b7a41 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -538,7 +538,7 @@ { "asset": "BAT", "currency": "USD", - "min_size": "54.0", + "min_size": "52.0", "max_size": "200000.0", "increment": "0.000001", "label": "BAT/USD" @@ -546,7 +546,7 @@ { "asset": "BAT", "currency": "BTC", - "min_size": "54.0", + "min_size": "52.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BAT/BTC" @@ -554,7 +554,7 @@ { "asset": "BAT", "currency": "ETH", - "min_size": "54.0", + "min_size": "52.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BAT/ETH" @@ -682,7 +682,7 @@ { "asset": "TRX", "currency": "USD", - "min_size": "282.0", + "min_size": "274.0", "max_size": "1000000.0", "increment": "0.0000001", "label": "TRX/USD" @@ -690,7 +690,7 @@ { "asset": "TRX", "currency": "BTC", - "min_size": "282.0", + "min_size": "274.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/BTC" @@ -698,7 +698,7 @@ { "asset": "TRX", "currency": "ETH", - "min_size": "282.0", + "min_size": "274.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/ETH" @@ -1326,5 +1326,101 @@ "max_size": "30000.0", "increment": "0.00000001", "label": "STJ/ETH" + }, + { + "asset": "XLM", + "currency": "USD", + "min_size": "24.0", + "max_size": "20000.0", + "increment": "0.00001", + "label": "XLM/USD" + }, + { + "asset": "XLM", + "currency": "EUR", + "min_size": "24.0", + "max_size": "20000.0", + "increment": "0.00000001", + "label": "XLM/EUR" + }, + { + "asset": "XLM", + "currency": "JPY", + "min_size": "24.0", + "max_size": "20000.0", + "increment": "0.00000001", + "label": "XLM/JPY" + }, + { + "asset": "XLM", + "currency": "GBP", + "min_size": "24.0", + "max_size": "20000.0", + "increment": "0.00000001", + "label": "XLM/GBP" + }, + { + "asset": "XLM", + "currency": "BTC", + "min_size": "24.0", + "max_size": "20000.0", + "increment": "0.00000001", + "label": "XLM/BTC" + }, + { + "asset": "XLM", + "currency": "ETH", + "min_size": "24.0", + "max_size": "20000.0", + "increment": "0.00000001", + "label": "XLM/ETH" + }, + { + "asset": "XVG", + "currency": "USD", + "min_size": "148.0", + "max_size": "100000.0", + "increment": "0.0000001", + "label": "XVG/USD" + }, + { + "asset": "XVG", + "currency": "EUR", + "min_size": "148.0", + "max_size": "100000.0", + "increment": "0.0000000001", + "label": "XVG/EUR" + }, + { + "asset": "XVG", + "currency": "JPY", + "min_size": "148.0", + "max_size": "100000.0", + "increment": "0.0000000001", + "label": "XVG/JPY" + }, + { + "asset": "XVG", + "currency": "GBP", + "min_size": "148.0", + "max_size": "100000.0", + "increment": "0.0000000001", + "label": "XVG/GBP" + }, + { + "asset": "XVG", + "currency": "BTC", + "min_size": "148.0", + "max_size": "100000.0", + "increment": "0.0000000001", + "label": "XVG/BTC" + }, + { + "asset": "XVG", + "currency": "ETH", + "min_size": "148.0", + "max_size": "100000.0", + "increment": "0.0000000001", + "label": "XVG/ETH" } ] \ No newline at end of file From 5a604de1cb5beb94157629e7a19e3c7bf3e80088 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Wed, 2 May 2018 11:24:05 +0000 Subject: [PATCH 009/208] Exchanges: update-products 1038 --- extensions/exchanges/binance/products.json | 30 +++++++++++++++ extensions/exchanges/bitfinex/products.json | 42 ++++++++++----------- 2 files changed, 51 insertions(+), 21 deletions(-) diff --git a/extensions/exchanges/binance/products.json b/extensions/exchanges/binance/products.json index 1caf8a9497..032406d311 100644 --- a/extensions/exchanges/binance/products.json +++ b/extensions/exchanges/binance/products.json @@ -3048,5 +3048,35 @@ "increment": "0.00001", "asset_increment": "0.01", "label": "GNT/BNB" + }, + { + "id": "LOOMBTC", + "asset": "LOOM", + "currency": "BTC", + "min_size": "1.00000000", + "max_size": "100000.00000000", + "increment": "0.00000001", + "asset_increment": "1.", + "label": "LOOM/BTC" + }, + { + "id": "LOOMETH", + "asset": "LOOM", + "currency": "ETH", + "min_size": "1.00000000", + "max_size": "100000.00000000", + "increment": "0.00000001", + "asset_increment": "1.", + "label": "LOOM/ETH" + }, + { + "id": "LOOMBNB", + "asset": "LOOM", + "currency": "BNB", + "min_size": "0.01000000", + "max_size": "10000.00000000", + "increment": "0.00001", + "asset_increment": "0.01", + "label": "LOOM/BNB" } ] \ No newline at end of file diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index a8e89b7a41..19001c9727 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -458,7 +458,7 @@ { "asset": "YYW", "currency": "USD", - "min_size": "148.0", + "min_size": "132.0", "max_size": "50000.0", "increment": "0.0000001", "label": "YYW/USD" @@ -466,7 +466,7 @@ { "asset": "YYW", "currency": "BTC", - "min_size": "148.0", + "min_size": "132.0", "max_size": "50000.0", "increment": "0.0000000001", "label": "YYW/BTC" @@ -474,7 +474,7 @@ { "asset": "YYW", "currency": "ETH", - "min_size": "148.0", + "min_size": "132.0", "max_size": "50000.0", "increment": "0.0000000001", "label": "YYW/ETH" @@ -538,7 +538,7 @@ { "asset": "BAT", "currency": "USD", - "min_size": "52.0", + "min_size": "50.0", "max_size": "200000.0", "increment": "0.000001", "label": "BAT/USD" @@ -546,7 +546,7 @@ { "asset": "BAT", "currency": "BTC", - "min_size": "52.0", + "min_size": "50.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BAT/BTC" @@ -554,7 +554,7 @@ { "asset": "BAT", "currency": "ETH", - "min_size": "52.0", + "min_size": "50.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BAT/ETH" @@ -562,7 +562,7 @@ { "asset": "MNA", "currency": "USD", - "min_size": "150.0", + "min_size": "134.0", "max_size": "200000.0", "increment": "0.0000001", "label": "MNA/USD" @@ -570,7 +570,7 @@ { "asset": "MNA", "currency": "BTC", - "min_size": "150.0", + "min_size": "134.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "MNA/BTC" @@ -578,7 +578,7 @@ { "asset": "MNA", "currency": "ETH", - "min_size": "150.0", + "min_size": "134.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "MNA/ETH" @@ -634,7 +634,7 @@ { "asset": "TNB", "currency": "USD", - "min_size": "398.0", + "min_size": "392.0", "max_size": "200000.0", "increment": "0.0000001", "label": "TNB/USD" @@ -642,7 +642,7 @@ { "asset": "TNB", "currency": "BTC", - "min_size": "398.0", + "min_size": "392.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "TNB/BTC" @@ -650,7 +650,7 @@ { "asset": "TNB", "currency": "ETH", - "min_size": "398.0", + "min_size": "392.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "TNB/ETH" @@ -682,7 +682,7 @@ { "asset": "TRX", "currency": "USD", - "min_size": "274.0", + "min_size": "272.0", "max_size": "1000000.0", "increment": "0.0000001", "label": "TRX/USD" @@ -690,7 +690,7 @@ { "asset": "TRX", "currency": "BTC", - "min_size": "274.0", + "min_size": "272.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/BTC" @@ -698,7 +698,7 @@ { "asset": "TRX", "currency": "ETH", - "min_size": "274.0", + "min_size": "272.0", "max_size": "1000000.0", "increment": "0.0000000001", "label": "TRX/ETH" @@ -826,7 +826,7 @@ { "asset": "ELF", "currency": "USD", - "min_size": "14.0", + "min_size": "12.0", "max_size": "25000.0", "increment": "0.00001", "label": "ELF/USD" @@ -834,7 +834,7 @@ { "asset": "ELF", "currency": "BTC", - "min_size": "14.0", + "min_size": "12.0", "max_size": "25000.0", "increment": "0.00000001", "label": "ELF/BTC" @@ -842,7 +842,7 @@ { "asset": "ELF", "currency": "ETH", - "min_size": "14.0", + "min_size": "12.0", "max_size": "25000.0", "increment": "0.00000001", "label": "ELF/ETH" @@ -1258,7 +1258,7 @@ { "asset": "DTH", "currency": "USD", - "min_size": "90.0", + "min_size": "94.0", "max_size": "100000.0", "increment": "0.000001", "label": "DTH/USD" @@ -1266,7 +1266,7 @@ { "asset": "DTH", "currency": "BTC", - "min_size": "90.0", + "min_size": "94.0", "max_size": "100000.0", "increment": "0.000000001", "label": "DTH/BTC" @@ -1274,7 +1274,7 @@ { "asset": "DTH", "currency": "ETH", - "min_size": "90.0", + "min_size": "94.0", "max_size": "100000.0", "increment": "0.000000001", "label": "DTH/ETH" From ac703fded0369032331b85db63573c8bbe54bf71 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Thu, 3 May 2018 11:24:16 +0000 Subject: [PATCH 010/208] Exchanges: update-products 1041 --- extensions/exchanges/bitfinex/products.json | 52 ++++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 19001c9727..cffa592eb1 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -458,31 +458,31 @@ { "asset": "YYW", "currency": "USD", - "min_size": "132.0", + "min_size": "122.0", "max_size": "50000.0", - "increment": "0.0000001", + "increment": "0.000001", "label": "YYW/USD" }, { "asset": "YYW", "currency": "BTC", - "min_size": "132.0", + "min_size": "122.0", "max_size": "50000.0", - "increment": "0.0000000001", + "increment": "0.000000001", "label": "YYW/BTC" }, { "asset": "YYW", "currency": "ETH", - "min_size": "132.0", + "min_size": "122.0", "max_size": "50000.0", - "increment": "0.0000000001", + "increment": "0.000000001", "label": "YYW/ETH" }, { "asset": "GNT", "currency": "USD", - "min_size": "42.0", + "min_size": "34.0", "max_size": "200000.0", "increment": "0.000001", "label": "GNT/USD" @@ -490,7 +490,7 @@ { "asset": "GNT", "currency": "BTC", - "min_size": "42.0", + "min_size": "34.0", "max_size": "200000.0", "increment": "0.000000001", "label": "GNT/BTC" @@ -498,7 +498,7 @@ { "asset": "GNT", "currency": "ETH", - "min_size": "42.0", + "min_size": "34.0", "max_size": "200000.0", "increment": "0.000000001", "label": "GNT/ETH" @@ -610,7 +610,7 @@ { "asset": "ZRX", "currency": "USD", - "min_size": "20.0", + "min_size": "18.0", "max_size": "200000.0", "increment": "0.00001", "label": "ZRX/USD" @@ -618,7 +618,7 @@ { "asset": "ZRX", "currency": "BTC", - "min_size": "20.0", + "min_size": "18.0", "max_size": "200000.0", "increment": "0.00000001", "label": "ZRX/BTC" @@ -626,7 +626,7 @@ { "asset": "ZRX", "currency": "ETH", - "min_size": "20.0", + "min_size": "18.0", "max_size": "200000.0", "increment": "0.00000001", "label": "ZRX/ETH" @@ -634,7 +634,7 @@ { "asset": "TNB", "currency": "USD", - "min_size": "392.0", + "min_size": "366.0", "max_size": "200000.0", "increment": "0.0000001", "label": "TNB/USD" @@ -642,7 +642,7 @@ { "asset": "TNB", "currency": "BTC", - "min_size": "392.0", + "min_size": "366.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "TNB/BTC" @@ -650,7 +650,7 @@ { "asset": "TNB", "currency": "ETH", - "min_size": "392.0", + "min_size": "366.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "TNB/ETH" @@ -1162,7 +1162,7 @@ { "asset": "BFT", "currency": "USD", - "min_size": "86.0", + "min_size": "74.0", "max_size": "200000.0", "increment": "0.000001", "label": "BFT/USD" @@ -1170,7 +1170,7 @@ { "asset": "BFT", "currency": "BTC", - "min_size": "86.0", + "min_size": "74.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BFT/BTC" @@ -1178,7 +1178,7 @@ { "asset": "BFT", "currency": "ETH", - "min_size": "86.0", + "min_size": "74.0", "max_size": "200000.0", "increment": "0.000000001", "label": "BFT/ETH" @@ -1422,5 +1422,21 @@ "max_size": "100000.0", "increment": "0.0000000001", "label": "XVG/ETH" + }, + { + "asset": "BCI", + "currency": "USD", + "min_size": "2.0", + "max_size": "5000.0", + "increment": "0.00001", + "label": "BCI/USD" + }, + { + "asset": "BCI", + "currency": "BTC", + "min_size": "2.0", + "max_size": "5000.0", + "increment": "0.00000001", + "label": "BCI/BTC" } ] \ No newline at end of file From f55800d2b13504364adcac88b1d52b85af65dd04 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Fri, 4 May 2018 11:24:22 +0000 Subject: [PATCH 011/208] Exchanges: update-products 1045 --- extensions/exchanges/binance/products.json | 10 ++++++++++ extensions/exchanges/bitfinex/products.json | 18 +++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/extensions/exchanges/binance/products.json b/extensions/exchanges/binance/products.json index 032406d311..4144ef2d33 100644 --- a/extensions/exchanges/binance/products.json +++ b/extensions/exchanges/binance/products.json @@ -3078,5 +3078,15 @@ "increment": "0.00001", "asset_increment": "0.01", "label": "LOOM/BNB" + }, + { + "id": "XRPUSDT", + "asset": "XRP", + "currency": "USDT", + "min_size": "0.01000000", + "max_size": "100000.00000000", + "increment": "0.00001", + "asset_increment": "0.01", + "label": "XRP/USDT" } ] \ No newline at end of file diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index cffa592eb1..1121d47a31 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -482,25 +482,25 @@ { "asset": "GNT", "currency": "USD", - "min_size": "34.0", + "min_size": "30.0", "max_size": "200000.0", - "increment": "0.000001", + "increment": "0.00001", "label": "GNT/USD" }, { "asset": "GNT", "currency": "BTC", - "min_size": "34.0", + "min_size": "30.0", "max_size": "200000.0", - "increment": "0.000000001", + "increment": "0.00000001", "label": "GNT/BTC" }, { "asset": "GNT", "currency": "ETH", - "min_size": "34.0", + "min_size": "30.0", "max_size": "200000.0", - "increment": "0.000000001", + "increment": "0.00000001", "label": "GNT/ETH" }, { @@ -562,7 +562,7 @@ { "asset": "MNA", "currency": "USD", - "min_size": "134.0", + "min_size": "132.0", "max_size": "200000.0", "increment": "0.0000001", "label": "MNA/USD" @@ -570,7 +570,7 @@ { "asset": "MNA", "currency": "BTC", - "min_size": "134.0", + "min_size": "132.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "MNA/BTC" @@ -578,7 +578,7 @@ { "asset": "MNA", "currency": "ETH", - "min_size": "134.0", + "min_size": "132.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "MNA/ETH" From 4dbfff2819095782f5a3db59dcf0e013e57092a8 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 5 May 2018 11:23:54 +0000 Subject: [PATCH 012/208] Exchanges: update-products 1047 --- extensions/exchanges/bitfinex/products.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 1121d47a31..629546ecba 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -610,7 +610,7 @@ { "asset": "ZRX", "currency": "USD", - "min_size": "18.0", + "min_size": "14.0", "max_size": "200000.0", "increment": "0.00001", "label": "ZRX/USD" @@ -618,7 +618,7 @@ { "asset": "ZRX", "currency": "BTC", - "min_size": "18.0", + "min_size": "14.0", "max_size": "200000.0", "increment": "0.00000001", "label": "ZRX/BTC" @@ -626,7 +626,7 @@ { "asset": "ZRX", "currency": "ETH", - "min_size": "18.0", + "min_size": "14.0", "max_size": "200000.0", "increment": "0.00000001", "label": "ZRX/ETH" From e5a7d3c6e9bb5c7ab411c4046109b98356e533f3 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Mon, 7 May 2018 11:25:04 +0000 Subject: [PATCH 013/208] Exchanges: update-products 1051 --- extensions/exchanges/bitfinex/products.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 629546ecba..0f08776c76 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -1186,7 +1186,7 @@ { "asset": "MTN", "currency": "USD", - "min_size": "116.0", + "min_size": "104.0", "max_size": "200000.0", "increment": "0.000001", "label": "MTN/USD" @@ -1194,7 +1194,7 @@ { "asset": "MTN", "currency": "BTC", - "min_size": "116.0", + "min_size": "104.0", "max_size": "200000.0", "increment": "0.000000001", "label": "MTN/BTC" @@ -1202,7 +1202,7 @@ { "asset": "MTN", "currency": "ETH", - "min_size": "116.0", + "min_size": "104.0", "max_size": "200000.0", "increment": "0.000000001", "label": "MTN/ETH" @@ -1258,7 +1258,7 @@ { "asset": "DTH", "currency": "USD", - "min_size": "94.0", + "min_size": "96.0", "max_size": "100000.0", "increment": "0.000001", "label": "DTH/USD" @@ -1266,7 +1266,7 @@ { "asset": "DTH", "currency": "BTC", - "min_size": "94.0", + "min_size": "96.0", "max_size": "100000.0", "increment": "0.000000001", "label": "DTH/BTC" @@ -1274,7 +1274,7 @@ { "asset": "DTH", "currency": "ETH", - "min_size": "94.0", + "min_size": "96.0", "max_size": "100000.0", "increment": "0.000000001", "label": "DTH/ETH" From 812c7b36e999f6638a03051175d5811cb735b1cb Mon Sep 17 00:00:00 2001 From: Travis CI Date: Tue, 8 May 2018 11:25:30 +0000 Subject: [PATCH 014/208] Exchanges: update-products 1053 --- extensions/exchanges/binance/products.json | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/extensions/exchanges/binance/products.json b/extensions/exchanges/binance/products.json index 4144ef2d33..fd06cce174 100644 --- a/extensions/exchanges/binance/products.json +++ b/extensions/exchanges/binance/products.json @@ -3088,5 +3088,35 @@ "increment": "0.00001", "asset_increment": "0.01", "label": "XRP/USDT" + }, + { + "id": "BCNBTC", + "asset": "BCN", + "currency": "BTC", + "min_size": "1.00000000", + "max_size": "100000.00000000", + "increment": "0.00000001", + "asset_increment": "1.", + "label": "BCN/BTC" + }, + { + "id": "BCNETH", + "asset": "BCN", + "currency": "ETH", + "min_size": "1.00000000", + "max_size": "100000.00000000", + "increment": "0.00000001", + "asset_increment": "1.", + "label": "BCN/ETH" + }, + { + "id": "BCNBNB", + "asset": "BCN", + "currency": "BNB", + "min_size": "1.00000000", + "max_size": "10000.00000000", + "increment": "0.000001", + "asset_increment": "1.", + "label": "BCN/BNB" } ] \ No newline at end of file From c196b094ac391e76d43b5c05b3568a6bf228d1f7 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Fri, 11 May 2018 11:27:32 +0000 Subject: [PATCH 015/208] Exchanges: update-products 1057 --- extensions/exchanges/binance/products.json | 30 +++++ extensions/exchanges/bitfinex/products.json | 120 ++++++++++++++++++-- extensions/exchanges/bittrex/products.json | 16 +++ 3 files changed, 154 insertions(+), 12 deletions(-) diff --git a/extensions/exchanges/binance/products.json b/extensions/exchanges/binance/products.json index fd06cce174..2d9a8525a8 100644 --- a/extensions/exchanges/binance/products.json +++ b/extensions/exchanges/binance/products.json @@ -3118,5 +3118,35 @@ "increment": "0.000001", "asset_increment": "1.", "label": "BCN/BNB" + }, + { + "id": "REPBTC", + "asset": "REP", + "currency": "BTC", + "min_size": "0.00100000", + "max_size": "100000.00000000", + "increment": "0.000001", + "asset_increment": "0.001", + "label": "REP/BTC" + }, + { + "id": "REPETH", + "asset": "REP", + "currency": "ETH", + "min_size": "0.00100000", + "max_size": "100000.00000000", + "increment": "0.00001", + "asset_increment": "0.001", + "label": "REP/ETH" + }, + { + "id": "REPBNB", + "asset": "REP", + "currency": "BNB", + "min_size": "0.00100000", + "max_size": "10000000.00000000", + "increment": "0.001", + "asset_increment": "0.001", + "label": "REP/BNB" } ] \ No newline at end of file diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 0f08776c76..7c189c7f25 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -1331,7 +1331,7 @@ "asset": "XLM", "currency": "USD", "min_size": "24.0", - "max_size": "20000.0", + "max_size": "100000.0", "increment": "0.00001", "label": "XLM/USD" }, @@ -1339,7 +1339,7 @@ "asset": "XLM", "currency": "EUR", "min_size": "24.0", - "max_size": "20000.0", + "max_size": "100000.0", "increment": "0.00000001", "label": "XLM/EUR" }, @@ -1347,7 +1347,7 @@ "asset": "XLM", "currency": "JPY", "min_size": "24.0", - "max_size": "20000.0", + "max_size": "100000.0", "increment": "0.00000001", "label": "XLM/JPY" }, @@ -1355,7 +1355,7 @@ "asset": "XLM", "currency": "GBP", "min_size": "24.0", - "max_size": "20000.0", + "max_size": "100000.0", "increment": "0.00000001", "label": "XLM/GBP" }, @@ -1363,7 +1363,7 @@ "asset": "XLM", "currency": "BTC", "min_size": "24.0", - "max_size": "20000.0", + "max_size": "100000.0", "increment": "0.00000001", "label": "XLM/BTC" }, @@ -1371,7 +1371,7 @@ "asset": "XLM", "currency": "ETH", "min_size": "24.0", - "max_size": "20000.0", + "max_size": "100000.0", "increment": "0.00000001", "label": "XLM/ETH" }, @@ -1379,7 +1379,7 @@ "asset": "XVG", "currency": "USD", "min_size": "148.0", - "max_size": "100000.0", + "max_size": "200000.0", "increment": "0.0000001", "label": "XVG/USD" }, @@ -1387,7 +1387,7 @@ "asset": "XVG", "currency": "EUR", "min_size": "148.0", - "max_size": "100000.0", + "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/EUR" }, @@ -1395,7 +1395,7 @@ "asset": "XVG", "currency": "JPY", "min_size": "148.0", - "max_size": "100000.0", + "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/JPY" }, @@ -1403,7 +1403,7 @@ "asset": "XVG", "currency": "GBP", "min_size": "148.0", - "max_size": "100000.0", + "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/GBP" }, @@ -1411,7 +1411,7 @@ "asset": "XVG", "currency": "BTC", "min_size": "148.0", - "max_size": "100000.0", + "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/BTC" }, @@ -1419,7 +1419,7 @@ "asset": "XVG", "currency": "ETH", "min_size": "148.0", - "max_size": "100000.0", + "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/ETH" }, @@ -1438,5 +1438,101 @@ "max_size": "5000.0", "increment": "0.00000001", "label": "BCI/BTC" + }, + { + "asset": "MKR", + "currency": "USD", + "min_size": "0.001", + "max_size": "50.0", + "increment": "0.001", + "label": "MKR/USD" + }, + { + "asset": "MKR", + "currency": "BTC", + "min_size": "0.001", + "max_size": "50.0", + "increment": "0.000001", + "label": "MKR/BTC" + }, + { + "asset": "MKR", + "currency": "ETH", + "min_size": "0.001", + "max_size": "50.0", + "increment": "0.000001", + "label": "MKR/ETH" + }, + { + "asset": "VEN", + "currency": "USD", + "min_size": "0.001", + "max_size": "20000.0", + "increment": "0.001", + "label": "VEN/USD" + }, + { + "asset": "VEN", + "currency": "BTC", + "min_size": "0.001", + "max_size": "20000.0", + "increment": "0.000001", + "label": "VEN/BTC" + }, + { + "asset": "VEN", + "currency": "ETH", + "min_size": "0.001", + "max_size": "20000.0", + "increment": "0.000001", + "label": "VEN/ETH" + }, + { + "asset": "KNC", + "currency": "USD", + "min_size": "0.001", + "max_size": "20000.0", + "increment": "0.001", + "label": "KNC/USD" + }, + { + "asset": "KNC", + "currency": "BTC", + "min_size": "0.001", + "max_size": "20000.0", + "increment": "0.000001", + "label": "KNC/BTC" + }, + { + "asset": "KNC", + "currency": "ETH", + "min_size": "0.001", + "max_size": "20000.0", + "increment": "0.000001", + "label": "KNC/ETH" + }, + { + "asset": "POA", + "currency": "USD", + "min_size": "0.001", + "max_size": "60000.0", + "increment": "0.001", + "label": "POA/USD" + }, + { + "asset": "POA", + "currency": "BTC", + "min_size": "0.001", + "max_size": "60000.0", + "increment": "0.000001", + "label": "POA/BTC" + }, + { + "asset": "POA", + "currency": "ETH", + "min_size": "0.001", + "max_size": "60000.0", + "increment": "0.000001", + "label": "POA/ETH" } ] \ No newline at end of file diff --git a/extensions/exchanges/bittrex/products.json b/extensions/exchanges/bittrex/products.json index 774ff21fcc..ee4d8a223b 100644 --- a/extensions/exchanges/bittrex/products.json +++ b/extensions/exchanges/bittrex/products.json @@ -2198,5 +2198,21 @@ "max_size": "1000000", "increment": "0.00000001", "label": "USDT/TRX" + }, + { + "asset": "BLT", + "currency": "BTC", + "min_size": "0.00000001", + "max_size": "1000000", + "increment": "0.00000001", + "label": "BTC/BLT" + }, + { + "asset": "BLT", + "currency": "ETH", + "min_size": "0.00000001", + "max_size": "1000000", + "increment": "0.00000001", + "label": "ETH/BLT" } ] \ No newline at end of file From abf8f69e264c41f1f34beafd479122844a6949a8 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 12 May 2018 11:27:08 +0000 Subject: [PATCH 016/208] Exchanges: update-products 1059 --- extensions/exchanges/bitfinex/products.json | 90 ++++++++++----------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/extensions/exchanges/bitfinex/products.json b/extensions/exchanges/bitfinex/products.json index 7c189c7f25..5116c9c654 100644 --- a/extensions/exchanges/bitfinex/products.json +++ b/extensions/exchanges/bitfinex/products.json @@ -754,7 +754,7 @@ { "asset": "AID", "currency": "USD", - "min_size": "74.0", + "min_size": "76.0", "max_size": "200000.0", "increment": "0.000001", "label": "AID/USD" @@ -762,7 +762,7 @@ { "asset": "AID", "currency": "BTC", - "min_size": "74.0", + "min_size": "76.0", "max_size": "200000.0", "increment": "0.000000001", "label": "AID/BTC" @@ -770,7 +770,7 @@ { "asset": "AID", "currency": "ETH", - "min_size": "74.0", + "min_size": "76.0", "max_size": "200000.0", "increment": "0.000000001", "label": "AID/ETH" @@ -1258,7 +1258,7 @@ { "asset": "DTH", "currency": "USD", - "min_size": "96.0", + "min_size": "122.0", "max_size": "100000.0", "increment": "0.000001", "label": "DTH/USD" @@ -1266,7 +1266,7 @@ { "asset": "DTH", "currency": "BTC", - "min_size": "96.0", + "min_size": "122.0", "max_size": "100000.0", "increment": "0.000000001", "label": "DTH/BTC" @@ -1274,7 +1274,7 @@ { "asset": "DTH", "currency": "ETH", - "min_size": "96.0", + "min_size": "122.0", "max_size": "100000.0", "increment": "0.000000001", "label": "DTH/ETH" @@ -1330,55 +1330,55 @@ { "asset": "XLM", "currency": "USD", - "min_size": "24.0", + "min_size": "32.0", "max_size": "100000.0", - "increment": "0.00001", + "increment": "0.000001", "label": "XLM/USD" }, { "asset": "XLM", "currency": "EUR", - "min_size": "24.0", + "min_size": "32.0", "max_size": "100000.0", - "increment": "0.00000001", + "increment": "0.000000001", "label": "XLM/EUR" }, { "asset": "XLM", "currency": "JPY", - "min_size": "24.0", + "min_size": "32.0", "max_size": "100000.0", - "increment": "0.00000001", + "increment": "0.000000001", "label": "XLM/JPY" }, { "asset": "XLM", "currency": "GBP", - "min_size": "24.0", + "min_size": "32.0", "max_size": "100000.0", - "increment": "0.00000001", + "increment": "0.000000001", "label": "XLM/GBP" }, { "asset": "XLM", "currency": "BTC", - "min_size": "24.0", + "min_size": "32.0", "max_size": "100000.0", - "increment": "0.00000001", + "increment": "0.000000001", "label": "XLM/BTC" }, { "asset": "XLM", "currency": "ETH", - "min_size": "24.0", + "min_size": "32.0", "max_size": "100000.0", - "increment": "0.00000001", + "increment": "0.000000001", "label": "XLM/ETH" }, { "asset": "XVG", "currency": "USD", - "min_size": "148.0", + "min_size": "170.0", "max_size": "200000.0", "increment": "0.0000001", "label": "XVG/USD" @@ -1386,7 +1386,7 @@ { "asset": "XVG", "currency": "EUR", - "min_size": "148.0", + "min_size": "170.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/EUR" @@ -1394,7 +1394,7 @@ { "asset": "XVG", "currency": "JPY", - "min_size": "148.0", + "min_size": "170.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/JPY" @@ -1402,7 +1402,7 @@ { "asset": "XVG", "currency": "GBP", - "min_size": "148.0", + "min_size": "170.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/GBP" @@ -1410,7 +1410,7 @@ { "asset": "XVG", "currency": "BTC", - "min_size": "148.0", + "min_size": "170.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/BTC" @@ -1418,7 +1418,7 @@ { "asset": "XVG", "currency": "ETH", - "min_size": "148.0", + "min_size": "170.0", "max_size": "200000.0", "increment": "0.0000000001", "label": "XVG/ETH" @@ -1442,7 +1442,7 @@ { "asset": "MKR", "currency": "USD", - "min_size": "0.001", + "min_size": "0.02", "max_size": "50.0", "increment": "0.001", "label": "MKR/USD" @@ -1450,7 +1450,7 @@ { "asset": "MKR", "currency": "BTC", - "min_size": "0.001", + "min_size": "0.02", "max_size": "50.0", "increment": "0.000001", "label": "MKR/BTC" @@ -1458,7 +1458,7 @@ { "asset": "MKR", "currency": "ETH", - "min_size": "0.001", + "min_size": "0.02", "max_size": "50.0", "increment": "0.000001", "label": "MKR/ETH" @@ -1466,73 +1466,73 @@ { "asset": "VEN", "currency": "USD", - "min_size": "0.001", + "min_size": "2.0", "max_size": "20000.0", - "increment": "0.001", + "increment": "0.00001", "label": "VEN/USD" }, { "asset": "VEN", "currency": "BTC", - "min_size": "0.001", + "min_size": "2.0", "max_size": "20000.0", - "increment": "0.000001", + "increment": "0.00000001", "label": "VEN/BTC" }, { "asset": "VEN", "currency": "ETH", - "min_size": "0.001", + "min_size": "2.0", "max_size": "20000.0", - "increment": "0.000001", + "increment": "0.00000001", "label": "VEN/ETH" }, { "asset": "KNC", "currency": "USD", - "min_size": "0.001", + "min_size": "4.0", "max_size": "20000.0", - "increment": "0.001", + "increment": "0.00001", "label": "KNC/USD" }, { "asset": "KNC", "currency": "BTC", - "min_size": "0.001", + "min_size": "4.0", "max_size": "20000.0", - "increment": "0.000001", + "increment": "0.00000001", "label": "KNC/BTC" }, { "asset": "KNC", "currency": "ETH", - "min_size": "0.001", + "min_size": "4.0", "max_size": "20000.0", - "increment": "0.000001", + "increment": "0.00000001", "label": "KNC/ETH" }, { "asset": "POA", "currency": "USD", - "min_size": "0.001", + "min_size": "14.0", "max_size": "60000.0", - "increment": "0.001", + "increment": "0.00001", "label": "POA/USD" }, { "asset": "POA", "currency": "BTC", - "min_size": "0.001", + "min_size": "14.0", "max_size": "60000.0", - "increment": "0.000001", + "increment": "0.00000001", "label": "POA/BTC" }, { "asset": "POA", "currency": "ETH", - "min_size": "0.001", + "min_size": "14.0", "max_size": "60000.0", - "increment": "0.000001", + "increment": "0.00000001", "label": "POA/ETH" } ] \ No newline at end of file From f728c5193e136b1abaae78388995fa428b8038a7 Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Date: Sun, 13 May 2018 17:56:32 -0700 Subject: [PATCH 017/208] so long, Zenbot --- README.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4bcb535ee4..40e8373b11 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,23 @@ # Zenbot [![Build/Test Status](https://travis-ci.org/DeviaVir/zenbot.svg?branch=master)](https://travis-ci.org/DeviaVir/zenbot) [![Greenkeeper badge](https://badges.greenkeeper.io/DeviaVir/zenbot.svg)](https://greenkeeper.io/) -## Current Status +## Current Status (UPDATE MAY 13th '18) -Zenbot 4 is functional, but is having trouble reliably making profit. At this point, **I would recommend against trading with large amounts** until some of these issues can be worked out: +Hey guys! -- Many people are reporting [losses in live trading](https://github.com/carlos8f/zenbot/issues/189) even if the simulation results and/or paper trading is positive. -- This is my highest priority right now, since an unprofitable bot is not worth much, but please understand that reliably making profit is hard, and so is making a realistic simulator. -- The losses may be due to the default strategy not working well in sideways (non-trending) market conditions, slippage during limit order execution, or both. Currently I would recommend against using Zenbot on a market that is non-trending or trending generally downwards. -- The limit-order strategy that Zenbot uses to avoid taker fees, is prone to race conditions and delays. A mode for using market-type orders will probably need to be made, which may make frequent-trade strategies less viable due to fees, but more reliable execution overall. -- An upcoming feature will allow Zenbot to use a limited amount of your balance, which will help with experimenting with live trading, but mitigating the possible losses from the issues above. +It's been so long. I'm back, and I have a brand new bot in development. It's code-named **Bot18**, and it's kicking ass so far. -Zenbot is a hobby project for me and I'm sorry that I can't devote myself full-time to it. Since I'm getting busier, development may slow down a bit from here, so please be patient if issues aren't fixed right away. +I wrote a big Medium post detailing what's going on. I'm so excited to explore a brand new engine and the new strategies it makes possible. + +I will be developing solely on **Bot18** going forward and probably open-sourcing it soon once it stabilizes. Zenbot can live on, but I won't be updating it anymore. It's in the good hands of @DeviaVir who is the best maintainer I could ask for 👍) + +Medium post: https://medium.com/@carlos8f_11468/introducing-bot18-the-new-crypto-trading-bot-to-supersede-zenbot-and-unleash-the-zalgo-da8464b41e53 + +Issue: https://github.com/DeviaVir/zenbot/issues/1589 + +![bot18_icon](https://user-images.githubusercontent.com/106763/39973448-ead81bfc-56d4-11e8-9868-16b6d736fc97.png) + +~Carlos ## Questions Please ask (programming) questions related to zenbot on stackoverflow. The tag is [zenbot](https://stackoverflow.com/questions/tagged/zenbot). From 19f012e6bb1dea00cd41b1269cdd4d4770aad69f Mon Sep 17 00:00:00 2001 From: KonaeAkira Date: Mon, 14 May 2018 15:27:03 +0700 Subject: [PATCH 018/208] Fixed grammatical error in dashboard (#1588) --- templates/dashboard.ejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/dashboard.ejs b/templates/dashboard.ejs index e9566e1f75..735b103776 100644 --- a/templates/dashboard.ejs +++ b/templates/dashboard.ejs @@ -55,7 +55,7 @@
From 90f8f823e79b21704139938748d7eb7bb4902ff7 Mon Sep 17 00:00:00 2001 From: Aleksander Palyan Date: Mon, 14 May 2018 11:27:20 +0300 Subject: [PATCH 019/208] Mistake with ws calc request. (fix for #516 and partially #868) (#1586) --- extensions/exchanges/bitfinex/exchange.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/exchanges/bitfinex/exchange.js b/extensions/exchanges/bitfinex/exchange.js index 6bad4eb636..e30f950e16 100644 --- a/extensions/exchanges/bitfinex/exchange.js +++ b/extensions/exchanges/bitfinex/exchange.js @@ -407,7 +407,7 @@ module.exports = function bitfinex (conf) { ws_client.send([0, 'calc', null, [ ['wallet_exchange_' + opts.currency], - ['wallet_exchange_' + opts.wallet + '_' + opts.asset] + ['wallet_exchange_' + opts.asset] ]]) } catch (e) { if (so.debug) { From d104103a68f62e572150c20cf285c77b1f500c3e Mon Sep 17 00:00:00 2001 From: TechupBusiness <38460054+TechupBusiness@users.noreply.github.com> Date: Mon, 14 May 2018 10:30:14 +0200 Subject: [PATCH 020/208] Docker and commandline improvements (#1583) * [BUG] Docker: Closed critical public access to non-protected database * [ENH] Improved docker handling (synced folder, alpine image for production) * [ENH] Add initial Makefile * [ENH] Docker: Add traefik reverse proxy support * [CLEAN] Cleanup data files from repo --- .env-sample | 5 ++ .gitignore | 3 +- Dockerfile | 18 +++-- Makefile | 79 +++++++++++++++++++ conf-sample.js | 2 +- docker-compose-traefik.yml | 67 ++++++++++++++++ docker-compose.yml | 26 +++--- extensions/output/api.js | 2 +- .../backtesting_1496817528.csv | 67 ---------------- zenbot.sh | 2 +- 10 files changed, 181 insertions(+), 90 deletions(-) create mode 100644 .env-sample create mode 100644 Makefile create mode 100644 docker-compose-traefik.yml delete mode 100644 scripts/auto_backtester/backtesting_1496817528.csv diff --git a/.env-sample b/.env-sample new file mode 100644 index 0000000000..2e1fc00086 --- /dev/null +++ b/.env-sample @@ -0,0 +1,5 @@ +BASIC_AUTH_ZEN=ommm:$apr1$1n0zqO2y$A2ueB9zMWZTYTtfckFhql1 +TRAEFIK_HOST_ZEN=myhost.com +BASIC_AUTH_DB=ommm:$apr1$1n0zqO2y$A2ueB9zMWZTYTtfckFhql1 +TRAEFIK_HOST_DB=db.myhost.com +TRAEFIK_NETWORK_NAME=traefik-proxy \ No newline at end of file diff --git a/.gitignore b/.gitignore index b609715067..94de3e5704 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,5 @@ dist/* simulations/sim_*.json gen.*.bat gen.*.sh - +.env +scripts/auto_backtester/backtesting_*.csv diff --git a/Dockerfile b/Dockerfile index dd23218fee..f9e5ab9881 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,21 @@ -FROM node:8 - -RUN mkdir -p /app +FROM node:8 as builder +ADD . /app WORKDIR /app - -COPY . /app RUN npm install -g node-gyp RUN npm install --unsafe +FROM node:8-alpine + +ADD . /app +WORKDIR /app + +COPY --from=builder /usr/local/lib/node_modules/ /usr/local/lib/node_modules/ +COPY --from=builder /app/node_modules /app/node_modules/ +COPY --from=builder /app/dist /app/dist/ + RUN ln -s /app/zenbot.sh /usr/local/bin/zenbot ENV NODE_ENV production -ENTRYPOINT ["/usr/local/bin/node", "zenbot.js"] +ENTRYPOINT ["/app/zenbot.sh"] CMD [ "trade", "--paper" ] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..31246a6e87 --- /dev/null +++ b/Makefile @@ -0,0 +1,79 @@ +ARGS = $(filter-out $@,$(MAKECMDGOALS)) +MAKEFLAGS += --silent + +list: + sh -c "echo; $(MAKE) -p no_targets__ | awk -F':' '/^[a-zA-Z0-9][^\$$#\/\\t=]*:([^=]|$$)/ {split(\$$1,A,/ /);for(i in A)print A[i]}' | grep -v '__\$$' | grep -v 'Makefile'| sort" + +############################# +# ZENBOT +############################# + +list-strategies: + sudo docker-compose exec server zenbot list-strategies $(ARGS) + +list-selectors: + sudo docker-compose exec server zenbot list-selectors $(ARGS) + +backfill: + sudo docker-compose exec server zenbot backfill $(ARGS) + +sim: + sudo docker-compose exec server zenbot sim $(ARGS) + +trade: + sudo docker-compose exec server zenbot trade $(ARGS) + +paper: + sudo docker-compose exec server zenbot trade --paper $(ARGS) + +balance: + sudo docker-compose exec server zenbot balance $(ARGS) + +buy: + sudo docker-compose exec server zenbot buy $(ARGS) + +sell: + sudo docker-compose exec server zenbot sell $(ARGS) + +zenbot: + sudo docker-compose exec server zenbot $(ARGS) + +############################# +# Docker machine states +############################# + +up: + sudo docker-compose up -d + +start: + sudo docker-compose start + +stop: + sudo docker-compose stop + +state: + sudo docker-compose ps + +rebuild: + sudo docker-compose stop + sudo docker-compose pull + sudo docker-compose rm --force server + sudo docker-compose rm --force mongodb + sudo docker-compose rm --force adminmongo + sudo docker-compose build --no-cache + sudo docker-compose up -d --force-recreate + +shell: + sudo docker-compose exec server /bin/sh + +shellw: + docker exec -it -u root $$(docker-compose ps -q server) /bin/sh + +logs: + sudo docker-compose logs $(ARGS) + +############################# +# Argument fix workaround +############################# +%: + @: diff --git a/conf-sample.js b/conf-sample.js index 805c4c6932..b9a0106ee7 100644 --- a/conf-sample.js +++ b/conf-sample.js @@ -252,4 +252,4 @@ c.output = {} c.output.api = {} c.output.api.on = true c.output.api.ip = '0.0.0.0' // IPv4 or IPv6 address to listen on, uses all available interfaces if omitted -c.output.api.port = 0 // 0 = random port +c.output.api.port = 0 // 0 = random port, set to 17365 if you use docker diff --git a/docker-compose-traefik.yml b/docker-compose-traefik.yml new file mode 100644 index 0000000000..4ef1d7b2a1 --- /dev/null +++ b/docker-compose-traefik.yml @@ -0,0 +1,67 @@ +version: '3.1' +services: + zenbotserver: + build: + context: . + dockerfile: Dockerfile + volumes: + - ./:/app/ + - /app/node_modules/ + - /app/dist/ + restart: always + tty: true + expose: + - "17365" + labels: + - "traefik.enable=true" + - "traefik.frontend.rule=Host:$(TRAEFIK_HOST_ZEN)" + - "traefik.docker.network=$(TRAEFIK_NETWORK_NAME)" + - "traefik.port=17365" + - "traefik.frontend.auth.basic=$(BASIC_AUTH_ZEN)" + networks: + - internal + - proxy + depends_on: + - mongodb + environment: + - MONGODB_PORT_27017_TCP_ADDR=mongodb + + mongodb: + image: mongo:latest + restart: always + volumes: + - ./data/db:/data/db + command: mongod --smallfiles --bind_ip=0.0.0.0 --logpath=/dev/null + networks: + - internal + expose: + - 27017 + + # "adminMongo is a Web based user interface (GUI) to handle all your MongoDB connections/databases needs." + adminmongo: + image: mrvautin/adminmongo + expose: + - 1234 + depends_on: + - mongodb + environment: + - "CONN_NAME=zenbot_mongodb" + - "DB_HOST=mongodb" + - "DB_PORT=27017" + labels: + - "traefik.enable=true" + - "traefik.frontend.rule=Host:$(TRAEFIK_HOST_DB)" + - "traefik.docker.network=$(TRAEFIK_NETWORK_NAME)" + - "traefik.port=1234" + - "traefik.frontend.auth.basic=$(BASIC_AUTH_DB)" + networks: + - internal + - proxy + command: "npm start" + +networks: + proxy: + external: + name: "$(TRAEFIK_NETWORK_NAME)" + internal: + external: false \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index bc05dbd3aa..111a35b7c5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,19 +1,19 @@ version: '3.1' - services: - server: - image: deviavir/zenbot:unstable + build: + context: . + dockerfile: Dockerfile volumes: - - ./conf.js:/app/conf.js - - ./extensions:/app/extensions - - ./simulations:/app/simulations - - ./models:/app/models - links: - - mongodb - command: [ "trade", "--paper" ] + - ./:/app/ + - /app/node_modules/ + - /app/dist/ + # Avoid syncing database to our server + - /app/database/ restart: always tty: true + ports: + - "17365:17365" depends_on: - mongodb environment: @@ -22,10 +22,10 @@ services: mongodb: image: mongo:latest volumes: - - ./data/db:/data/db + - ./database:/data/db command: mongod --smallfiles --bind_ip=0.0.0.0 --logpath=/dev/null - ports: - - 27017:27017 + expose: + - 27017 # Remove below comments to use this container. "adminMongo is a Web based user interface (GUI) to handle all your MongoDB connections/databases needs." # diff --git a/extensions/output/api.js b/extensions/output/api.js index 65d9d2129b..14cf169b1f 100644 --- a/extensions/output/api.js +++ b/extensions/output/api.js @@ -46,7 +46,7 @@ module.exports = function api () { res.sendFile(path.join(__dirname+'../../../stats/index.html')) }) - if (ip) { + if (ip && ip !== '0.0.0.0') { app.listen(port, ip) tradeObject.url = ip + ':' + port + '/' } else { diff --git a/scripts/auto_backtester/backtesting_1496817528.csv b/scripts/auto_backtester/backtesting_1496817528.csv deleted file mode 100644 index 6dca950856..0000000000 --- a/scripts/auto_backtester/backtesting_1496817528.csv +++ /dev/null @@ -1,67 +0,0 @@ -"ROI (%)","Error Rate (%)","Win/Loss Ratio","# Trades/Day","Ending Balance ($)","# Wins","# Losses","Period","# Days","Trend EMA","Oversold RSI","Oversold RSI Periods","Neutral Rate","Full Parameters" -73.105,41.67,1.4,1.2,1731.05257439,7,5,"10m",10,11,27,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 27, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -70.575,38.89,1.571,1.8,1705.74693208,11,7,"10m",10,11,24,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 24, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -70.575,38.89,1.571,1.8,1705.74693208,11,7,"10m",10,11,26,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 26, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -70.575,38.89,1.571,1.8,1705.74693208,11,7,"10m",10,11,29,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 29, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -70.575,38.89,1.571,1.8,1705.74693208,11,7,"10m",10,11,27,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 27, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -69.457,38.89,1.571,1.8,1694.56698024,11,7,"10m",10,11,30,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 30, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -68.081,40,1.5,1.5,1680.80927738,9,6,"10m",10,11,25,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 25, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -67.017,42.86,1.333,2.1,1670.17258222,12,9,"10m",10,11,22,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 22, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -67.017,42.86,1.333,2.1,1670.17258222,12,9,"10m",10,11,24,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 24, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -66.979,40,1.5,1.5,1669.79277397,9,6,"10m",10,11,28,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 28, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -66.979,40,1.5,1.5,1669.79277397,9,6,"10m",10,11,29,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 29, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -66.979,40,1.5,1.5,1669.79277397,9,6,"10m",10,11,26,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 26, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -64.074,46.15,1.167,1.3,1640.73664917,7,6,"10m",10,11,28,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 28, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.735,50,1,1,1637.34797366,5,5,"10m",10,11,29,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 29, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.432,42.86,1.333,2.1,1634.319696,12,9,"10m",10,11,25,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 25, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.327,44.44,1.25,1.8,1633.27454686,10,8,"10m",10,11,28,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 28, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.327,44.44,1.25,1.8,1633.27454686,10,8,"10m",10,11,25,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 25, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.327,44.44,1.25,1.8,1633.27454686,10,8,"10m",10,11,22,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 22, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.327,44.44,1.25,1.8,1633.27454686,10,8,"10m",10,11,21,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 21, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -63.327,44.44,1.25,1.8,1633.27454686,10,8,"10m",10,11,23,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 23, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -61.923,47.62,1.1,2.1,1619.23474146,11,10,"10m",10,11,24,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 24, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -61.923,47.62,1.1,2.1,1619.23474146,11,10,"10m",10,11,27,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 27, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -61.923,47.62,1.1,2.1,1619.23474146,11,10,"10m",10,11,26,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 26, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -61.923,47.62,1.1,2.1,1619.23474146,11,10,"10m",10,11,23,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 23, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -61.495,50,1,1,1614.94754928,5,5,"10m",10,11,30,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 30, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -61.052,47.62,1.1,2.1,1610.51960989,11,10,"10m",10,11,20,6,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 20, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -60.524,55.56,0.8,14.4,1605.2415965,64,80,"10m",10,11,24,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 24, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -60.524,55.56,0.8,14.4,1605.2415965,64,80,"10m",10,11,27,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 27, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -59.81,55,0.818,14,1598.10388812,63,77,"10m",10,11,22,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 22, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -59.334,54.93,0.821,14.2,1593.33858752,64,78,"10m",10,11,23,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 23, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -59.284,54.61,0.831,14.1,1592.83920785,64,77,"10m",10,11,26,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 26, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -59.134,54.61,0.831,14.1,1591.33659364,64,77,"10m",10,11,24,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 24, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -58.592,56.43,0.772,14,1585.91915139,61,79,"10m",10,11,30,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 30, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -58.466,55.24,0.81,14.3,1584.66048935,64,79,"10m",10,11,20,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 20, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -58.299,40,1.5,1.5,1582.99449989,9,6,"10m",10,11,30,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 30, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -57.854,55.56,0.8,14.4,1578.54444864,64,80,"10m",10,11,25,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 25, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -57.854,55.56,0.8,14.4,1578.54444864,64,80,"10m",10,11,21,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 21, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -57.687,54.2,0.845,13.1,1576.87029482,60,71,"10m",10,11,27,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 27, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.996,54.55,0.833,2.2,1569.95588157,10,12,"10m",10,11,23,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 23, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.996,54.55,0.833,2.2,1569.95588157,10,12,"10m",10,11,21,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 21, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.96,56.74,0.762,14.1,1569.59736789,61,80,"10m",10,11,28,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 28, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.755,55.63,0.797,14.2,1567.55050214,63,79,"10m",10,11,22,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 22, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.465,56.74,0.762,14.1,1564.64543291,61,80,"10m",10,11,23,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 23, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.28,57.04,0.753,14.2,1562.80151824,61,81,"10m",10,11,24,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 24, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.158,57.14,0.75,14,1561.58065544,60,80,"10m",10,11,26,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 26, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -56.135,57.45,0.741,14.1,1561.34525592,60,81,"10m",10,11,27,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 27, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -55.431,54.61,0.831,14.1,1554.30951116,64,77,"10m",10,11,25,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 25, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -54.779,56.34,0.775,14.2,1547.79433817,62,80,"10m",10,11,21,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 21, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -54.661,57.14,0.75,14,1546.61311256,60,80,"10m",10,11,29,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 29, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -54.309,56.74,0.762,14.1,1543.08878821,61,80,"10m",10,11,23,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 23, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -53.786,54.69,0.829,12.8,1537.85737777,58,70,"10m",10,11,29,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 29, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -53.501,54.62,0.831,13,1535.00548805,59,71,"10m",10,11,28,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 28, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -52.668,55.3,0.808,13.2,1526.67818966,59,73,"10m",10,11,26,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 26, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -52.105,54.7,0.828,11.7,1521.04622822,53,64,"10m",10,11,30,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 30, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -51.373,55.88,0.789,13.6,1513.73292807,60,76,"10m",10,11,29,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 29, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -51.323,57.66,0.734,13.7,1513.23147314,58,79,"10m",10,11,20,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 20, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -51.284,56.93,0.756,13.7,1512.83532848,59,78,"10m",10,11,28,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 28, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -51.053,55.56,0.8,13.5,1510.52581853,60,75,"10m",10,11,25,6,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 25, ""oversold_rsi_periods"": 6, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 6, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -50.157,54.55,0.833,2.2,1501.56698819,10,12,"10m",10,11,20,7,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 20, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -49.3,59.09,0.692,2.2,1492.99620027,9,13,"10m",10,11,22,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 22, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -49.241,59.09,0.692,2.2,1492.40600674,9,13,"10m",10,11,20,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 20, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -49.241,59.09,0.692,2.2,1492.40600674,9,13,"10m",10,11,21,8,0.25,"{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": 0.25, ""order_adjust_time"": 30000, ""oversold_rsi"": 21, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -48.802,57.66,0.734,13.7,1488.02481911,58,79,"10m",10,11,21,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 21, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -47.998,56.74,0.762,14.1,1479.97564923,61,80,"10m",10,11,20,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 20, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -47.806,57.14,0.75,14,1478.05832521,60,80,"10m",10,11,22,8,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 22, ""oversold_rsi_periods"": 8, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 8, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" -46.633,54.2,0.845,13.1,1466.33298384,60,71,"10m",10,11,30,7,"auto","{ ""asset_capital"": 0, ""buy_pct"": 98, ""buy_stop_pct"": 0, ""currency_capital"": 1000, ""days"": 10, ""markup_pct"": 0, ""max_sell_loss_pct"": 25, ""max_slippage_pct"": 5, ""min_periods"": 52, ""mode"": ""sim"", ""neutral_rate"": ""auto"", ""order_adjust_time"": 30000, ""oversold_rsi"": 30, ""oversold_rsi_periods"": 7, ""period"": ""10m"", ""profit_stop_enable_pct"": 0, ""profit_stop_pct"": 1, ""rsi_periods"": 7, ""selector"": ""gdax.ETH-USD"", ""sell_pct"": 98, ""sell_stop_pct"": 0, ""start"": 1495929600000, ""stats"": false, ""strategy"": ""trend_ema"", ""trend_ema"": 11, ""verbose"": false}" \ No newline at end of file diff --git a/zenbot.sh b/zenbot.sh index 6e1d5275e7..7e917e0a1d 100755 --- a/zenbot.sh +++ b/zenbot.sh @@ -1,2 +1,2 @@ -#!/bin/bash +#!/bin/sh env node zenbot.js $@ From 1735ab4b54003662971e3381163a6c1249a42cb0 Mon Sep 17 00:00:00 2001 From: defkev Date: Mon, 14 May 2018 10:30:30 +0200 Subject: [PATCH 021/208] Webpack: split js and css into its own bundles (#1582) So stylesheets get loaded if the browser has strict MIME-Type checking enabled. --- package.json | 1 + templates/dashboard.ejs | 2 +- webpack.config.js | 12 ++++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index ddeb80fcf6..446dbded21 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "exports-loader": "^0.7.0", "expose-loader": "^0.7.5", "express": "^4.16.3", + "extract-text-webpack-plugin": "^4.0.0-beta.0", "file-loader": "^1.1.6", "forex.analytics": "github:mkmarek/forex.analytics#7bc278987700d4204e959af17de61495941d1a14", "gdax": "^0.7.0", diff --git a/templates/dashboard.ejs b/templates/dashboard.ejs index 735b103776..bf1c485be3 100644 --- a/templates/dashboard.ejs +++ b/templates/dashboard.ejs @@ -22,7 +22,7 @@ <%= asset.toUpperCase() %>/<%= currency.toUpperCase() %> on <%= exchange.name.toUpperCase() %> - Dashboard - +