2020-01-05 19:16:13 -06:00
[
{
"id" : "6d543cb4.ed3084" ,
"type" : "tab" ,
2020-01-08 20:25:22 -06:00
"label" : "Simulation Dynamic HF Trading" ,
2020-01-07 19:20:08 -06:00
"disabled" : false ,
"info" : ""
} ,
{
"id" : "5d834238.9ad88c" ,
"type" : "tab" ,
2020-11-30 11:38:12 -06:00
"label" : "Cyclic buy" ,
2020-01-05 19:16:13 -06:00
"disabled" : false ,
"info" : ""
} ,
2020-01-07 09:22:34 -06:00
{
"id" : "d8e8a587.a39408" ,
"type" : "tab" ,
"label" : "HTML Queries" ,
"disabled" : false ,
"info" : ""
} ,
2020-01-07 19:20:08 -06:00
{
"id" : "e67f589a.f8d378" ,
"type" : "tab" ,
"label" : "Misc" ,
"disabled" : false ,
"info" : ""
} ,
2020-01-08 20:25:22 -06:00
{
"id" : "75185287.024c5c" ,
"type" : "tab" ,
"label" : "LiveDynHF-ETC" ,
2021-01-04 11:36:23 -06:00
"disabled" : true ,
2020-01-08 20:25:22 -06:00
"info" : ""
} ,
2020-11-30 11:38:12 -06:00
{
"id" : "5b601c88.f89c94" ,
"type" : "tab" ,
"label" : "LiveDynHF-DOT" ,
"disabled" : false ,
"info" : ""
} ,
2020-12-01 20:35:42 -06:00
{
"id" : "14ed22c2.6530bd" ,
"type" : "tab" ,
"label" : "LiveDynHF-XMR" ,
2020-12-24 18:11:28 -06:00
"disabled" : true ,
"info" : ""
} ,
{
"id" : "791ce869.901798" ,
"type" : "tab" ,
"label" : "LiveDynHF-NG-XMR" ,
2020-12-01 20:35:42 -06:00
"disabled" : false ,
"info" : ""
} ,
2021-01-04 11:36:23 -06:00
{
"id" : "28401549.718faa" ,
"type" : "tab" ,
"label" : "LiveDynHF-NG-ETC" ,
"disabled" : false ,
"info" : ""
} ,
2020-01-07 09:22:34 -06:00
{
"id" : "af98615f.cf9ce" ,
"type" : "subflow" ,
"name" : "DB Data to HTML Table" ,
"info" : "" ,
"category" : "" ,
"in" : [
{
"x" : 20 ,
"y" : 80 ,
"wires" : [
{
"id" : "3ff8fa1b.3148f6"
}
]
}
] ,
"out" : [
{
"x" : 320 ,
"y" : 240 ,
"wires" : [
{
"id" : "71b8fd74.2d9404" ,
"port" : 0
}
]
}
] ,
"env" : [ ] ,
"color" : "#DDAA99"
} ,
2020-01-05 19:16:13 -06:00
{
"id" : "42702610.230028" ,
"type" : "kraken-credentials" ,
"z" : "" ,
"name" : "DFLT"
} ,
{
"id" : "c0dcbde0.3085" ,
"type" : "sqlitedb" ,
"z" : "" ,
"db" : "KrakenTradingDB.sqlite3" ,
"mode" : "RW"
} ,
2020-01-07 09:22:34 -06:00
{
"id" : "4378beea.a2c7f" ,
"type" : "sqlitedb" ,
"z" : "" ,
"db" : "KrakenTradingDB.sqlite3" ,
"mode" : "RWC"
} ,
2020-01-05 19:16:13 -06:00
{
2020-01-07 19:20:08 -06:00
"id" : "e64b38bb.529c88" ,
"type" : "kraken-credentials" ,
"z" : "" ,
"name" : "DFLT"
2020-01-05 19:16:13 -06:00
} ,
{
"id" : "a669c08c.d0185" ,
"type" : "sqlite" ,
"z" : "6d543cb4.ed3084" ,
"mydb" : "c0dcbde0.3085" ,
"sqlquery" : "msg.topic" ,
"sql" : "" ,
"name" : "" ,
2020-01-07 19:20:08 -06:00
"x" : 1010 ,
"y" : 120 ,
2020-01-05 19:16:13 -06:00
"wires" : [
[ ]
]
} ,
{
"id" : "4f94e60f.4d3838" ,
"type" : "function" ,
"z" : "6d543cb4.ed3084" ,
"name" : "Build Insert Statement" ,
"func" : "msg.topic=\"Insert into KrakenQuotes (Symbol,Data) values ('XETCZUSD','\" + JSON.stringify(msg.payload.XETCZUSD) + \"');\"\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-07 19:20:08 -06:00
"x" : 720 ,
"y" : 160 ,
2020-01-05 19:16:13 -06:00
"wires" : [
[
"853572da.0b0bf" ,
"a669c08c.d0185"
]
]
} ,
{
"id" : "853572da.0b0bf" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
2020-01-07 19:20:08 -06:00
"x" : 950 ,
"y" : 180 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "b6c88df3.41573" ,
"type" : "get-ticker-information" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
2020-01-07 19:20:08 -06:00
"x" : 470 ,
"y" : 440 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"8f27b1c3.3277e" ,
"1a447d86.305162" ,
"4f94e60f.4d3838"
] ,
[
"57c6ead4.4943d4"
]
]
} ,
{
"id" : "b131c158.9b6e5" ,
"type" : "inject" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
"topic" : "" ,
"payload" : "{\"pair\":\"XETCZUSD\"}" ,
"payloadType" : "json" ,
2020-01-08 20:25:22 -06:00
"repeat" : "" ,
2020-01-06 20:57:03 -06:00
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
2020-01-07 19:20:08 -06:00
"x" : 280 ,
"y" : 440 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"b6c88df3.41573"
]
]
} ,
{
"id" : "8f27b1c3.3277e" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
2020-01-07 19:20:08 -06:00
"x" : 710 ,
"y" : 280 ,
2020-01-05 19:16:13 -06:00
"wires" : [ ]
} ,
{
2020-01-06 20:57:03 -06:00
"id" : "57c6ead4.4943d4" ,
2020-01-05 19:16:13 -06:00
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
2020-01-07 09:22:34 -06:00
"name" : "Ticker Retrieval Error" ,
2020-01-05 19:16:13 -06:00
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-06 20:57:03 -06:00
"tostatus" : false ,
2020-01-07 09:22:34 -06:00
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-07 19:20:08 -06:00
"x" : 630 ,
"y" : 500 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "1a447d86.305162" ,
"type" : "switch" ,
"z" : "6d543cb4.ed3084" ,
"name" : "Initialization Needed?" ,
"property" : "lastExecPrice" ,
"propertyType" : "flow" ,
"rules" : [
{
"t" : "null"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
2020-01-07 19:20:08 -06:00
"x" : 680 ,
"y" : 420 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"b14715f9.da01b8"
] ,
[
"746dd800.489408" ,
"3fcb4bfe.6d4b84"
]
]
} ,
{
"id" : "b14715f9.da01b8" ,
"type" : "change" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "lastExecPrice" ,
"pt" : "flow" ,
"to" : "payload.XETCZUSD.a[0]" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "maxVolume" ,
"pt" : "flow" ,
"to" : "10" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "minVolume" ,
"pt" : "flow" ,
"to" : "0" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "currVolume" ,
"pt" : "flow" ,
"to" : "0" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "delta" ,
"pt" : "flow" ,
"to" : "0.1" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "grosBalance" ,
"pt" : "flow" ,
"to" : "0" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "commission" ,
"pt" : "flow" ,
"to" : "0" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "acctBalance" ,
"pt" : "flow" ,
"to" : "100" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
2020-01-07 19:20:08 -06:00
"x" : 960 ,
"y" : 360 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[ ]
]
} ,
{
"id" : "713645b4.f9ba7c" ,
"type" : "switch" ,
"z" : "6d543cb4.ed3084" ,
"name" : "Action" ,
"property" : "action" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "eq" ,
"v" : "sell" ,
"vt" : "str"
} ,
{
"t" : "eq" ,
"v" : "buy" ,
"vt" : "str"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 3 ,
2020-01-07 19:20:08 -06:00
"x" : 1170 ,
"y" : 500 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"8fc8be9f.e3552" ,
"894f2795.914b38"
] ,
[
"9073f8dd.8a8558" ,
"e961895.42ab678"
] ,
[
"1bc0ea09.db8676"
]
]
} ,
{
"id" : "8fc8be9f.e3552" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "gt (Sell)" ,
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-05 19:16:13 -06:00
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
2020-01-07 19:20:08 -06:00
"x" : 1520 ,
"y" : 420 ,
2020-01-05 19:16:13 -06:00
"wires" : [ ]
2020-01-06 20:57:03 -06:00
} ,
{
"id" : "9073f8dd.8a8558" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "lt (buy)" ,
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-06 20:57:03 -06:00
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
2020-01-07 19:20:08 -06:00
"x" : 1520 ,
"y" : 500 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "1bc0ea09.db8676" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "small" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-07 19:20:08 -06:00
"x" : 1490 ,
"y" : 640 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "746dd800.489408" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "{\"le\":$flowContext('lastExecPrice'),\"cp\":payload.XETCZUSD.a[0] }" ,
"targetType" : "jsonata" ,
2020-01-07 19:20:08 -06:00
"x" : 880 ,
"y" : 580 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "37af9cb0.cd7d74" ,
"type" : "inject" ,
"z" : "6d543cb4.ed3084" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
2020-01-07 19:20:08 -06:00
"x" : 780 ,
"y" : 340 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"b14715f9.da01b8"
]
]
} ,
{
"id" : "894f2795.914b38" ,
"type" : "switch" ,
"z" : "6d543cb4.ed3084" ,
"name" : "MinReached?" ,
"property" : "currVolume" ,
"propertyType" : "flow" ,
"rules" : [
{
"t" : "gt" ,
"v" : "minVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
2020-01-07 19:20:08 -06:00
"x" : 1620 ,
"y" : 460 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"db4dcb29.89cd38" ,
"7a524b14.ab2ea4"
] ,
[
"c6b046f0.da94b8" ,
"10898ef6.fab381"
]
]
} ,
{
"id" : "c6b046f0.da94b8" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "Not Selling, min Volume reached." ,
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-06 20:57:03 -06:00
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-07 19:20:08 -06:00
"x" : 1920 ,
"y" : 500 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "db4dcb29.89cd38" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "SELLING!" ,
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-06 20:57:03 -06:00
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-07 19:20:08 -06:00
"x" : 1850 ,
"y" : 420 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "9ff35104.7db0d" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "BUYING!" ,
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-06 20:57:03 -06:00
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-07 19:20:08 -06:00
"x" : 1830 ,
"y" : 580 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "e961895.42ab678" ,
"type" : "switch" ,
"z" : "6d543cb4.ed3084" ,
"name" : "MaxReached?" ,
"property" : "currVolume" ,
"propertyType" : "flow" ,
"rules" : [
{
"t" : "lt" ,
"v" : "maxVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
2020-01-07 19:20:08 -06:00
"x" : 1620 ,
"y" : 600 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"9ff35104.7db0d" ,
"11de6ea9.7cbab1"
] ,
[
"cf8bb8be.0de778" ,
"b1857f61.f3b9a"
]
]
} ,
{
"id" : "cf8bb8be.0de778" ,
"type" : "debug" ,
"z" : "6d543cb4.ed3084" ,
"name" : "Not buying, max Volume reached." ,
"active" : true ,
"tosidebar" : true ,
2020-01-07 09:22:34 -06:00
"console" : true ,
2020-01-06 20:57:03 -06:00
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-07 19:20:08 -06:00
"x" : 1910 ,
"y" : 660 ,
2020-01-06 20:57:03 -06:00
"wires" : [ ]
} ,
{
"id" : "3fcb4bfe.6d4b84" ,
"type" : "function" ,
"z" : "6d543cb4.ed3084" ,
"name" : "Determine Action" ,
2020-01-08 20:25:22 -06:00
"func" : "//$number(payload.XETCZUSD.a[0]) - $number($flowContext('lastExecPrice'))\n\nconst delta=flow.get('delta'); // how much price move to take action?\nlet askPrice=msg.payload.XETCZUSD.a[0];\nlet bidPrice=msg.payload.XETCZUSD.b[0];\nlet lastExecPrice=flow.get('lastExecPrice');\nif (lastExecPrice === undefined) { \n lastExecPrice=askPrice; \n flow.set('lastExecPrice',lastExecPrice);\n}\n\nmsg.lastExecPrice=lastExecPrice;\n\nif (bidPrice>lastExecPrice+delta) {\n msg.action=\"sell\";\n msg.price=bidPrice;\n} else if (askPrice<lastExecPrice-delta) {\n msg.action=\"buy\";\n msg.price=askPrice;\n} else {\n msg.action=\"nothing\";\n}\n\nreturn msg;" ,
2020-01-06 20:57:03 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-08 20:25:22 -06:00
"x" : 990 ,
2020-01-07 19:20:08 -06:00
"y" : 500 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[
"713645b4.f9ba7c"
]
]
} ,
{
"id" : "7a524b14.ab2ea4" ,
"type" : "function" ,
"z" : "6d543cb4.ed3084" ,
"name" : "SellAction" ,
"func" : "let commission = flow.get('commission');\nlet grosBalance = flow.get('grosBalance');\nlet acctBalance = flow.get('acctBalance');\nlet delta = flow.get('delta');\n\nlet sellPrice = Number(msg.payload.XETCZUSD.b[0]);\n\ncommission += sellPrice*0.0026;\ngrosBalance -= 1;\nacctBalance += sellPrice;\n\nflow.set('commission',commission);\nflow.set('grosBalance',grosBalance);\nflow.set('acctBalance',acctBalance);\n\nflow.set('lastExecPrice',sellPrice);\nflow.set('currVolume',flow.get('currVolume')-1);\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-07 19:20:08 -06:00
"x" : 1830 ,
"y" : 380 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[ ]
]
} ,
{
"id" : "11de6ea9.7cbab1" ,
"type" : "function" ,
"z" : "6d543cb4.ed3084" ,
"name" : "BuyAction" ,
"func" : "let commission = flow.get('commission');\nlet grosBalance = flow.get('grosBalance');\nlet acctBalance = flow.get('acctBalance');\nlet delta = flow.get('delta');\n\nlet buyPrice = Number(msg.payload.XETCZUSD.a[0]);\n\ncommission += buyPrice*0.0026;\ngrosBalance += 1;\nacctBalance -= buyPrice;\n\nflow.set('commission',commission);\nflow.set('grosBalance',grosBalance);\nflow.set('acctBalance',acctBalance);\n\nflow.set('lastExecPrice',buyPrice);\nflow.set('currVolume',flow.get('currVolume')+1);\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-07 19:20:08 -06:00
"x" : 1820 ,
"y" : 540 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[ ]
]
} ,
{
"id" : "10898ef6.fab381" ,
"type" : "function" ,
"z" : "6d543cb4.ed3084" ,
"name" : "NoSellAction" ,
"func" : "let sellPrice = Number(msg.payload.XETCZUSD.b[0]);\n\nflow.set('lastExecPrice',sellPrice);\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-07 19:20:08 -06:00
"x" : 1850 ,
"y" : 460 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[ ]
]
} ,
{
"id" : "b1857f61.f3b9a" ,
"type" : "function" ,
"z" : "6d543cb4.ed3084" ,
"name" : "NoBuyAction" ,
"func" : "let buyPrice = Number(msg.payload.XETCZUSD.a[0]);\n\nflow.set('lastExecPrice',sellPrice);\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-07 19:20:08 -06:00
"x" : 1830 ,
"y" : 620 ,
2020-01-06 20:57:03 -06:00
"wires" : [
[ ]
]
2020-01-07 09:22:34 -06:00
} ,
{
"id" : "71b8fd74.2d9404" ,
"type" : "template" ,
"z" : "af98615f.cf9ce" ,
"name" : "HTML" ,
"field" : "payload" ,
"fieldType" : "msg" ,
"format" : "handlebars" ,
"syntax" : "mustache" ,
"template" : "<html>\n <head>\n <title>{{payload.title}}</title>\n <style>{{payload.style}}</style>\n </head>\n<body>\n<table border='1'>\n <tr>\n {{#payload.header}}\n <th>{{.}}</th>\n {{/payload.header}}\n </tr>\n {{#payload.data}}\n <tr>\n {{#.}}\n <td><pre>{{.}}</pre></td>\n {{/.}}\n </tr>\n {{/payload.data}}\n</table>\n</body>\n</html>" ,
"output" : "str" ,
"x" : 190 ,
"y" : 240 ,
"wires" : [
[ ]
]
} ,
{
"id" : "3ff8fa1b.3148f6" ,
"type" : "function" ,
"z" : "af98615f.cf9ce" ,
"name" : "JSON Obj -> Array split Header and Data" ,
"func" : "function toArray(json_data){\n for(var i in json_data)\n result.push([i, json_data [i]]);\n}\n\nfunction getHeader(json_data){\n let keys=Object.keys(json_data);\n return keys;\n}\n\nlet pl=msg.payload;\ndelete msg.payload;\n\nmsg.payload={};\nmsg.payload.header=[];\nmsg.payload.data=[];\nmsg.payload.title=msg.title;\n\nlet y=[];\nfor(var i in pl) {\n if (i==1) {\n msg.payload.header=getHeader(pl[i]);\n }\n let x=[];\n for (var j in pl[i]){\n x.push(pl[i][j]);\n }\n y.push(x);\n}\n\nmsg.payload.data=y;\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 260 ,
"y" : 80 ,
"wires" : [
[
"325628f8.f9bb48"
]
]
} ,
{
"id" : "325628f8.f9bb48" ,
"type" : "template" ,
"z" : "af98615f.cf9ce" ,
"name" : "CSS" ,
"field" : "payload.style" ,
"fieldType" : "msg" ,
"format" : "handlebars" ,
"syntax" : "mustache" ,
"template" : "html,\nbody {\n height: 100%;\n}\nbody {\n margin: 0;\n background: #222222;\n font-family: sans-serif;\n font-weight: 100;\n}\n.container {\n position: absolute;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\ntable {\n width: 800px;\n border-collapse: collapse;\n overflow: hidden;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);\n}\ntd {\n padding: 0px;\n background-color: rgba(255, 255, 255, 0.2);\n color: #ffffff;\n text-align: left;\n}\npre {\n margin: 0;\n text-align: left;\n}\nth {\n background-color: #27206f;\n color: yellow;\n}\ntbody tr:hover {\n background-color: rgba(255, 255, 255, 0.3);\n}\ntbody td {\n position: relative;\n}\ntbody td:hover:before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: -9999px;\n bottom: -9999px;\n background-color: rgba(255, 255, 255, 0.2);\n z-index: -1;\n}\n" ,
"output" : "str" ,
"x" : 190 ,
"y" : 160 ,
"wires" : [
[
"71b8fd74.2d9404"
]
]
} ,
{
"id" : "8b96370c.e63028" ,
"type" : "debug" ,
"z" : "d8e8a587.a39408" ,
"d" : true ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 360 ,
"y" : 100 ,
"wires" : [ ]
} ,
{
"id" : "448c23fb.54356c" ,
"type" : "http response" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"statusCode" : "" ,
"headers" : { } ,
"x" : 1000 ,
"y" : 140 ,
"wires" : [ ]
} ,
{
"id" : "e7546e50.b4e6" ,
"type" : "sqlite" ,
"z" : "d8e8a587.a39408" ,
"mydb" : "4378beea.a2c7f" ,
"sqlquery" : "fixed" ,
"sql" : "select * from TradeGeneralLog order by ID desc limit 10000;" ,
"name" : "" ,
"x" : 680 ,
"y" : 140 ,
"wires" : [
[
"b67c9c51.fda15"
]
]
} ,
{
"id" : "79f2b3b4.db6cdc" ,
"type" : "change" ,
"z" : "d8e8a587.a39408" ,
"name" : "Set Title (Manual)" ,
"rules" : [
{
"t" : "set" ,
"p" : "title" ,
"pt" : "msg" ,
"to" : "LOGs" ,
"tot" : "str"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 300 ,
"y" : 140 ,
"wires" : [
[
"e7546e50.b4e6" ,
"8b96370c.e63028"
]
]
} ,
{
"id" : "b67c9c51.fda15" ,
"type" : "subflow:af98615f.cf9ce" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"env" : [ ] ,
"x" : 760 ,
"y" : 220 ,
"wires" : [
[
"448c23fb.54356c"
]
]
} ,
{
"id" : "7f957960.b6cd58" ,
"type" : "http in" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"url" : "/getLog" ,
"method" : "get" ,
"upload" : false ,
"swaggerDoc" : "" ,
"x" : 80 ,
"y" : 140 ,
"wires" : [
[
"79f2b3b4.db6cdc"
]
]
2020-01-07 19:20:08 -06:00
} ,
{
"id" : "1733f8e8.f401d7" ,
"type" : "http in" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"url" : "/ethquote" ,
"method" : "get" ,
"upload" : false ,
"swaggerDoc" : "" ,
"x" : 90 ,
"y" : 480 ,
"wires" : [
[
"466e0099.9d9f4" ,
"dccf207a.84fe"
]
]
} ,
{
"id" : "133190be.64ae9f" ,
"type" : "http response" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"statusCode" : "" ,
"headers" : { } ,
"x" : 1120 ,
"y" : 460 ,
"wires" : [ ]
} ,
{
"id" : "dccf207a.84fe" ,
"type" : "get-ticker-information" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"x" : 460 ,
"y" : 480 ,
"wires" : [
[
"98e46a7a.8e8f78"
] ,
[
"7bb32908.e9d688"
]
]
} ,
{
"id" : "98e46a7a.8e8f78" ,
"type" : "change" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "q.bid" ,
"pt" : "msg" ,
"to" : "payload.*.b[0]" ,
"tot" : "jsonata"
} ,
{
"t" : "set" ,
"p" : "q.ask" ,
"pt" : "msg" ,
"to" : "payload.*.a[0]" ,
"tot" : "jsonata"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 630 ,
"y" : 460 ,
"wires" : [
[
"d4c52c13.e1a43"
]
]
} ,
{
"id" : "d4c52c13.e1a43" ,
"type" : "change" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "payload" ,
"pt" : "msg" ,
"to" : "q" ,
"tot" : "msg"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 830 ,
"y" : 460 ,
"wires" : [
[
"63fe3995.999ad8"
]
]
} ,
{
"id" : "63fe3995.999ad8" ,
"type" : "csv" ,
"z" : "d8e8a587.a39408" ,
"name" : "" ,
"sep" : "," ,
"hdrin" : "" ,
"hdrout" : "" ,
"multi" : "one" ,
"ret" : "\\n" ,
"temp" : "" ,
"skip" : "0" ,
"strings" : true ,
"x" : 990 ,
"y" : 460 ,
"wires" : [
[
"133190be.64ae9f"
]
]
} ,
{
"id" : "466e0099.9d9f4" ,
"type" : "debug" ,
"z" : "d8e8a587.a39408" ,
"name" : "Incoming Ticker Query" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 350 ,
"y" : 420 ,
"wires" : [ ]
} ,
{
"id" : "7bb32908.e9d688" ,
"type" : "debug" ,
"z" : "d8e8a587.a39408" ,
"name" : "Error in Ticker Query" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 720 ,
"y" : 520 ,
"wires" : [ ]
} ,
{
"id" : "f11eec38.1437d" ,
"type" : "comment" ,
"z" : "d8e8a587.a39408" ,
"name" : "Query Ticker bid/ask" ,
"info" : "" ,
"x" : 130 ,
"y" : 360 ,
"wires" : [ ]
} ,
{
"id" : "686e858f.ba35bc" ,
"type" : "comment" ,
"z" : "d8e8a587.a39408" ,
"name" : "Query the logs" ,
"info" : "" ,
"x" : 100 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "93ad6549.2fb1c8" ,
"type" : "get-ticker-information" ,
"z" : "5d834238.9ad88c" ,
"name" : "" ,
"x" : 430 ,
"y" : 220 ,
"wires" : [
[
"85a560a3.c1f3e" ,
"b624e64.f93ef18"
] ,
[
"bcc562fd.dabae"
]
]
} ,
{
"id" : "47aba35f.ef005c" ,
"type" : "inject" ,
"z" : "5d834238.9ad88c" ,
2020-01-08 20:25:22 -06:00
"name" : "Wednesdays, 10am" ,
2020-01-07 19:20:08 -06:00
"topic" : "" ,
"payload" : "{\"pair\":\"XETHZUSD\"}" ,
"payloadType" : "json" ,
"repeat" : "" ,
2020-01-08 20:25:22 -06:00
"crontab" : "00 10 * * 3" ,
2020-01-07 19:20:08 -06:00
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 200 ,
"y" : 220 ,
"wires" : [
[
"93ad6549.2fb1c8"
]
]
} ,
{
"id" : "85a560a3.c1f3e" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Ticker Output" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 670 ,
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "bcc562fd.dabae" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Error getting Ticker" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 690 ,
"y" : 280 ,
"wires" : [ ]
} ,
{
"id" : "b624e64.f93ef18" ,
"type" : "function" ,
"z" : "5d834238.9ad88c" ,
"name" : "compute order" ,
"func" : "let askPrice = msg.payload.XETHZUSD.a[0];\nlet volume2Buy = 50/askPrice; // How much Ethereum to buy for 50 USD?\nnode.log(\"Ask Price \", askPrice, \" --> Volume : \", volume2Buy );\n\nmsg.payload={\n\tpair : 'XETHZUSD',\n\ttype : 'buy',\n\tordertype : 'limit',\n\tprice : askPrice,\n\tvolume : volume2Buy\n};\n\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 690 ,
"y" : 240 ,
"wires" : [
[
"aa87fc3a.968ee" ,
"9ffc04e0.96e1d8"
]
]
} ,
{
"id" : "aa87fc3a.968ee" ,
"type" : "add-standard-order" ,
"z" : "5d834238.9ad88c" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 900 ,
"y" : 240 ,
"wires" : [
[
"847e754.3bc3b88"
] ,
[
"e7a0fa8a.d9c008"
]
]
} ,
{
"id" : "847e754.3bc3b88" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1140 ,
"y" : 220 ,
"wires" : [ ]
} ,
{
"id" : "e7a0fa8a.d9c008" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1140 ,
"y" : 260 ,
"wires" : [ ]
} ,
{
"id" : "9ffc04e0.96e1d8" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Computed Order" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 920 ,
"y" : 140 ,
"wires" : [ ]
} ,
{
"id" : "8272f674.8a7c98" ,
"type" : "get-server-time" ,
"z" : "e67f589a.f8d378" ,
"name" : "" ,
"x" : 330 ,
"y" : 120 ,
"wires" : [
[
"288d7d82.889772"
] ,
[
"49ef2217.4037bc"
]
]
} ,
{
"id" : "6a276dbb.1b4804" ,
"type" : "inject" ,
"z" : "e67f589a.f8d378" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 140 ,
"y" : 120 ,
"wires" : [
[
"8272f674.8a7c98"
]
]
} ,
{
"id" : "288d7d82.889772" ,
"type" : "debug" ,
"z" : "e67f589a.f8d378" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 570 ,
"y" : 100 ,
"wires" : [ ]
} ,
{
"id" : "49ef2217.4037bc" ,
"type" : "debug" ,
"z" : "e67f589a.f8d378" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 580 ,
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "d23ac766.df15d8" ,
"type" : "get-account-balance" ,
"z" : "e67f589a.f8d378" ,
"kraken" : "42702610.230028" ,
"name" : "" ,
"x" : 360 ,
"y" : 360 ,
"wires" : [
[
"e69da0fa.a973"
] ,
[
"4139462.65bf8b8"
]
]
} ,
{
"id" : "e69da0fa.a973" ,
"type" : "debug" ,
"z" : "e67f589a.f8d378" ,
"name" : "Kraken-Balance" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 620 ,
"y" : 340 ,
"wires" : [ ]
} ,
{
"id" : "4139462.65bf8b8" ,
"type" : "debug" ,
"z" : "e67f589a.f8d378" ,
"name" : "Kraken Balance ERROR" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 650 ,
"y" : 420 ,
"wires" : [ ]
} ,
{
"id" : "105e61e6.8fea0e" ,
"type" : "inject" ,
"z" : "e67f589a.f8d378" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "86400" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 150 ,
"y" : 360 ,
"wires" : [
[
"d23ac766.df15d8"
]
]
2020-01-08 20:25:22 -06:00
} ,
{
"id" : "46878dfa.5580c4" ,
"type" : "inject" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"topic" : "" ,
"payload" : "{\"pair\":\"XETCZUSD\"}" ,
"payloadType" : "json" ,
"repeat" : "60" ,
"crontab" : "" ,
2020-12-24 18:11:28 -06:00
"once" : true ,
2020-01-08 20:25:22 -06:00
"onceDelay" : 0.1 ,
"x" : 140 ,
"y" : 420 ,
"wires" : [
[
"8aa9f7f4.8c2668"
]
]
} ,
{
"id" : "8aa9f7f4.8c2668" ,
"type" : "switch" ,
"z" : "75185287.024c5c" ,
"name" : "isInitialized?" ,
"property" : "$flowContext('isInitialized')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "true"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 390 ,
"y" : 420 ,
"wires" : [
[
"69f7851b.bdc39c"
] ,
[
"a99eaee4.37596" ,
"21e109cf.713d56"
]
]
} ,
{
"id" : "55be5c77.c5aa24" ,
"type" : "change" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "isInitialized" ,
"pt" : "flow" ,
"to" : "true" ,
"tot" : "bool"
} ,
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
2020-01-09 10:16:49 -06:00
"to" : "$number(payload.XETC)" ,
"tot" : "jsonata"
2020-01-08 20:25:22 -06:00
} ,
{
"t" : "set" ,
"p" : "maxVolume" ,
"pt" : "flow" ,
2020-11-30 11:38:12 -06:00
"to" : "2000" ,
2020-01-08 20:25:22 -06:00
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "minVolume" ,
"pt" : "flow" ,
"to" : "0" ,
2020-01-08 21:47:16 -06:00
"tot" : "num"
2020-01-08 20:25:22 -06:00
} ,
{
"t" : "set" ,
"p" : "delta" ,
"pt" : "flow" ,
"to" : "0.1" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "multiplier" ,
"pt" : "flow" ,
2020-11-30 11:38:12 -06:00
"to" : "50" ,
2020-01-08 21:47:16 -06:00
"tot" : "num"
2020-01-12 15:25:58 -06:00
} ,
{
"t" : "set" ,
"p" : "maxBuyPrice" ,
"pt" : "flow" ,
2021-01-04 11:36:23 -06:00
"to" : "7.5" ,
2020-01-12 15:25:58 -06:00
"tot" : "num"
2020-01-08 20:25:22 -06:00
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1180 ,
"y" : 80 ,
"wires" : [
[
"89274697.2db938"
]
]
} ,
{
"id" : "a99eaee4.37596" ,
"type" : "get-account-balance" ,
"z" : "75185287.024c5c" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 600 ,
"y" : 120 ,
"wires" : [
[
"df0504ca.1b5e68"
] ,
[
"d35cbfeb.3029" ,
"aceb2bba.402fa8"
]
]
} ,
{
"id" : "df0504ca.1b5e68" ,
"type" : "switch" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"property" : "payload.XETC" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "nempty"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 770 ,
"y" : 80 ,
"wires" : [
[
"55be5c77.c5aa24"
] ,
[
"957f8c8.49e1d7"
]
]
} ,
{
"id" : "957f8c8.49e1d7" ,
"type" : "change" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "payload.XETC" ,
"pt" : "msg" ,
"to" : "0" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 940 ,
"y" : 120 ,
"wires" : [
[
"55be5c77.c5aa24"
]
]
} ,
{
"id" : "89274697.2db938" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Initialized." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1370 ,
"y" : 80 ,
"wires" : [ ]
} ,
{
"id" : "d35cbfeb.3029" ,
"type" : "delay" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "5" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 180 ,
"wires" : [
[
"a99eaee4.37596"
]
]
} ,
{
"id" : "aceb2bba.402fa8" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
2020-01-08 21:47:16 -06:00
"name" : "Error getting Balance - retrying infinite." ,
2020-01-08 20:25:22 -06:00
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
2020-01-08 21:47:16 -06:00
"x" : 940 ,
2020-01-08 20:25:22 -06:00
"y" : 160 ,
"wires" : [ ]
} ,
{
"id" : "8072675b.525b98" ,
"type" : "inject" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 80 ,
"wires" : [
[
"6a2a4e21.ffc76"
]
]
} ,
{
"id" : "6a2a4e21.ffc76" ,
"type" : "change" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "isInitialized" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 80 ,
"wires" : [
[ ]
]
} ,
{
"id" : "af95f15e.3e857" ,
"type" : "comment" ,
"z" : "75185287.024c5c" ,
2020-01-08 21:47:16 -06:00
"name" : "Force-Uninitialize (Reload settings)" ,
2020-01-08 20:25:22 -06:00
"info" : "" ,
2020-01-08 21:47:16 -06:00
"x" : 160 ,
2020-01-08 20:25:22 -06:00
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "69f7851b.bdc39c" ,
"type" : "get-ticker-information" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"x" : 630 ,
"y" : 640 ,
"wires" : [
[
"24025058.051ac" ,
"d302c81.a8b0a38"
] ,
[
"a886187f.3229b8"
]
]
} ,
{
"id" : "a886187f.3229b8" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Ticker Retrieval Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 890 ,
"y" : 760 ,
"wires" : [ ]
} ,
{
"id" : "1d957ceb.c40d73" ,
"type" : "switch" ,
"z" : "75185287.024c5c" ,
"name" : "Action" ,
"property" : "action" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "eq" ,
"v" : "sell" ,
"vt" : "str"
} ,
{
"t" : "eq" ,
"v" : "buy" ,
"vt" : "str"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 3 ,
"x" : 1090 ,
"y" : 680 ,
"wires" : [
[
2020-01-09 20:39:19 -06:00
"b29e9a85.c0f208" ,
"8cbd61c3.9ab1"
2020-01-08 20:25:22 -06:00
] ,
[
2020-01-09 20:39:19 -06:00
"cc5f7279.5f84b" ,
"453909e5.5bb148"
2020-01-08 20:25:22 -06:00
] ,
[
2020-01-09 20:39:19 -06:00
"fec3d33d.0d4ea"
2020-01-08 20:25:22 -06:00
]
]
} ,
{
"id" : "3e2250ef.405d5" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "gt (sell)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
2020-01-09 20:39:19 -06:00
"x" : 1740 ,
"y" : 520 ,
2020-01-08 20:25:22 -06:00
"wires" : [ ]
} ,
{
"id" : "800f6d47.f091b" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "lt (buy)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
2020-01-12 15:25:58 -06:00
"x" : 1720 ,
2020-01-09 20:39:19 -06:00
"y" : 880 ,
2020-01-08 20:25:22 -06:00
"wires" : [ ]
} ,
{
"id" : "7028479c.9a21b8" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "small diff (nothing)" ,
"active" : false ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
2020-01-09 20:39:19 -06:00
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1800 ,
"y" : 1060 ,
2020-01-08 20:25:22 -06:00
"wires" : [ ]
} ,
{
"id" : "b29e9a85.c0f208" ,
"type" : "switch" ,
"z" : "75185287.024c5c" ,
2020-01-12 15:25:58 -06:00
"name" : "MinVolReached?" ,
2020-01-09 20:07:04 -06:00
"property" : "$flowContext('coinBalance') - $flowContext('multiplier') " ,
2020-01-08 21:47:16 -06:00
"propertyType" : "jsonata" ,
2020-01-08 20:25:22 -06:00
"rules" : [
{
2020-01-08 21:47:16 -06:00
"t" : "gte" ,
2020-01-08 20:25:22 -06:00
"v" : "minVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
2020-01-12 15:25:58 -06:00
"x" : 1510 ,
"y" : 620 ,
2020-01-08 20:25:22 -06:00
"wires" : [
[
"277a2c5d.908d54"
] ,
[
"be56cf39.afb4e"
]
]
} ,
{
"id" : "24a6d9cc.fc2466" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Not Selling, min Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2000 ,
"y" : 640 ,
"wires" : [ ]
} ,
{
"id" : "52986989.ee2b38" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "SELLING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-12 15:25:58 -06:00
"x" : 1990 ,
2020-01-09 20:39:19 -06:00
"y" : 560 ,
2020-01-08 20:25:22 -06:00
"wires" : [ ]
} ,
{
"id" : "a25291a9.35e33" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "BUYING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-12 15:25:58 -06:00
"x" : 2190 ,
"y" : 720 ,
2020-01-08 20:25:22 -06:00
"wires" : [ ]
} ,
{
"id" : "cc5f7279.5f84b" ,
"type" : "switch" ,
"z" : "75185287.024c5c" ,
2020-01-12 15:25:58 -06:00
"name" : "MaxVolReached?" ,
2020-01-08 21:47:16 -06:00
"property" : "$flowContext('coinBalance') + $flowContext('multiplier')" ,
"propertyType" : "jsonata" ,
2020-01-08 20:25:22 -06:00
"rules" : [
{
2020-01-08 21:47:16 -06:00
"t" : "lte" ,
2020-01-08 20:25:22 -06:00
"v" : "maxVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
2020-01-12 15:25:58 -06:00
"x" : 1510 ,
2020-01-09 20:39:19 -06:00
"y" : 800 ,
2020-01-08 20:25:22 -06:00
"wires" : [
[
2020-01-12 15:25:58 -06:00
"7b6cd46f.5195fc"
2020-01-08 20:25:22 -06:00
] ,
[
"b770e41f.d48838"
]
]
} ,
{
"id" : "c3c9ab5b.c535c8" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Not buying, max Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
2020-01-12 15:25:58 -06:00
"x" : 2170 ,
"y" : 840 ,
2020-01-08 20:25:22 -06:00
"wires" : [ ]
} ,
{
"id" : "24025058.051ac" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "Determine Action" ,
2020-03-25 16:11:43 -05:00
"func" : "//$number(payload.XETCZUSD.a[0]) - $number($flowContext('lastExecPrice'))\n\nconst delta=flow.get('delta'); // how much price move to take action?\nlet askPrice=msg.payload.XETCZUSD.a[0];\nlet bidPrice=msg.payload.XETCZUSD.b[0];\nlet lastExecPrice=flow.get('lastExecPrice',\"file\");\nif (lastExecPrice === undefined) { \n lastExecPrice=askPrice; \n flow.set('lastExecPrice',lastExecPrice,\"file\");\n}\n\nmsg.lastExecPrice=lastExecPrice;\n\nif (bidPrice>lastExecPrice+delta) {\n msg.action=\"sell\";\n msg.price=bidPrice;\n} else if (askPrice<lastExecPrice-delta) {\n msg.action=\"buy\";\n msg.price=askPrice;\n} else {\n msg.action=\"nothing\";\n}\n\nreturn msg;" ,
2020-01-08 20:25:22 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 910 ,
"y" : 680 ,
"wires" : [
[
"1d957ceb.c40d73"
]
]
} ,
{
"id" : "6e38bc3.4922b44" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "BuyAction" ,
2020-03-25 16:11:43 -05:00
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet buyPrice = Number(msg.payload.XETCZUSD.a[0]);\n\ncoinBalance += multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nmsg.payload={\n\tpair : 'XETCZUSD',\n\ttype : 'buy',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
2020-01-08 20:25:22 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-12 15:25:58 -06:00
"x" : 1940 ,
"y" : 720 ,
2020-01-08 20:25:22 -06:00
"wires" : [
[
"a25291a9.35e33" ,
"ab124111.85da6"
]
]
} ,
{
"id" : "be56cf39.afb4e" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "NoSellAction" ,
2020-03-25 16:11:43 -05:00
"func" : "let sellPrice = Number(msg.payload.XETCZUSD.b[0]);\n\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
2020-01-08 20:25:22 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1770 ,
"y" : 640 ,
"wires" : [
[
"24a6d9cc.fc2466"
]
]
} ,
{
"id" : "b770e41f.d48838" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "NoBuyAction" ,
2020-03-25 16:11:43 -05:00
"func" : "let buyPrice = Number(msg.payload.XETCZUSD.a[0]);\n\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
2020-01-08 20:25:22 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-12 15:25:58 -06:00
"x" : 1890 ,
"y" : 840 ,
2020-01-08 20:25:22 -06:00
"wires" : [
[
"c3c9ab5b.c535c8"
]
]
} ,
{
"id" : "277a2c5d.908d54" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "SellAction" ,
2020-03-25 16:11:43 -05:00
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\n\nlet sellPrice = Number(msg.payload.XETCZUSD.b[0]);\n\ncoinBalance -= multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nmsg.payload={\n\tpair : 'XETCZUSD',\n\ttype : 'sell',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
2020-01-08 20:25:22 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1760 ,
"y" : 560 ,
"wires" : [
[
"52986989.ee2b38" ,
"ab124111.85da6"
]
]
} ,
{
"id" : "f637b849.b81cd8" ,
"type" : "sqlite" ,
"z" : "75185287.024c5c" ,
"mydb" : "c0dcbde0.3085" ,
"sqlquery" : "msg.topic" ,
"sql" : "" ,
"name" : "" ,
"x" : 1150 ,
"y" : 500 ,
"wires" : [
[ ]
]
} ,
{
"id" : "d302c81.a8b0a38" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "Build Insert Statement" ,
"func" : "msg.topic=\"Insert into KrakenQuotes (Symbol,Data) values ('XETCZUSD','\" + JSON.stringify(msg.payload.XETCZUSD) + \"');\"\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 860 ,
"y" : 540 ,
"wires" : [
[
"b134e494.b4e6c8" ,
"f637b849.b81cd8"
]
]
} ,
{
"id" : "b134e494.b4e6c8" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1090 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "fcc5965e.257558" ,
"type" : "comment" ,
"z" : "75185287.024c5c" ,
"name" : "Initialization" ,
"info" : "" ,
"x" : 510 ,
"y" : 300 ,
"wires" : [ ]
} ,
{
"id" : "52d1add7.1a1144" ,
"type" : "comment" ,
"z" : "75185287.024c5c" ,
"name" : "Regular Looping" ,
"info" : "" ,
"x" : 520 ,
"y" : 580 ,
"wires" : [ ]
} ,
{
"id" : "ab124111.85da6" ,
"type" : "add-standard-order" ,
"z" : "75185287.024c5c" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 2410 ,
"y" : 680 ,
"wires" : [
[
"1191bbfb.c728d4"
] ,
[
"96991058.9ed6d"
]
]
} ,
{
"id" : "1191bbfb.c728d4" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2650 ,
"y" : 660 ,
"wires" : [ ]
} ,
{
"id" : "96991058.9ed6d" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2650 ,
"y" : 700 ,
"wires" : [ ]
} ,
{
"id" : "21e109cf.713d56" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Needs Initialization" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 640 ,
"y" : 220 ,
"wires" : [ ]
2020-01-08 21:47:16 -06:00
} ,
{
"id" : "bfbcb0ec.f032c" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "$flowContext('coinBalance') / $flowContext('multiplier')" ,
"targetType" : "jsonata" ,
2020-01-28 22:32:13 +00:00
"x" : 320 ,
2020-01-08 21:47:16 -06:00
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "8b60b992.9a6258" ,
"type" : "inject" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 110 ,
"y" : 200 ,
"wires" : [
[
"bfbcb0ec.f032c"
]
]
} ,
{
"id" : "72e50f95.f5f68" ,
"type" : "comment" ,
"z" : "75185287.024c5c" ,
"name" : "Get current \"standardized balance\"" ,
"info" : "" ,
"x" : 160 ,
"y" : 140 ,
"wires" : [ ]
2020-01-09 20:39:19 -06:00
} ,
{
"id" : "8cbd61c3.9ab1" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "FlowContext2msg" ,
2020-03-25 16:11:43 -05:00
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
2020-01-09 20:39:19 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1550 ,
"y" : 520 ,
"wires" : [
[
"3e2250ef.405d5"
]
]
} ,
{
"id" : "453909e5.5bb148" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "FlowContext2msg" ,
2020-03-25 16:11:43 -05:00
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
2020-01-09 20:39:19 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
2020-01-12 15:25:58 -06:00
"x" : 1510 ,
2020-01-09 20:39:19 -06:00
"y" : 880 ,
"wires" : [
[
"800f6d47.f091b"
]
]
} ,
{
"id" : "fec3d33d.0d4ea" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "FlowContext2msg" ,
2020-03-25 16:11:43 -05:00
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
2020-01-09 20:39:19 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1550 ,
"y" : 1060 ,
"wires" : [
[
"7028479c.9a21b8"
]
]
2020-01-12 15:25:58 -06:00
} ,
{
"id" : "94f8bbad.d99128" ,
"type" : "catch" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"scope" : null ,
"uncaught" : false ,
"x" : 220 ,
"y" : 980 ,
"wires" : [
[
"d9b37b29.d69da8"
]
]
} ,
{
"id" : "d9b37b29.d69da8" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "ERROR!!!" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 470 ,
"y" : 980 ,
"wires" : [ ]
} ,
{
"id" : "7b6cd46f.5195fc" ,
"type" : "switch" ,
"z" : "75185287.024c5c" ,
"name" : "Max-Price?" ,
"property" : "$number(payload.XETCZUSD.a[0])" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxBuyPrice" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1750 ,
"y" : 760 ,
"wires" : [
[
"6e38bc3.4922b44"
] ,
[
"27f3e6cf.40475a"
]
]
} ,
{
"id" : "27f3e6cf.40475a" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "Not Buying, max buy price exceeded." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2040 ,
"y" : 780 ,
"wires" : [ ]
2020-03-25 16:11:43 -05:00
} ,
{
"id" : "d733ac19.e8d0b" ,
"type" : "function" ,
"z" : "75185287.024c5c" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 190 ,
"y" : 340 ,
"wires" : [
[
"4c0a2364.56ae8c"
]
]
} ,
{
"id" : "4c0a2364.56ae8c" ,
"type" : "debug" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 310 ,
"y" : 280 ,
"wires" : [ ]
} ,
{
"id" : "53c12592.9e0d9c" ,
"type" : "inject" ,
"z" : "75185287.024c5c" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 280 ,
"wires" : [
[
"d733ac19.e8d0b"
]
]
2020-11-30 11:38:12 -06:00
} ,
{
"id" : "b270d15c.78ca6" ,
"type" : "get-ticker-information" ,
"z" : "5d834238.9ad88c" ,
"name" : "" ,
"x" : 410 ,
"y" : 600 ,
"wires" : [
[
"b6e0a61e.2e75e8" ,
"d260895.83a5278"
] ,
[
"f18ee89a.2792e8"
]
]
} ,
{
"id" : "a628006.a5022" ,
"type" : "inject" ,
"z" : "5d834238.9ad88c" ,
"name" : "Wednesdays, 10:30am" ,
"topic" : "" ,
"payload" : "{\"pair\":\"XXBTZUSD\"}" ,
"payloadType" : "json" ,
"repeat" : "" ,
"crontab" : "30 10 * * 3" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 190 ,
"y" : 600 ,
"wires" : [
[
"b270d15c.78ca6"
]
]
} ,
{
"id" : "b6e0a61e.2e75e8" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Ticker Output" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 650 ,
"y" : 580 ,
"wires" : [ ]
} ,
{
"id" : "f18ee89a.2792e8" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Error getting Ticker" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 670 ,
"y" : 660 ,
"wires" : [ ]
} ,
{
"id" : "d260895.83a5278" ,
"type" : "function" ,
"z" : "5d834238.9ad88c" ,
"name" : "compute order" ,
"func" : "let askPrice = msg.payload.XXBTZUSD.a[0] - 50;\nlet volume2Buy = 250/askPrice; // How much Crypto-currency to buy for the USD-Amount?\nnode.log(\"Ask Price \", askPrice, \" --> Volume : \", volume2Buy );\n\nmsg.payload={\n\tpair : 'XXBTZUSD',\n\ttype : 'buy',\n\tordertype : 'limit',\n\tprice : askPrice,\n\tvolume : volume2Buy\n};\n\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 670 ,
"y" : 620 ,
"wires" : [
[
"d3b9fc5e.4f0a" ,
"ec82d6e6.92e9b8"
]
]
} ,
{
"id" : "d3b9fc5e.4f0a" ,
"type" : "add-standard-order" ,
"z" : "5d834238.9ad88c" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 880 ,
"y" : 620 ,
"wires" : [
[
"3e4a4fc2.6d5e9"
] ,
[
"a1f76098.67548"
]
]
} ,
{
"id" : "3e4a4fc2.6d5e9" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1120 ,
"y" : 600 ,
"wires" : [ ]
} ,
{
"id" : "a1f76098.67548" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1120 ,
"y" : 640 ,
"wires" : [ ]
} ,
{
"id" : "ec82d6e6.92e9b8" ,
"type" : "debug" ,
"z" : "5d834238.9ad88c" ,
"name" : "Computed Order" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 900 ,
"y" : 520 ,
"wires" : [ ]
} ,
{
"id" : "d4797497.421e58" ,
"type" : "comment" ,
"z" : "5d834238.9ad88c" ,
"name" : "Bitcoin" ,
"info" : "" ,
"x" : 130 ,
"y" : 500 ,
"wires" : [ ]
} ,
{
"id" : "8e1f7774.980a78" ,
"type" : "comment" ,
"z" : "5d834238.9ad88c" ,
"name" : "Ethereum" ,
"info" : "" ,
"x" : 140 ,
"y" : 160 ,
"wires" : [ ]
} ,
{
"id" : "58579544.f37b3c" ,
"type" : "inject" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"topic" : "" ,
"payload" : "{\"pair\":\"DOTUSD\"}" ,
"payloadType" : "json" ,
"repeat" : "60" ,
"crontab" : "" ,
2020-12-01 20:35:42 -06:00
"once" : true ,
2020-11-30 11:38:12 -06:00
"onceDelay" : 0.1 ,
"x" : 140 ,
"y" : 420 ,
"wires" : [
[
"d7b63da9.2bb59"
]
]
} ,
{
"id" : "d7b63da9.2bb59" ,
"type" : "switch" ,
"z" : "5b601c88.f89c94" ,
"name" : "isInitialized?" ,
"property" : "$flowContext('isInitialized')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "true"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 390 ,
"y" : 420 ,
"wires" : [
[
"abf002df.739e3"
] ,
[
"8b491ba9.c3a698" ,
"f2b11b31.7f5da8"
]
]
} ,
{
"id" : "88587e0f.eac9c" ,
"type" : "change" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "isInitialized" ,
"pt" : "flow" ,
"to" : "true" ,
"tot" : "bool"
} ,
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
"to" : "$number(payload.DOT)" ,
"tot" : "jsonata"
} ,
{
"t" : "set" ,
"p" : "maxVolume" ,
"pt" : "flow" ,
2020-12-01 20:35:42 -06:00
"to" : "1000" ,
2020-11-30 11:38:12 -06:00
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "minVolume" ,
"pt" : "flow" ,
"to" : "0" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "delta" ,
"pt" : "flow" ,
"to" : "0.1" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "multiplier" ,
"pt" : "flow" ,
"to" : "50" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "maxBuyPrice" ,
"pt" : "flow" ,
2021-01-04 11:36:23 -06:00
"to" : "6.5" ,
2020-11-30 11:38:12 -06:00
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1180 ,
"y" : 80 ,
"wires" : [
[
"b66be511.a0f338"
]
]
} ,
{
"id" : "8b491ba9.c3a698" ,
"type" : "get-account-balance" ,
"z" : "5b601c88.f89c94" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 600 ,
"y" : 120 ,
"wires" : [
[
"4a856293.dd87cc"
] ,
[
"bb739ef2.fee7c" ,
"706e9cfb.7d54d4"
]
]
} ,
{
"id" : "4a856293.dd87cc" ,
"type" : "switch" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"property" : "payload.DOT" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "nempty"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 770 ,
"y" : 80 ,
"wires" : [
[
"88587e0f.eac9c"
] ,
[
"7445376b.9e1808"
]
]
} ,
{
"id" : "7445376b.9e1808" ,
"type" : "change" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "payload.DOT" ,
"pt" : "msg" ,
"to" : "0" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 940 ,
"y" : 120 ,
"wires" : [
[
"88587e0f.eac9c"
]
]
} ,
{
"id" : "b66be511.a0f338" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Initialized." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1370 ,
"y" : 80 ,
"wires" : [ ]
} ,
{
"id" : "bb739ef2.fee7c" ,
"type" : "delay" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "5" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 180 ,
"wires" : [
[
"8b491ba9.c3a698"
]
]
} ,
{
"id" : "706e9cfb.7d54d4" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Error getting Balance - retrying infinite." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 940 ,
"y" : 160 ,
"wires" : [ ]
} ,
{
"id" : "92dd5eb3.ed94f" ,
"type" : "inject" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 80 ,
"wires" : [
[
"5aab0d70.d6d174"
]
]
} ,
{
"id" : "5aab0d70.d6d174" ,
"type" : "change" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "isInitialized" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 80 ,
"wires" : [
[ ]
]
} ,
{
"id" : "9ed4aaad.a665d8" ,
"type" : "comment" ,
"z" : "5b601c88.f89c94" ,
"name" : "Force-Uninitialize (Reload settings)" ,
"info" : "" ,
"x" : 160 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "abf002df.739e3" ,
"type" : "get-ticker-information" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"x" : 630 ,
"y" : 640 ,
"wires" : [
[
"f3ad0be8.2124f8" ,
"dc364cac.c8885"
] ,
[
"eec1a78.8265558"
]
]
} ,
{
"id" : "eec1a78.8265558" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Ticker Retrieval Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 890 ,
"y" : 760 ,
"wires" : [ ]
} ,
{
"id" : "615d2f89.216e2" ,
"type" : "switch" ,
"z" : "5b601c88.f89c94" ,
"name" : "Action" ,
"property" : "action" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "eq" ,
"v" : "sell" ,
"vt" : "str"
} ,
{
"t" : "eq" ,
"v" : "buy" ,
"vt" : "str"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 3 ,
"x" : 1090 ,
"y" : 680 ,
"wires" : [
[
"9cc315f6.237678" ,
"1e0e13fa.b2671c"
] ,
[
"f3cf4376.2eed6" ,
"e1896e34.2c727"
] ,
[
"75cc2515.20821c"
]
]
} ,
{
"id" : "f81c652f.62b1b8" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "gt (sell)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1740 ,
"y" : 520 ,
"wires" : [ ]
} ,
{
"id" : "7a0280e6.a6694" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "lt (buy)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1720 ,
"y" : 880 ,
"wires" : [ ]
} ,
{
"id" : "1c21bacf.c10215" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "small diff (nothing)" ,
"active" : false ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1800 ,
"y" : 1060 ,
"wires" : [ ]
} ,
{
"id" : "9cc315f6.237678" ,
"type" : "switch" ,
"z" : "5b601c88.f89c94" ,
"name" : "MinVolReached?" ,
"property" : "$flowContext('coinBalance') - $flowContext('multiplier') " ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "gte" ,
"v" : "minVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 620 ,
"wires" : [
[
"bcc2295e.e1e198"
] ,
[
"57b4e5da.a8dedc"
]
]
} ,
{
"id" : "5122dba4.2f46b4" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Not Selling, min Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2000 ,
"y" : 640 ,
"wires" : [ ]
} ,
{
"id" : "7795f775.712988" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "SELLING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1990 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "3f4bce34.ba9772" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "BUYING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2190 ,
"y" : 720 ,
"wires" : [ ]
} ,
{
"id" : "f3cf4376.2eed6" ,
"type" : "switch" ,
"z" : "5b601c88.f89c94" ,
"name" : "MaxVolReached?" ,
"property" : "$flowContext('coinBalance') + $flowContext('multiplier')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 800 ,
"wires" : [
[
"1aa69cdc.b7d923"
] ,
[
"443994b5.e4cfcc"
]
]
} ,
{
"id" : "f4682271.e52a7" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Not buying, max Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2170 ,
"y" : 840 ,
"wires" : [ ]
} ,
{
"id" : "f3ad0be8.2124f8" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "Determine Action" ,
"func" : "//$number(payload.DOTUSD.a[0]) - $number($flowContext('lastExecPrice'))\n\nconst delta=flow.get('delta'); // how much price move to take action?\nlet askPrice=msg.payload.DOTUSD.a[0];\nlet bidPrice=msg.payload.DOTUSD.b[0];\nlet lastExecPrice=flow.get('lastExecPrice',\"file\");\nif (lastExecPrice === undefined) { \n lastExecPrice=askPrice; \n flow.set('lastExecPrice',lastExecPrice,\"file\");\n}\n\nmsg.lastExecPrice=lastExecPrice;\n\nif (bidPrice>lastExecPrice+delta) {\n msg.action=\"sell\";\n msg.price=bidPrice;\n} else if (askPrice<lastExecPrice-delta) {\n msg.action=\"buy\";\n msg.price=askPrice;\n} else {\n msg.action=\"nothing\";\n}\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 910 ,
"y" : 680 ,
"wires" : [
[
"615d2f89.216e2"
]
]
} ,
{
"id" : "4919fa9e.7087b4" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "BuyAction" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet buyPrice = Number(msg.payload.DOTUSD.a[0]);\n\ncoinBalance += multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nmsg.payload={\n\tpair : 'DOTUSD',\n\ttype : 'buy',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1940 ,
"y" : 720 ,
"wires" : [
[
"3f4bce34.ba9772" ,
"7ae49fbd.e5d98"
]
]
} ,
{
"id" : "57b4e5da.a8dedc" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "NoSellAction" ,
"func" : "let sellPrice = Number(msg.payload.DOTUSD.b[0]);\n\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1770 ,
"y" : 640 ,
"wires" : [
[
"5122dba4.2f46b4"
]
]
} ,
{
"id" : "443994b5.e4cfcc" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "NoBuyAction" ,
"func" : "let buyPrice = Number(msg.payload.DOTUSD.a[0]);\n\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1890 ,
"y" : 840 ,
"wires" : [
[
"f4682271.e52a7"
]
]
} ,
{
"id" : "bcc2295e.e1e198" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "SellAction" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\n\nlet sellPrice = Number(msg.payload.DOTUSD.b[0]);\n\ncoinBalance -= multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nmsg.payload={\n\tpair : 'DOTUSD',\n\ttype : 'sell',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1760 ,
"y" : 560 ,
"wires" : [
[
"7795f775.712988" ,
"7ae49fbd.e5d98"
]
]
} ,
{
"id" : "36a67f9d.84d5c" ,
"type" : "sqlite" ,
"z" : "5b601c88.f89c94" ,
"mydb" : "c0dcbde0.3085" ,
"sqlquery" : "msg.topic" ,
"sql" : "" ,
"name" : "" ,
"x" : 1150 ,
"y" : 500 ,
"wires" : [
[ ]
]
} ,
{
"id" : "dc364cac.c8885" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "Build Insert Statement" ,
"func" : "msg.topic=\"Insert into KrakenQuotes (Symbol,Data) values ('DOTUSD','\" + JSON.stringify(msg.payload.DOTUSD) + \"');\"\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 860 ,
"y" : 540 ,
"wires" : [
[
"5b92bd62.aa6394" ,
"36a67f9d.84d5c"
]
]
} ,
{
"id" : "5b92bd62.aa6394" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1090 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "291c035e.48469c" ,
"type" : "comment" ,
"z" : "5b601c88.f89c94" ,
"name" : "Initialization" ,
"info" : "" ,
"x" : 510 ,
"y" : 300 ,
"wires" : [ ]
} ,
{
"id" : "8d4891ff.fee48" ,
"type" : "comment" ,
"z" : "5b601c88.f89c94" ,
"name" : "Regular Looping" ,
"info" : "" ,
"x" : 520 ,
"y" : 580 ,
"wires" : [ ]
} ,
{
"id" : "7ae49fbd.e5d98" ,
"type" : "add-standard-order" ,
"z" : "5b601c88.f89c94" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 2410 ,
"y" : 680 ,
"wires" : [
[
"490a0d7e.03e7d4"
] ,
[
"23022422.b65bdc"
]
]
} ,
{
"id" : "490a0d7e.03e7d4" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2650 ,
"y" : 660 ,
"wires" : [ ]
} ,
{
"id" : "23022422.b65bdc" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2650 ,
"y" : 700 ,
"wires" : [ ]
} ,
{
"id" : "f2b11b31.7f5da8" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Needs Initialization" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 640 ,
"y" : 220 ,
"wires" : [ ]
} ,
{
"id" : "1f02219e.43eaae" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "$flowContext('coinBalance') / $flowContext('multiplier')" ,
"targetType" : "jsonata" ,
"x" : 320 ,
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "767a5d6.a26b9a4" ,
"type" : "inject" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 110 ,
"y" : 200 ,
"wires" : [
[
"1f02219e.43eaae"
]
]
} ,
{
"id" : "e581fdfb.e369" ,
"type" : "comment" ,
"z" : "5b601c88.f89c94" ,
"name" : "Get current \"standardized balance\"" ,
"info" : "" ,
"x" : 160 ,
"y" : 140 ,
"wires" : [ ]
} ,
{
"id" : "1e0e13fa.b2671c" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1550 ,
"y" : 520 ,
"wires" : [
[
"f81c652f.62b1b8"
]
]
} ,
{
"id" : "e1896e34.2c727" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 880 ,
"wires" : [
[
"7a0280e6.a6694"
]
]
} ,
{
"id" : "75cc2515.20821c" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1550 ,
"y" : 1060 ,
"wires" : [
[
"1c21bacf.c10215"
]
]
} ,
{
"id" : "cdc5d8b3.33ed78" ,
"type" : "catch" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"scope" : null ,
"uncaught" : false ,
"x" : 220 ,
"y" : 980 ,
"wires" : [
[
"ba8a4005.4d38e"
]
]
} ,
{
"id" : "ba8a4005.4d38e" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "ERROR!!!" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 470 ,
"y" : 980 ,
"wires" : [ ]
} ,
{
"id" : "1aa69cdc.b7d923" ,
"type" : "switch" ,
"z" : "5b601c88.f89c94" ,
"name" : "Max-Price?" ,
"property" : "$number(payload.DOTUSD.a[0])" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxBuyPrice" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1750 ,
"y" : 760 ,
"wires" : [
[
"4919fa9e.7087b4"
] ,
[
"f50872aa.54f45"
]
]
} ,
{
"id" : "f50872aa.54f45" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "Not Buying, max buy price exceeded." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2040 ,
"y" : 780 ,
"wires" : [ ]
} ,
{
"id" : "ba00b0ab.a251b" ,
"type" : "function" ,
"z" : "5b601c88.f89c94" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 190 ,
"y" : 340 ,
"wires" : [
[
"46f90e14.9cde6"
]
]
} ,
{
"id" : "46f90e14.9cde6" ,
"type" : "debug" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 310 ,
"y" : 280 ,
"wires" : [ ]
} ,
{
"id" : "8f6456e7.abc808" ,
"type" : "inject" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 280 ,
"wires" : [
[
"ba00b0ab.a251b"
]
]
2020-12-01 20:35:42 -06:00
} ,
{
"id" : "aec915e5.618078" ,
"type" : "inject" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"topic" : "" ,
"payload" : "{\"pair\":\"XMRUSD\"}" ,
"payloadType" : "json" ,
"repeat" : "60" ,
"crontab" : "" ,
"once" : true ,
"onceDelay" : 0.1 ,
"x" : 140 ,
"y" : 420 ,
"wires" : [
[
"488765e5.fd988c"
]
]
} ,
{
"id" : "488765e5.fd988c" ,
"type" : "switch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "isInitialized?" ,
"property" : "$flowContext('isInitialized')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "true"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 390 ,
"y" : 420 ,
"wires" : [
[
"7d29ff37.f2257"
] ,
[
"65427c76.51bcf4" ,
"aef88a37.983178"
]
]
} ,
{
"id" : "171e49e3.897756" ,
"type" : "change" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "isInitialized" ,
"pt" : "flow" ,
"to" : "true" ,
"tot" : "bool"
} ,
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
"to" : "$number(payload.XXMR)" ,
"tot" : "jsonata"
} ,
{
"t" : "set" ,
"p" : "maxVolume" ,
"pt" : "flow" ,
2020-12-24 18:11:28 -06:00
"to" : "70" ,
2020-12-01 20:35:42 -06:00
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "minVolume" ,
"pt" : "flow" ,
"to" : "0" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "delta" ,
"pt" : "flow" ,
"to" : "1" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "multiplier" ,
"pt" : "flow" ,
"to" : "2" ,
"tot" : "num"
} ,
{
"t" : "set" ,
"p" : "maxBuyPrice" ,
"pt" : "flow" ,
2020-12-24 18:11:28 -06:00
"to" : "155" ,
2020-12-01 20:35:42 -06:00
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1180 ,
"y" : 80 ,
"wires" : [
[
"669c98fd.bd65c8"
]
]
} ,
{
"id" : "65427c76.51bcf4" ,
"type" : "get-account-balance" ,
"z" : "14ed22c2.6530bd" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 600 ,
"y" : 120 ,
"wires" : [
[
"5b53de52.c452"
] ,
[
"4bb94032.f6cc4" ,
"1f06f665.27695a"
]
]
} ,
{
"id" : "5b53de52.c452" ,
"type" : "switch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"property" : "payload.XXMR" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "nempty"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 770 ,
"y" : 80 ,
"wires" : [
[
"171e49e3.897756"
] ,
[
"3404b358.f1d4cc"
]
]
} ,
{
"id" : "3404b358.f1d4cc" ,
"type" : "change" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "payload.XXMR" ,
"pt" : "msg" ,
"to" : "0" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 950 ,
"y" : 120 ,
"wires" : [
[
"171e49e3.897756"
]
]
} ,
{
"id" : "669c98fd.bd65c8" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Initialized." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1370 ,
"y" : 80 ,
"wires" : [ ]
} ,
{
"id" : "4bb94032.f6cc4" ,
"type" : "delay" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "5" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 180 ,
"wires" : [
[
"65427c76.51bcf4"
]
]
} ,
{
"id" : "1f06f665.27695a" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Error getting Balance - retrying infinite." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 940 ,
"y" : 160 ,
"wires" : [ ]
} ,
{
"id" : "8071fbaa.1c5d48" ,
"type" : "inject" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 80 ,
"wires" : [
[
"47f3737.0c6b88c"
]
]
} ,
{
"id" : "47f3737.0c6b88c" ,
"type" : "change" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "isInitialized" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 80 ,
"wires" : [
[ ]
]
} ,
{
"id" : "e2e11ccd.fc438" ,
"type" : "comment" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Force-Uninitialize (Reload settings)" ,
"info" : "" ,
"x" : 160 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "7d29ff37.f2257" ,
"type" : "get-ticker-information" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"x" : 630 ,
"y" : 640 ,
"wires" : [
[
"91f75008.3eed7" ,
"d307c646.5d9df8"
] ,
[
"ae756663.cd1f58"
]
]
} ,
{
"id" : "ae756663.cd1f58" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Ticker Retrieval Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 890 ,
"y" : 760 ,
"wires" : [ ]
} ,
{
"id" : "f5f45b8.f80b8a8" ,
"type" : "switch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Action" ,
"property" : "action" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "eq" ,
"v" : "sell" ,
"vt" : "str"
} ,
{
"t" : "eq" ,
"v" : "buy" ,
"vt" : "str"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 3 ,
"x" : 1090 ,
"y" : 680 ,
"wires" : [
[
"58be0ce7.3f43b4" ,
"2efdb850.3d7208"
] ,
[
"c2b77579.76d838" ,
"28400255.0b17ee"
] ,
[
"79513700.5fce28"
]
]
} ,
{
"id" : "6ba2f795.a566b8" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "gt (sell)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1740 ,
"y" : 520 ,
"wires" : [ ]
} ,
{
"id" : "c6563d45.9123d" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "lt (buy)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1720 ,
"y" : 880 ,
"wires" : [ ]
} ,
{
"id" : "eda42480.b3cd08" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "small diff (nothing)" ,
"active" : false ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1800 ,
"y" : 1060 ,
"wires" : [ ]
} ,
{
"id" : "58be0ce7.3f43b4" ,
"type" : "switch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "MinVolReached?" ,
"property" : "$flowContext('coinBalance') - $flowContext('multiplier') " ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "gte" ,
"v" : "minVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 620 ,
"wires" : [
[
"bce3c307.995fe"
] ,
[
"114507bc.fb5158"
]
]
} ,
{
"id" : "9d0b7450.8501d8" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Not Selling, min Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2000 ,
"y" : 640 ,
"wires" : [ ]
} ,
{
"id" : "edb52050.12bf1" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "SELLING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1990 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "939eadc6.ade49" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "BUYING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2190 ,
"y" : 720 ,
"wires" : [ ]
} ,
{
"id" : "c2b77579.76d838" ,
"type" : "switch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "MaxVolReached?" ,
"property" : "$flowContext('coinBalance') + $flowContext('multiplier')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 800 ,
"wires" : [
[
"f15c519.de8f9b"
] ,
[
"2e0dfac4.cb3576"
]
]
} ,
{
"id" : "50a81e03.b3341" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Not buying, max Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2170 ,
"y" : 840 ,
"wires" : [ ]
} ,
{
"id" : "91f75008.3eed7" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Determine Action" ,
2020-12-24 18:11:28 -06:00
"func" : "//$number(payload.XMRUSD.a[0]) - $number($flowContext('lastExecPrice'))\n\nconst delta=flow.get('delta'); // how much price move to take action?\nlet askPrice=msg.payload.XXMRZUSD.a[0];\nlet bidPrice=msg.payload.XXMRZUSD.b[0];\n\nlet lastExecPrice=flow.get('lastExecPrice',\"file\");\nif (lastExecPrice === undefined) { \n lastExecPrice=askPrice; \n flow.set('lastExecPrice',lastExecPrice,\"file\");\n}\n\nmsg.lastExecPrice=lastExecPrice;\n\nif (bidPrice>lastExecPrice+delta) {\n msg.action=\"sell\";\n msg.price=bidPrice;\n} else if (askPrice<lastExecPrice-delta) {\n msg.action=\"buy\";\n msg.price=askPrice;\n} else {\n msg.action=\"nothing\";\n}\n\nreturn msg;" ,
2020-12-01 20:35:42 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 910 ,
"y" : 680 ,
"wires" : [
[
"f5f45b8.f80b8a8"
]
]
} ,
{
"id" : "5eb47b40.77f6e4" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "BuyAction" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet buyPrice = Number(msg.payload.XXMRZUSD.a[0]);\n\ncoinBalance += multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nmsg.payload={\n\tpair : 'XMRUSD',\n\ttype : 'buy',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1940 ,
"y" : 720 ,
"wires" : [
[
"939eadc6.ade49" ,
"18411815.842c98"
]
]
} ,
{
"id" : "114507bc.fb5158" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "NoSellAction" ,
"func" : "let sellPrice = Number(msg.payload.XZMRZUSD.b[0]);\n\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1770 ,
"y" : 640 ,
"wires" : [
[
"9d0b7450.8501d8"
]
]
} ,
{
"id" : "2e0dfac4.cb3576" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "NoBuyAction" ,
"func" : "let buyPrice = Number(msg.payload.XXMRZUSD.a[0]);\n\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1890 ,
"y" : 840 ,
"wires" : [
[
"50a81e03.b3341"
]
]
} ,
{
"id" : "bce3c307.995fe" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "SellAction" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\n\nlet sellPrice = Number(msg.payload.XXMRZUSD.b[0]);\n\ncoinBalance -= multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nmsg.payload={\n\tpair : 'XMRUSD',\n\ttype : 'sell',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1760 ,
"y" : 560 ,
"wires" : [
[
"edb52050.12bf1" ,
"18411815.842c98"
]
]
} ,
{
"id" : "4cfc2fbc.d7c21" ,
"type" : "sqlite" ,
"z" : "14ed22c2.6530bd" ,
"mydb" : "c0dcbde0.3085" ,
"sqlquery" : "msg.topic" ,
"sql" : "" ,
"name" : "" ,
"x" : 1150 ,
"y" : 500 ,
"wires" : [
[ ]
]
} ,
{
"id" : "d307c646.5d9df8" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Build Insert Statement" ,
"func" : "msg.topic=\"Insert into KrakenQuotes (Symbol,Data) values ('XMRUSD','\" + JSON.stringify(msg.payload.XXMRZUSD) + \"');\"\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 860 ,
"y" : 540 ,
"wires" : [
[
"625b9ffb.de17f" ,
"4cfc2fbc.d7c21"
]
]
} ,
{
"id" : "625b9ffb.de17f" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1090 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "23351b25.aeff34" ,
"type" : "comment" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Initialization" ,
"info" : "" ,
"x" : 510 ,
"y" : 300 ,
"wires" : [ ]
} ,
{
"id" : "313a3ce1.77f6c4" ,
"type" : "comment" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Regular Looping" ,
"info" : "" ,
"x" : 520 ,
"y" : 580 ,
"wires" : [ ]
} ,
{
"id" : "18411815.842c98" ,
"type" : "add-standard-order" ,
"z" : "14ed22c2.6530bd" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 2410 ,
"y" : 680 ,
"wires" : [
[
"5586aefa.a5b6b"
] ,
[
"e0ddeb5a.541898"
]
]
} ,
{
"id" : "5586aefa.a5b6b" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2650 ,
"y" : 660 ,
"wires" : [ ]
} ,
{
"id" : "e0ddeb5a.541898" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2650 ,
"y" : 700 ,
"wires" : [ ]
} ,
{
"id" : "aef88a37.983178" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Needs Initialization" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 640 ,
"y" : 220 ,
"wires" : [ ]
} ,
{
"id" : "6ad9ec4a.8e7a44" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "$flowContext('coinBalance') / $flowContext('multiplier')" ,
"targetType" : "jsonata" ,
"x" : 320 ,
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "25ef9bc4.774fc4" ,
"type" : "inject" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 110 ,
"y" : 200 ,
"wires" : [
[
"6ad9ec4a.8e7a44"
]
]
} ,
{
"id" : "2ca410c7.f7dda" ,
"type" : "comment" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Get current \"standardized balance\"" ,
"info" : "" ,
"x" : 160 ,
"y" : 140 ,
"wires" : [ ]
} ,
{
"id" : "2efdb850.3d7208" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1550 ,
"y" : 520 ,
"wires" : [
[
"6ba2f795.a566b8"
]
]
} ,
{
"id" : "28400255.0b17ee" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 880 ,
"wires" : [
[
"c6563d45.9123d"
]
]
} ,
{
"id" : "79513700.5fce28" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1550 ,
"y" : 1060 ,
"wires" : [
[
"eda42480.b3cd08"
]
]
} ,
{
"id" : "a3da91e5.f3412" ,
"type" : "catch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"scope" : null ,
"uncaught" : false ,
"x" : 220 ,
"y" : 980 ,
"wires" : [
[
"20b9c7f5.436138"
]
]
} ,
{
"id" : "20b9c7f5.436138" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "ERROR!!!" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 470 ,
"y" : 980 ,
"wires" : [ ]
} ,
{
"id" : "f15c519.de8f9b" ,
"type" : "switch" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Max-Price?" ,
"property" : "$number(payload.XXMRZUSD.a[0])" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxBuyPrice" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1750 ,
"y" : 760 ,
"wires" : [
[
"5eb47b40.77f6e4"
] ,
[
"538afcf8.fa4884"
]
]
} ,
{
"id" : "538afcf8.fa4884" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "Not Buying, max buy price exceeded." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2040 ,
"y" : 780 ,
"wires" : [ ]
} ,
{
"id" : "8f059da7.a60e9" ,
"type" : "function" ,
"z" : "14ed22c2.6530bd" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 190 ,
"y" : 340 ,
"wires" : [
[
"125f119e.8dde2e"
]
]
} ,
{
"id" : "125f119e.8dde2e" ,
"type" : "debug" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 310 ,
"y" : 280 ,
"wires" : [ ]
} ,
{
"id" : "fc7490c2.60301" ,
"type" : "inject" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 280 ,
"wires" : [
[
"8f059da7.a60e9"
]
]
2020-12-24 18:11:28 -06:00
} ,
{
"id" : "66debcf1.9d4ee4" ,
"type" : "inject" ,
"z" : "14ed22c2.6530bd" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 680 ,
"wires" : [
[
"bf9ce0f7.d63af"
]
]
} ,
{
"id" : "bf9ce0f7.d63af" ,
"type" : "change" ,
"z" : "14ed22c2.6530bd" ,
"name" : "BUY" ,
"rules" : [
{
"t" : "set" ,
"p" : "#:(file)::lastExecPrice" ,
"pt" : "flow" ,
"to" : "999" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 290 ,
"y" : 680 ,
"wires" : [
[ ]
]
} ,
{
"id" : "66d6fae3.416954" ,
"type" : "inject" ,
"z" : "5b601c88.f89c94" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 540 ,
"wires" : [
[
"590fd33a.7469cc"
]
]
} ,
{
"id" : "590fd33a.7469cc" ,
"type" : "change" ,
"z" : "5b601c88.f89c94" ,
"name" : "BUY" ,
"rules" : [
{
"t" : "set" ,
"p" : "#:(file)::lastExecPrice" ,
"pt" : "flow" ,
"to" : "999" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 290 ,
"y" : 540 ,
"wires" : [
[ ]
]
} ,
{
"id" : "b91b73d5.e1c6b" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
2021-01-04 11:36:23 -06:00
"payload" : "{\"pair\":\"XXMRZUSD\", \"currency\":\"XXMR\", \"maxVolume\": 70, \"minVolume\":0, \"delta\":1, \"multiplier\":2, \"maxBuyPrice\":165}" ,
2020-12-24 18:11:28 -06:00
"payloadType" : "json" ,
"repeat" : "60" ,
"crontab" : "" ,
"once" : true ,
"onceDelay" : 0.1 ,
"x" : 90 ,
"y" : 420 ,
"wires" : [
[
"aa3a99bd.8df5b8"
]
]
} ,
{
"id" : "b8f99af2.43c928" ,
"type" : "switch" ,
"z" : "791ce869.901798" ,
"name" : "isInitialized?" ,
"property" : "$flowContext('isInitialized')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "true"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 390 ,
"y" : 420 ,
"wires" : [
[
"5ac19b61.231e64"
] ,
[
"4bbbf5fa.1a452c" ,
"ebb71aba.3ffc38"
]
]
} ,
{
"id" : "ff1341d.17ca8c" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "isInitialized" ,
"pt" : "flow" ,
"to" : "true" ,
"tot" : "bool"
} ,
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
"to" : "$number(payload.balance)" ,
"tot" : "jsonata"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1420 ,
"y" : 80 ,
"wires" : [
[
"a855b1cd.68de7"
]
]
} ,
{
"id" : "4bbbf5fa.1a452c" ,
"type" : "get-account-balance" ,
"z" : "791ce869.901798" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 600 ,
"y" : 120 ,
"wires" : [
[
"4fc3c2c2.eb524c" ,
"f8444acf.9e5018"
] ,
[
"25a10fa1.89d85" ,
"bed8d866.996918"
]
]
} ,
{
"id" : "137e74af.55b07b" ,
"type" : "switch" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"property" : "payload.XXMR" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "nempty"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1010 ,
"y" : 80 ,
"wires" : [
[
"ff1341d.17ca8c"
] ,
[
"5da3780b.7006f8"
]
]
} ,
{
"id" : "5da3780b.7006f8" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "payload.balance" ,
"pt" : "msg" ,
"to" : "0" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1190 ,
"y" : 120 ,
"wires" : [
[
"ff1341d.17ca8c"
]
]
} ,
{
"id" : "a855b1cd.68de7" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Initialized." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1610 ,
"y" : 80 ,
"wires" : [ ]
} ,
{
"id" : "25a10fa1.89d85" ,
"type" : "delay" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "5" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 180 ,
"wires" : [
[
"4bbbf5fa.1a452c"
]
]
} ,
{
"id" : "bed8d866.996918" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Error getting Balance - retrying infinite." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 940 ,
"y" : 160 ,
"wires" : [ ]
} ,
{
"id" : "a1380874.e1ec38" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 80 ,
"wires" : [
[
"4e7b5ea3.e8877"
]
]
} ,
{
"id" : "4e7b5ea3.e8877" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "isInitialized" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 80 ,
"wires" : [
[ ]
]
} ,
{
"id" : "a4844097.ea3fa" ,
"type" : "comment" ,
"z" : "791ce869.901798" ,
"name" : "Force-Uninitialize (Reload settings)" ,
"info" : "" ,
"x" : 160 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "5ac19b61.231e64" ,
"type" : "get-ticker-information" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"x" : 630 ,
"y" : 640 ,
"wires" : [
[
"f5b164f3.f31528" ,
"7732e077.359e8" ,
"f0e0540.34101b"
] ,
[
"1eaad6dd.29ae19"
]
]
} ,
{
"id" : "1eaad6dd.29ae19" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Ticker Retrieval Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 890 ,
"y" : 760 ,
"wires" : [ ]
} ,
{
"id" : "46ab4c93.ec7a24" ,
"type" : "switch" ,
"z" : "791ce869.901798" ,
"name" : "Action" ,
"property" : "action" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "eq" ,
"v" : "sell" ,
"vt" : "str"
} ,
{
"t" : "eq" ,
"v" : "buy" ,
"vt" : "str"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 3 ,
"x" : 1090 ,
"y" : 680 ,
"wires" : [
[
"65e8472b.077f68" ,
"c4c5f78.c5b4008"
] ,
[
"b569c8e1.7d8798" ,
"7826a982.9ab1a8"
] ,
[
"5a75c25c.e3a73c"
]
]
} ,
{
"id" : "1fc77690.6dba29" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "gt (sell)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1760 ,
"y" : 500 ,
"wires" : [ ]
} ,
{
"id" : "fad60147.7959d" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "lt (buy)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1740 ,
"y" : 940 ,
"wires" : [ ]
} ,
{
"id" : "a088ddf.2908b2" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "small diff (nothing)" ,
"active" : false ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1780 ,
"y" : 1040 ,
"wires" : [ ]
} ,
{
"id" : "65e8472b.077f68" ,
"type" : "switch" ,
"z" : "791ce869.901798" ,
"name" : "MinVolReached?" ,
"property" : "$flowContext('coinBalance') - $flowContext('multiplier') " ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "gte" ,
"v" : "minVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 620 ,
"wires" : [
[
"ec94685d.efd4b8"
] ,
[
"87a189d0.fb4808"
]
]
} ,
{
"id" : "87a189d0.fb4808" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Not Selling, min Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1820 ,
"y" : 640 ,
"wires" : [ ]
} ,
{
"id" : "f22af620.d468b8" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "SELLING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1970 ,
"y" : 540 ,
"wires" : [ ]
} ,
{
"id" : "37da2485.6ae8ec" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "BUYING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2150 ,
"y" : 700 ,
"wires" : [ ]
} ,
{
"id" : "b569c8e1.7d8798" ,
"type" : "switch" ,
"z" : "791ce869.901798" ,
"name" : "MaxVolReached?" ,
"property" : "$flowContext('coinBalance') + $flowContext('multiplier')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 800 ,
"wires" : [
[
"5cafb1d8.c2e0b"
] ,
[
"392c8978.051c36"
]
]
} ,
{
"id" : "392c8978.051c36" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Not buying, max Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1830 ,
"y" : 840 ,
"wires" : [ ]
} ,
{
"id" : "f5b164f3.f31528" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "Determine Action" ,
2021-01-04 11:36:23 -06:00
"func" : "//$number(payload.XMRUSD.a[0]) - $number($flowContext('lastExecPrice'))\n\nconst delta=flow.get('delta'); // how much price move to take action?\nlet pair=flow.get(\"pair\");\nlet askPrice=msg.payload[pair].a[0];\nlet bidPrice=msg.payload[pair].b[0];\nflow.set(\"askPrice\",Number(askPrice));\nflow.set(\"bidPrice\",Number(bidPrice));\n\nlet lastExecPrice=flow.get('lastExecPrice',\"file\");\n\nif (lastExecPrice === undefined) { \n lastExecPrice=askPrice; \n flow.set('lastExecPrice',Number(lastExecPrice),\"file\");\n}\n\nmsg.lastExecPrice=lastExecPrice;\n\nif (bidPrice>lastExecPrice+delta) {\n msg.action=\"sell\";\n msg.price=bidPrice;\n} else if (askPrice<lastExecPrice-delta) {\n msg.action=\"buy\";\n msg.price=askPrice;\n} else {\n msg.action=\"nothing\";\n}\n\nreturn msg;" ,
2020-12-24 18:11:28 -06:00
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 910 ,
"y" : 680 ,
"wires" : [
[
"46ab4c93.ec7a24"
]
]
} ,
{
"id" : "7e1d9a.c6aeb268" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "BuildOrder (buy)" ,
"func" : "let multiplier = Number(flow.get('multiplier'));\nlet pair = flow.get('pair');\n\nmsg.payload={\n\tpair : pair,\n\ttype : 'buy',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1960 ,
"y" : 720 ,
"wires" : [
[
"37da2485.6ae8ec" ,
"4c94b0f3.5706d"
]
]
} ,
{
"id" : "cf749675.a7b758" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "NoSellAction" ,
"func" : "let pair = flow.get('pair');\nlet sellPrice = Number(msg.payload[pair].b[0]);\n\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1750 ,
"y" : 680 ,
"wires" : [
[ ]
]
} ,
{
"id" : "d0eab84.fb81048" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "NoBuyAction" ,
"func" : "let pair = flow.get('pair');\nlet buyPrice = Number(msg.payload[pair].a[0]);\n\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1750 ,
"y" : 880 ,
"wires" : [
[ ]
]
} ,
{
"id" : "ec94685d.efd4b8" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "Buid Order (sell)" ,
"func" : "let pair = flow.get('pair');\nlet multiplier = Number(flow.get('multiplier'));\n\nmsg.payload={\n\tpair : pair,\n\ttype : 'sell',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1760 ,
"y" : 560 ,
"wires" : [
[
"f22af620.d468b8" ,
"4b011555.eb58dc"
]
]
} ,
{
"id" : "a0f0c683.33fa88" ,
"type" : "sqlite" ,
"z" : "791ce869.901798" ,
"mydb" : "c0dcbde0.3085" ,
"sqlquery" : "msg.topic" ,
"sql" : "" ,
"name" : "" ,
"x" : 1150 ,
"y" : 500 ,
"wires" : [
[ ]
]
} ,
{
"id" : "7732e077.359e8" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "Build Insert Statement" ,
"func" : "let pair=flow.get(\"pair\");\nmsg.topic=\"Insert into KrakenQuotes (Symbol,Data) values ('\"+ pair +\"','\" + JSON.stringify(msg.payload[pair]) + \"');\"\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 860 ,
"y" : 540 ,
"wires" : [
[
"c9f10e3c.9c955" ,
"a0f0c683.33fa88"
]
]
} ,
{
"id" : "c9f10e3c.9c955" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1090 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "3ff5fd03.2ca232" ,
"type" : "comment" ,
"z" : "791ce869.901798" ,
"name" : "Initialization" ,
"info" : "" ,
"x" : 510 ,
"y" : 300 ,
"wires" : [ ]
} ,
{
"id" : "de6fb450.f80908" ,
"type" : "comment" ,
"z" : "791ce869.901798" ,
"name" : "Regular Looping" ,
"info" : "" ,
"x" : 520 ,
"y" : 580 ,
"wires" : [ ]
} ,
{
"id" : "4b011555.eb58dc" ,
"type" : "add-standard-order" ,
"z" : "791ce869.901798" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "Send Sell Order" ,
"x" : 2460 ,
"y" : 560 ,
"wires" : [
[
"5596b182.9b1d9" ,
"d313119a.7dbbd"
] ,
[
"e33429fb.63d0b8"
]
]
} ,
{
"id" : "5596b182.9b1d9" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2740 ,
"y" : 500 ,
"wires" : [ ]
} ,
{
"id" : "e33429fb.63d0b8" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2750 ,
"y" : 800 ,
"wires" : [ ]
} ,
{
"id" : "ebb71aba.3ffc38" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Needs Initialization" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 640 ,
"y" : 220 ,
"wires" : [ ]
} ,
{
"id" : "9171c134.547a5" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "$flowContext('coinBalance') / $flowContext('multiplier')" ,
"targetType" : "jsonata" ,
"x" : 320 ,
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "2c6c2f0.fd81ad" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 110 ,
"y" : 200 ,
"wires" : [
[
"9171c134.547a5"
]
]
} ,
{
"id" : "b563c64d.f3b4d8" ,
"type" : "comment" ,
"z" : "791ce869.901798" ,
"name" : "Get current \"standardized balance\"" ,
"info" : "" ,
"x" : 160 ,
"y" : 140 ,
"wires" : [ ]
} ,
{
"id" : "c4c5f78.c5b4008" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 500 ,
"wires" : [
[
"1fc77690.6dba29"
]
]
} ,
{
"id" : "7826a982.9ab1a8" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 940 ,
"wires" : [
[
"fad60147.7959d"
]
]
} ,
{
"id" : "5a75c25c.e3a73c" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 1040 ,
"wires" : [
[
"a088ddf.2908b2"
]
]
} ,
{
"id" : "18ad848.b1ba67c" ,
"type" : "catch" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"scope" : null ,
"uncaught" : false ,
"x" : 220 ,
"y" : 980 ,
"wires" : [
[
"b12af9d5.fa7168"
]
]
} ,
{
"id" : "b12af9d5.fa7168" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "ERROR!!!" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 470 ,
"y" : 980 ,
"wires" : [ ]
} ,
{
"id" : "5cafb1d8.c2e0b" ,
"type" : "switch" ,
"z" : "791ce869.901798" ,
"name" : "Max-Price?" ,
"property" : "$number(payload.XXMRZUSD.a[0])" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxBuyPrice" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1750 ,
"y" : 760 ,
"wires" : [
[
"7e1d9a.c6aeb268"
] ,
[
"9fc278e4.eec9f8"
]
]
} ,
{
"id" : "9fc278e4.eec9f8" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "Not Buying, max buy price exceeded." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2040 ,
"y" : 780 ,
"wires" : [ ]
} ,
{
"id" : "a83a82d7.061a7" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 190 ,
"y" : 340 ,
"wires" : [
[
"40a6e4ef.7b632c"
]
]
} ,
{
"id" : "40a6e4ef.7b632c" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 310 ,
"y" : 280 ,
"wires" : [ ]
} ,
{
"id" : "ebc8b806.bd8c08" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 280 ,
"wires" : [
[
"a83a82d7.061a7"
]
]
} ,
{
"id" : "90b1a878.2e9078" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 680 ,
"wires" : [
[
"842629ff.39e1f8"
]
]
} ,
{
"id" : "842629ff.39e1f8" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "BUY" ,
"rules" : [
{
"t" : "set" ,
"p" : "#:(file)::lastExecPrice" ,
"pt" : "flow" ,
"to" : "999" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 290 ,
"y" : 680 ,
"wires" : [
[ ]
]
} ,
{
"id" : "f0e0540.34101b" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 900 ,
"y" : 440 ,
"wires" : [ ]
} ,
{
"id" : "4fc3c2c2.eb524c" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 770 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "aa3a99bd.8df5b8" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "pair" ,
"pt" : "flow" ,
"to" : "payload.pair" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "currency" ,
"pt" : "flow" ,
"to" : "payload.currency" ,
"tot" : "msg"
2021-01-04 11:36:23 -06:00
} ,
{
"t" : "set" ,
"p" : "maxVolume" ,
"pt" : "flow" ,
"to" : "payload.maxVolume" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "minVolume" ,
"pt" : "flow" ,
"to" : "payload.minVolume" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "multiplier" ,
"pt" : "flow" ,
"to" : "payload.multiplier" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "maxBuyPrice" ,
"pt" : "flow" ,
"to" : "payload.maxBuyPrice" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "delta" ,
"pt" : "flow" ,
"to" : "payload.delta" ,
"tot" : "msg"
2020-12-24 18:11:28 -06:00
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 200 ,
"y" : 500 ,
"wires" : [
[
"b8f99af2.43c928"
]
]
} ,
{
"id" : "d313119a.7dbbd" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "Recompute CoinBalance (sell)" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet sellPrice = flow.get(\"bidPrice\");\n\ncoinBalance -= multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 2770 ,
"y" : 560 ,
"wires" : [
[ ]
]
} ,
{
"id" : "237dab2.fbb4054" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "Recompute CoinBalance (buy)" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet buyPrice = flow.get(\"askPrice\"); \n\ncoinBalance += multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 2770 ,
"y" : 720 ,
"wires" : [
[ ]
]
} ,
{
"id" : "4c94b0f3.5706d" ,
"type" : "add-standard-order" ,
"z" : "791ce869.901798" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "Send Buy Order " ,
"x" : 2460 ,
"y" : 720 ,
"wires" : [
[
"5596b182.9b1d9" ,
"237dab2.fbb4054"
] ,
[
"e33429fb.63d0b8"
]
]
} ,
{
"id" : "f8444acf.9e5018" ,
"type" : "function" ,
"z" : "791ce869.901798" ,
"name" : "dynamic Currency To fix Key" ,
"func" : "let currency=flow.get('currency');\n\nif (msg.payload[currency]!==undefined) {\n msg.payload.balance=msg.payload[currency];\n}\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 820 ,
"y" : 80 ,
"wires" : [
[
"137e74af.55b07b" ,
"c6cb83e5.47092"
]
]
} ,
{
"id" : "c6cb83e5.47092" ,
"type" : "debug" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 1060 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "a695a39b.f7902" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 760 ,
"wires" : [
[
"5b6ededf.2ac89"
]
]
} ,
{
"id" : "5b6ededf.2ac89" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "Manual CoinBalance" ,
"rules" : [
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
"to" : "6" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 760 ,
"wires" : [
[ ]
]
} ,
{
"id" : "a3d0d862.ac3b88" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 840 ,
"wires" : [
[
"f6f269cb.ffcf18"
]
]
} ,
{
"id" : "f6f269cb.ffcf18" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "Manual LastExecPrice" ,
"rules" : [
{
"t" : "set" ,
"p" : "#:(file)::lastExecPrice" ,
"pt" : "flow" ,
"to" : "154.96" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 840 ,
"wires" : [
[ ]
]
} ,
{
"id" : "d085c84b.b8d738" ,
"type" : "inject" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 900 ,
"wires" : [
[
"8253bf67.e626c"
]
]
} ,
{
"id" : "8253bf67.e626c" ,
"type" : "change" ,
"z" : "791ce869.901798" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "#:(file)::coinBalance" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 330 ,
"y" : 900 ,
"wires" : [
[ ]
]
2021-01-04 11:36:23 -06:00
} ,
{
"id" : "322633db.979c1c" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "{\"pair\":\"XETCZUSD\", \"currency\":\"XETC\", \"maxVolume\": 2000, \"minVolume\":0, \"delta\":0.1, \"multiplier\":50, \"maxBuyPrice\":7.5}" ,
"payloadType" : "json" ,
"repeat" : "60" ,
"crontab" : "" ,
"once" : true ,
"onceDelay" : 0.1 ,
"x" : 90 ,
"y" : 420 ,
"wires" : [
[
"c3a7340e.13c908"
]
]
} ,
{
"id" : "2e3c4069.869b4" ,
"type" : "switch" ,
"z" : "28401549.718faa" ,
"name" : "isInitialized?" ,
"property" : "$flowContext('isInitialized')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "true"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 390 ,
"y" : 420 ,
"wires" : [
[
"b7f75107.7536d"
] ,
[
"60f880c7.c52e6" ,
"42f5e398.570d7c"
]
]
} ,
{
"id" : "2d57d263.6e07ce" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "isInitialized" ,
"pt" : "flow" ,
"to" : "true" ,
"tot" : "bool"
} ,
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
"to" : "$number(payload.balance)" ,
"tot" : "jsonata"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1420 ,
"y" : 80 ,
"wires" : [
[
"a9bde9c.c132918"
]
]
} ,
{
"id" : "60f880c7.c52e6" ,
"type" : "get-account-balance" ,
"z" : "28401549.718faa" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "" ,
"x" : 600 ,
"y" : 120 ,
"wires" : [
[
"8d54894c.12e758" ,
"adf52a9f.4e5a18"
] ,
[
"512c3efc.38b07" ,
"2f4028ea.c08a58"
]
]
} ,
{
"id" : "610d0259.e3df5c" ,
"type" : "switch" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"property" : "payload.XXMR" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "nempty"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1010 ,
"y" : 80 ,
"wires" : [
[
"2d57d263.6e07ce"
] ,
[
"2673184f.e6c148"
]
]
} ,
{
"id" : "2673184f.e6c148" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "payload.balance" ,
"pt" : "msg" ,
"to" : "0" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 1190 ,
"y" : 120 ,
"wires" : [
[
"2d57d263.6e07ce"
]
]
} ,
{
"id" : "a9bde9c.c132918" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Initialized." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1610 ,
"y" : 80 ,
"wires" : [ ]
} ,
{
"id" : "512c3efc.38b07" ,
"type" : "delay" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"pauseType" : "delay" ,
"timeout" : "5" ,
"timeoutUnits" : "seconds" ,
"rate" : "1" ,
"nbRateUnits" : "1" ,
"rateUnits" : "second" ,
"randomFirst" : "1" ,
"randomLast" : "5" ,
"randomUnits" : "seconds" ,
"drop" : false ,
"x" : 600 ,
"y" : 180 ,
"wires" : [
[
"60f880c7.c52e6"
]
]
} ,
{
"id" : "2f4028ea.c08a58" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Error getting Balance - retrying infinite." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 940 ,
"y" : 160 ,
"wires" : [ ]
} ,
{
"id" : "1cb22cc6.9f59a3" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 80 ,
"wires" : [
[
"eaa0c7b.a179438"
]
]
} ,
{
"id" : "eaa0c7b.a179438" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "isInitialized" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 80 ,
"wires" : [
[ ]
]
} ,
{
"id" : "3acbd052.6d27f" ,
"type" : "comment" ,
"z" : "28401549.718faa" ,
"name" : "Force-Uninitialize (Reload settings)" ,
"info" : "" ,
"x" : 160 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "b7f75107.7536d" ,
"type" : "get-ticker-information" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"x" : 630 ,
"y" : 640 ,
"wires" : [
[
"c9d65f4.ad1f3a" ,
"7eee6967.39e488" ,
"481867e7.00e518"
] ,
[
"b4e47a73.fc96a8"
]
]
} ,
{
"id" : "b4e47a73.fc96a8" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Ticker Retrieval Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 890 ,
"y" : 760 ,
"wires" : [ ]
} ,
{
"id" : "88533b16.f7d048" ,
"type" : "switch" ,
"z" : "28401549.718faa" ,
"name" : "Action" ,
"property" : "action" ,
"propertyType" : "msg" ,
"rules" : [
{
"t" : "eq" ,
"v" : "sell" ,
"vt" : "str"
} ,
{
"t" : "eq" ,
"v" : "buy" ,
"vt" : "str"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 3 ,
"x" : 1090 ,
"y" : 680 ,
"wires" : [
[
"c0f7c8b3.9cef78" ,
"41fa07aa.ecca38"
] ,
[
"8b099891.abc3c8" ,
"6c1b650a.85f83c"
] ,
[
"af3ca106.0c6df"
]
]
} ,
{
"id" : "bad3930d.0ec49" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "gt (sell)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1760 ,
"y" : 500 ,
"wires" : [ ]
} ,
{
"id" : "c7db83ea.ee89b" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "lt (buy)" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1740 ,
"y" : 940 ,
"wires" : [ ]
} ,
{
"id" : "5e82f447.b7312c" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "small diff (nothing)" ,
"active" : false ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1780 ,
"y" : 1040 ,
"wires" : [ ]
} ,
{
"id" : "c0f7c8b3.9cef78" ,
"type" : "switch" ,
"z" : "28401549.718faa" ,
"name" : "MinVolReached?" ,
"property" : "$flowContext('coinBalance') - $flowContext('multiplier') " ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "gte" ,
"v" : "minVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 620 ,
"wires" : [
[
"90c40c14.4323c"
] ,
[
"eb091ceb.0dd5"
]
]
} ,
{
"id" : "eb091ceb.0dd5" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Not Selling, min Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1820 ,
"y" : 640 ,
"wires" : [ ]
} ,
{
"id" : "f35f59b1.4fd0f8" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "SELLING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1970 ,
"y" : 540 ,
"wires" : [ ]
} ,
{
"id" : "30cdc652.06506a" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "BUYING!" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 2150 ,
"y" : 700 ,
"wires" : [ ]
} ,
{
"id" : "8b099891.abc3c8" ,
"type" : "switch" ,
"z" : "28401549.718faa" ,
"name" : "MaxVolReached?" ,
"property" : "$flowContext('coinBalance') + $flowContext('multiplier')" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxVolume" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1510 ,
"y" : 800 ,
"wires" : [
[
"abb50971.3c6678"
] ,
[
"7e48598b.9a6cb8"
]
]
} ,
{
"id" : "7e48598b.9a6cb8" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Not buying, max Volume reached." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "payload" ,
"targetType" : "msg" ,
"x" : 1830 ,
"y" : 840 ,
"wires" : [ ]
} ,
{
"id" : "c9d65f4.ad1f3a" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "Determine Action" ,
"func" : "//$number(payload.XMRUSD.a[0]) - $number($flowContext('lastExecPrice'))\n\nconst delta=flow.get('delta'); // how much price move to take action?\nlet pair=flow.get(\"pair\");\nlet askPrice=msg.payload[pair].a[0];\nlet bidPrice=msg.payload[pair].b[0];\nflow.set(\"askPrice\",Number(askPrice));\nflow.set(\"bidPrice\",Number(bidPrice));\n\nlet lastExecPrice=flow.get('lastExecPrice',\"file\");\n\nif (lastExecPrice === undefined) { \n lastExecPrice=askPrice; \n flow.set('lastExecPrice',Number(lastExecPrice),\"file\");\n}\n\nmsg.lastExecPrice=lastExecPrice;\n\nif (bidPrice>lastExecPrice+delta) {\n msg.action=\"sell\";\n msg.price=bidPrice;\n} else if (askPrice<lastExecPrice-delta) {\n msg.action=\"buy\";\n msg.price=askPrice;\n} else {\n msg.action=\"nothing\";\n}\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 910 ,
"y" : 680 ,
"wires" : [
[
"88533b16.f7d048"
]
]
} ,
{
"id" : "eb76a933.5be198" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "BuildOrder (buy)" ,
"func" : "let multiplier = Number(flow.get('multiplier'));\nlet pair = flow.get('pair');\n\nmsg.payload={\n\tpair : pair,\n\ttype : 'buy',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1960 ,
"y" : 720 ,
"wires" : [
[
"30cdc652.06506a" ,
"e21e73d0.3f292"
]
]
} ,
{
"id" : "36f55ba3.06d3f4" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "NoSellAction" ,
"func" : "let pair = flow.get('pair');\nlet sellPrice = Number(msg.payload[pair].b[0]);\n\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1750 ,
"y" : 680 ,
"wires" : [
[ ]
]
} ,
{
"id" : "afd8e8e5.071088" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "NoBuyAction" ,
"func" : "let pair = flow.get('pair');\nlet buyPrice = Number(msg.payload[pair].a[0]);\n\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1750 ,
"y" : 880 ,
"wires" : [
[ ]
]
} ,
{
"id" : "90c40c14.4323c" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "Buid Order (sell)" ,
"func" : "let pair = flow.get('pair');\nlet multiplier = Number(flow.get('multiplier'));\n\nmsg.payload={\n\tpair : pair,\n\ttype : 'sell',\n\tordertype : 'market',\n\tvolume : multiplier\n};\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1760 ,
"y" : 560 ,
"wires" : [
[
"f35f59b1.4fd0f8" ,
"ff5db497.77cb48"
]
]
} ,
{
"id" : "5d766ac5.77acc4" ,
"type" : "sqlite" ,
"z" : "28401549.718faa" ,
"mydb" : "c0dcbde0.3085" ,
"sqlquery" : "msg.topic" ,
"sql" : "" ,
"name" : "" ,
"x" : 1150 ,
"y" : 500 ,
"wires" : [
[ ]
]
} ,
{
"id" : "7eee6967.39e488" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "Build Insert Statement" ,
"func" : "let pair=flow.get(\"pair\");\nmsg.topic=\"Insert into KrakenQuotes (Symbol,Data) values ('\"+ pair +\"','\" + JSON.stringify(msg.payload[pair]) + \"');\"\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 860 ,
"y" : 540 ,
"wires" : [
[
"c5f9fbcc.fdd978" ,
"5d766ac5.77acc4"
]
]
} ,
{
"id" : "c5f9fbcc.fdd978" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 1090 ,
"y" : 560 ,
"wires" : [ ]
} ,
{
"id" : "f28bf493.45eb08" ,
"type" : "comment" ,
"z" : "28401549.718faa" ,
"name" : "Initialization" ,
"info" : "" ,
"x" : 510 ,
"y" : 300 ,
"wires" : [ ]
} ,
{
"id" : "466d8ee2.f8c6e" ,
"type" : "comment" ,
"z" : "28401549.718faa" ,
"name" : "Regular Looping" ,
"info" : "" ,
"x" : 520 ,
"y" : 580 ,
"wires" : [ ]
} ,
{
"id" : "ff5db497.77cb48" ,
"type" : "add-standard-order" ,
"z" : "28401549.718faa" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "Send Sell Order" ,
"x" : 2460 ,
"y" : 560 ,
"wires" : [
[
"92d9aa58.40bf58" ,
"a9bda89.c5e5258"
] ,
[
"1be10ced.ae6883"
]
]
} ,
{
"id" : "92d9aa58.40bf58" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Order Execution Success" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2740 ,
"y" : 500 ,
"wires" : [ ]
} ,
{
"id" : "1be10ced.ae6883" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Order Execution Error" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2750 ,
"y" : 800 ,
"wires" : [ ]
} ,
{
"id" : "42f5e398.570d7c" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Needs Initialization" ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 640 ,
"y" : 220 ,
"wires" : [ ]
} ,
{
"id" : "1f50628d.69f26d" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "$flowContext('coinBalance') / $flowContext('multiplier')" ,
"targetType" : "jsonata" ,
"x" : 320 ,
"y" : 200 ,
"wires" : [ ]
} ,
{
"id" : "3df530c1.6348e" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 110 ,
"y" : 200 ,
"wires" : [
[
"1f50628d.69f26d"
]
]
} ,
{
"id" : "a9181f17.d19fe" ,
"type" : "comment" ,
"z" : "28401549.718faa" ,
"name" : "Get current \"standardized balance\"" ,
"info" : "" ,
"x" : 160 ,
"y" : 140 ,
"wires" : [ ]
} ,
{
"id" : "41fa07aa.ecca38" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 500 ,
"wires" : [
[
"bad3930d.0ec49"
]
]
} ,
{
"id" : "6c1b650a.85f83c" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 940 ,
"wires" : [
[
"c7db83ea.ee89b"
]
]
} ,
{
"id" : "af3ca106.0c6df" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 1510 ,
"y" : 1040 ,
"wires" : [
[
"5e82f447.b7312c"
]
]
} ,
{
"id" : "cfc5c019.f5059" ,
"type" : "catch" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"scope" : null ,
"uncaught" : false ,
"x" : 220 ,
"y" : 980 ,
"wires" : [
[
"dc04cd7a.1f338"
]
]
} ,
{
"id" : "dc04cd7a.1f338" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "ERROR!!!" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 470 ,
"y" : 980 ,
"wires" : [ ]
} ,
{
"id" : "abb50971.3c6678" ,
"type" : "switch" ,
"z" : "28401549.718faa" ,
"name" : "Max-Price?" ,
"property" : "$number(payload.XXMRZUSD.a[0])" ,
"propertyType" : "jsonata" ,
"rules" : [
{
"t" : "lte" ,
"v" : "maxBuyPrice" ,
"vt" : "flow"
} ,
{
"t" : "else"
}
] ,
"checkall" : "true" ,
"repair" : false ,
"outputs" : 2 ,
"x" : 1750 ,
"y" : 760 ,
"wires" : [
[
"eb76a933.5be198"
] ,
[
"8bc8b1f9.66d35"
]
]
} ,
{
"id" : "8bc8b1f9.66d35" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "Not Buying, max buy price exceeded." ,
"active" : true ,
"tosidebar" : true ,
"console" : true ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 2040 ,
"y" : 780 ,
"wires" : [ ]
} ,
{
"id" : "10231861.ad3ec8" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "FlowContext2msg" ,
"func" : "msg.flowContext = {};\nflow.keys(\"file\").forEach(ele=>{\n msg.flowContext[\"(File)\"+ele]=flow.get(ele,\"file\");\n});\nflow.keys().forEach(ele=>{\n msg.flowContext[\"(Mem)\"+ele]=flow.get(ele);\n});\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 190 ,
"y" : 340 ,
"wires" : [
[
"64222400.2f6cfc"
]
]
} ,
{
"id" : "64222400.2f6cfc" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "true" ,
"targetType" : "full" ,
"x" : 310 ,
"y" : 280 ,
"wires" : [ ]
} ,
{
"id" : "ed2c5332.6d791" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 280 ,
"wires" : [
[
"10231861.ad3ec8"
]
]
} ,
{
"id" : "dba0a3af.87b3d" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 680 ,
"wires" : [
[
"609ce70a.f0e4c8"
]
]
} ,
{
"id" : "609ce70a.f0e4c8" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "BUY" ,
"rules" : [
{
"t" : "set" ,
"p" : "#:(file)::lastExecPrice" ,
"pt" : "flow" ,
"to" : "999" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 290 ,
"y" : 680 ,
"wires" : [
[ ]
]
} ,
{
"id" : "481867e7.00e518" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"active" : false ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 900 ,
"y" : 440 ,
"wires" : [ ]
} ,
{
"id" : "8d54894c.12e758" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 770 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "c3a7340e.13c908" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"rules" : [
{
"t" : "set" ,
"p" : "pair" ,
"pt" : "flow" ,
"to" : "payload.pair" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "currency" ,
"pt" : "flow" ,
"to" : "payload.currency" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "maxVolume" ,
"pt" : "flow" ,
"to" : "payload.maxVolume" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "minVolume" ,
"pt" : "flow" ,
"to" : "payload.minVolume" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "multiplier" ,
"pt" : "flow" ,
"to" : "payload.multiplier" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "maxBuyPrice" ,
"pt" : "flow" ,
"to" : "payload.maxBuyPrice" ,
"tot" : "msg"
} ,
{
"t" : "set" ,
"p" : "delta" ,
"pt" : "flow" ,
"to" : "payload.delta" ,
"tot" : "msg"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 200 ,
"y" : 500 ,
"wires" : [
[
"2e3c4069.869b4"
]
]
} ,
{
"id" : "a9bda89.c5e5258" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "Recompute CoinBalance (sell)" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet sellPrice = flow.get(\"bidPrice\");\n\ncoinBalance -= multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',sellPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 2770 ,
"y" : 560 ,
"wires" : [
[ ]
]
} ,
{
"id" : "950f94.5276007" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "Recompute CoinBalance (buy)" ,
"func" : "let coinBalance = flow.get('coinBalance');\nlet delta = flow.get('delta');\nlet multiplier = Number(flow.get('multiplier'));\nlet buyPrice = flow.get(\"askPrice\"); \n\ncoinBalance += multiplier;\n\nflow.set('coinBalance',coinBalance);\nflow.set('lastExecPrice',buyPrice,\"file\");\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 2770 ,
"y" : 720 ,
"wires" : [
[ ]
]
} ,
{
"id" : "e21e73d0.3f292" ,
"type" : "add-standard-order" ,
"z" : "28401549.718faa" ,
"kraken" : "e64b38bb.529c88" ,
"name" : "Send Buy Order " ,
"x" : 2460 ,
"y" : 720 ,
"wires" : [
[
"92d9aa58.40bf58" ,
"950f94.5276007"
] ,
[
"1be10ced.ae6883"
]
]
} ,
{
"id" : "adf52a9f.4e5a18" ,
"type" : "function" ,
"z" : "28401549.718faa" ,
"name" : "dynamic Currency To fix Key" ,
"func" : "let currency=flow.get('currency');\n\nif (msg.payload[currency]!==undefined) {\n msg.payload.balance=msg.payload[currency];\n}\n\nreturn msg;" ,
"outputs" : 1 ,
"noerr" : 0 ,
"x" : 820 ,
"y" : 80 ,
"wires" : [
[
"610d0259.e3df5c" ,
"9bda3ba8.c6b038"
]
]
} ,
{
"id" : "9bda3ba8.c6b038" ,
"type" : "debug" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"active" : true ,
"tosidebar" : true ,
"console" : false ,
"tostatus" : false ,
"complete" : "false" ,
"x" : 1060 ,
"y" : 40 ,
"wires" : [ ]
} ,
{
"id" : "3e8fee12.033832" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 760 ,
"wires" : [
[
"d56e5ce0.a2499"
]
]
} ,
{
"id" : "d56e5ce0.a2499" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "Manual CoinBalance" ,
"rules" : [
{
"t" : "set" ,
"p" : "coinBalance" ,
"pt" : "flow" ,
"to" : "6" ,
"tot" : "num"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 760 ,
"wires" : [
[ ]
]
} ,
{
"id" : "db23fe61.a94ea" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 840 ,
"wires" : [
[
"49001c8f.527214"
]
]
} ,
{
"id" : "49001c8f.527214" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "Manual LastExecPrice" ,
"rules" : [
{
"t" : "delete" ,
"p" : "#:(file)::lastExecPrice" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 340 ,
"y" : 840 ,
"wires" : [
[ ]
]
} ,
{
"id" : "18ed1316.8484dd" ,
"type" : "inject" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"topic" : "" ,
"payload" : "" ,
"payloadType" : "date" ,
"repeat" : "" ,
"crontab" : "" ,
"once" : false ,
"onceDelay" : 0.1 ,
"x" : 100 ,
"y" : 900 ,
"wires" : [
[
"538f5e05.71637"
]
]
} ,
{
"id" : "538f5e05.71637" ,
"type" : "change" ,
"z" : "28401549.718faa" ,
"name" : "" ,
"rules" : [
{
"t" : "delete" ,
"p" : "#:(file)::coinBalance" ,
"pt" : "flow"
}
] ,
"action" : "" ,
"property" : "" ,
"from" : "" ,
"to" : "" ,
"reg" : false ,
"x" : 330 ,
"y" : 900 ,
"wires" : [
[ ]
]
2020-01-05 19:16:13 -06:00
}
]