diff --git a/Assistant.js b/Assistant.js
index 75ac8c03a..293a657fd 100644
--- a/Assistant.js
+++ b/Assistant.js
@@ -63,7 +63,8 @@
}
case 'Backtest': {
- getMarketRateFromIndicator();
+ // getMarketRateFromIndicator(); NOTE: This path is disabled since for now we do not allow ticker in simulation. Also it allow us to ship a dataset without bruce
+ validateExchangeSyncronicity();
break;
}
@@ -112,13 +113,13 @@
validateExchangeSyncronicity();
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromExchange -> onTicker -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromExchange -> onTicker -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromExchange -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromExchange -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -156,12 +157,12 @@
let candleArray;
if (err.result === global.CUSTOM_FAIL_RESPONSE.result || err.code === "The specified key does not exist." || err.message === "File does not exist.") { // Just past midnight, this file will not exist for a couple of minutes.
-
+
logger.write(MODULE_NAME, "[WARN] initialize -> getMarketRateFromIndicator -> onFileReceived -> err = " + JSON.stringify(err));
logger.write(MODULE_NAME, "[WARN] initialize -> getMarketRateFromIndicator -> This could happen when there are still holes on trades and the process needs to catch up. ");
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
return;
-
+
}
if (err.result === global.DEFAULT_OK_RESPONSE.result) {
@@ -211,7 +212,7 @@
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromIndicator -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> getMarketRateFromIndicator -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -253,13 +254,13 @@
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> validateExchangeSyncronicity -> onDone -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> validateExchangeSyncronicity -> onDone -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> onDone -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -313,14 +314,14 @@
callBackFunction(global.DEFAULT_OK_RESPONSE);
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> calculateProfits -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> calculateProfits -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
return;
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] initialize -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] initialize -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -399,7 +400,7 @@
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] getPositionsAtExchange -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -561,17 +562,17 @@
if (thisPosition.id === pPositionId) {
- let feeRate = 0.002; // Default backtesting fee simulation
+ let feeRate = 0.002; // Default backtesting fee simulation
- let trade = {
- id: Math.trunc(Math.random(1) * 1000000),
- type: thisPosition.type,
- rate: thisPosition.rate.toString(),
+ let trade = {
+ id: Math.trunc(Math.random(1) * 1000000),
+ type: thisPosition.type,
+ rate: thisPosition.rate.toString(),
amountA: thisObject.truncDecimals(thisPosition.amountA).toString(),
amountB: thisObject.truncDecimals(thisPosition.amountB).toString(),
fee: thisObject.truncDecimals(feeRate).toString(),
- date: (new Date()).valueOf()
- }
+ date: (new Date()).valueOf()
+ }
trades.push(trade);
@@ -626,12 +627,12 @@
break;
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> onResponse -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> getPositionTradesAtExchange -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -656,7 +657,7 @@
let sumRate = 0;
for (let k = 0; k < pTrades.length; k++) {
- let trade = pTrades[k];
+ let trade = pTrades[k];
sumAssetA = sumAssetA + thisObject.truncDecimals(trade.amountA);
sumAssetB = sumAssetB + thisObject.truncDecimals(trade.amountB);
sumRate = sumRate + thisObject.truncDecimals(trade.rate);
@@ -704,7 +705,7 @@
next();
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasExecuted -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
return;
}
@@ -726,8 +727,8 @@
let sumAssetA = 0;
let sumAssetB = 0;
- for (let k = 0; k < pTrades.length; k++) {
- let trade = pTrades[k];
+ for (let k = 0; k < pTrades.length; k++) {
+ let trade = pTrades[k];
sumAssetA = sumAssetA + thisObject.truncDecimals(trade.amountA);
sumAssetB = sumAssetB + thisObject.truncDecimals(trade.amountB);
}
@@ -749,7 +750,7 @@
*/
let exchangeParam = exchangeAPI.getMaxDecimalPositions();
- let minValue = '0.' + (1).toPrecision(exchangeParam-1).split('.').reverse().join('');
+ let minValue = '0.' + (1).toPrecision(exchangeParam - 1).split('.').reverse().join('');
let exchangePrecision = parseFloat(parseFloat(minValue).toFixed(exchangeParam));
if (Math.abs(position.amountA - sumAssetA) > exchangePrecision || Math.abs(position.amountB - sumAssetB) > exchangePrecision) {
@@ -790,7 +791,7 @@
next();
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> confirmOrderWasPartiallyExecuted -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
return;
}
@@ -857,7 +858,7 @@
context.executionContext.balance.assetA = thisObject.truncDecimals(context.executionContext.balance.assetA + assetA);
context.executionContext.balance.assetB = thisObject.truncDecimals(context.executionContext.balance.assetB - assetB);
- context.executionContext.availableBalance.assetA = thisObject.truncDecimals(context.executionContext.availableBalance.assetA + assetA);
+ context.executionContext.availableBalance.assetA = thisObject.truncDecimals(context.executionContext.availableBalance.assetA + assetA);
/* Not the available balance for asset B is not affected since it was already reduced when the order was placed. */
@@ -865,14 +866,14 @@
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> applyTradesToContext -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> applyTradesToContext -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
return;
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> loopBody -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
return;
}
@@ -911,7 +912,7 @@
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] ordersExecutionCheck -> err = " + err.stack);
callBack(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -1075,12 +1076,12 @@
break;
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] putPosition -> onResponse -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] putPosition -> onResponse -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] putPosition -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] putPosition -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -1199,12 +1200,12 @@
break;
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] movePosition -> onResponse -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] movePosition -> onResponse -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
} catch (err) {
- logger.write(MODULE_NAME, "[ERROR] movePosition -> err = "+ err.stack);
+ logger.write(MODULE_NAME, "[ERROR] movePosition -> err = " + err.stack);
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
}
}
@@ -1330,7 +1331,7 @@
let runIndex = context.statusReport.runs.length - 1;
context.newHistoryRecord.messageRelevance = pRelevance;
- context.newHistoryRecord.messageTitle = bot.startMode + "." + runIndex +": "+ pTitle;
+ context.newHistoryRecord.messageTitle = bot.startMode + "." + runIndex + ": " + pTitle;
context.newHistoryRecord.messageBody = pBody;
}
diff --git a/EventHandler.js b/EventHandler.js
new file mode 100644
index 000000000..401a40a49
--- /dev/null
+++ b/EventHandler.js
@@ -0,0 +1,143 @@
+exports.newEventHandler = function newEventHandler() {
+ let thisObject = {
+ initialize: initialize,
+ createEventHandler: createEventHandler,
+ deleteEventHandler: deleteEventHandler,
+ listenToEvent: listenToEvent,
+ stopListening: stopListening,
+ raiseEvent: raiseEvent
+ }
+
+ let ipc = require('node-ipc');
+ let eventListeners = new Map()
+ let responseWaiters = new Map()
+
+ ipc.config.id = 'Clone Executor';
+ ipc.config.retry = 1500;
+
+ return thisObject
+
+ function initialize(callBackFunction) {
+
+ ipc.connectTo(
+ 'world',
+ function () {
+ ipc.of.world.on(
+ 'connect',
+ function () {
+ ipc.log('## Connected to Superalgos Event Server ##'.rainbow, ipc.config.delay);
+
+ let eventCommand = {
+ action: 'greetings',
+ from: 'Clone Executor'
+ }
+
+ sendCommand(eventCommand)
+
+ callBackFunction()
+ }
+ );
+ ipc.of.world.on(
+ 'disconnect',
+ function () {
+ ipc.log('Disconnected from Superalgos Event Server '.notice);
+ }
+ );
+ ipc.of.world.on(
+ 'message', // here is where all incomming messages are processed.
+ function (data) {
+ ipc.log('Got a message from Superalgos Event Server: '.debug, data);
+
+ let message = JSON.parse(data)
+
+ if (message.action === 'Event Raised') {
+ let handler = eventListeners.get(message.eventHandlerName + '-' + message.eventType)
+ if (handler) {
+ handler(message)
+ }
+ return
+ }
+
+ if (message.action === 'Event Server Response') {
+ let handler = responseWaiters.get(message.callerId)
+ if (handler) {
+ handler(message)
+ }
+ return
+ }
+ }
+ );
+ }
+ );
+ }
+
+ function sendCommand(command, responseCallBack, eventsCallBack) {
+
+ if (command.action === 'listenToEvent') {
+ eventListeners.set(command.eventHandlerName + '-' + command.eventType, eventsCallBack)
+ }
+ if (command.callerId && responseCallBack) {
+ responseWaiters.set(command.callerId, responseCallBack)
+ }
+
+ ipc.of.world.emit(
+ 'message',
+ JSON.stringify(command)
+ )
+ }
+
+ function createEventHandler(eventHandlerName, callerId, responseCallBack) {
+ let eventCommand = {
+ action: 'createEventHandler',
+ eventHandlerName: eventHandlerName,
+ callerId: callerId
+ }
+
+ sendCommand(eventCommand, responseCallBack)
+ }
+
+ function deleteEventHandler(eventHandlerName, callerId, responseCallBack) {
+ let eventCommand = {
+ action: 'deleteEventHandler',
+ eventHandlerName: eventHandlerName,
+ callerId: callerId
+ }
+
+ sendCommand(eventCommand, responseCallBack)
+ }
+
+ function listenToEvent(eventHandlerName, eventType, extraData, callerId, responseCallBack, eventsCallBack) {
+ eventCommand = {
+ action: 'listenToEvent',
+ eventHandlerName: eventHandlerName,
+ eventType: eventType,
+ extraData: extraData,
+ callerId: callerId
+ }
+
+ sendCommand(eventCommand, responseCallBack, eventsCallBack)
+ }
+
+ function stopListening(eventHandlerName, eventSubscriptionId, callerId, responseCallBack) {
+ eventCommand = {
+ action: 'stopListening',
+ eventHandlerName: eventHandlerName,
+ eventSubscriptionId: eventSubscriptionId,
+ callerId: callerId
+ }
+
+ sendCommand(eventCommand, responseCallBack)
+ }
+
+ function raiseEvent(eventHandlerName, eventType, event, callerId, responseCallBack) {
+ let eventCommand = {
+ action: 'raiseEvent',
+ eventHandlerName: eventHandlerName,
+ eventType: eventType,
+ event: event,
+ callerId: callerId
+ }
+
+ sendCommand(eventCommand, responseCallBack)
+ }
+}
\ No newline at end of file
diff --git a/MultiPeriod.js b/MultiPeriod.js
index fa414ff94..39745a489 100644
--- a/MultiPeriod.js
+++ b/MultiPeriod.js
@@ -984,6 +984,10 @@
thisReport.save(callBack);
bot.hasTheBotJustStarted = false;
+
+ /* Emit event that signals that this process finished */
+ global.eventHandler.raiseEvent('Jason-Multi-Period', 'Status Report Updated', { lastProcessedDay: lastFileDate })
+
}
catch (err) {
logger.write(MODULE_NAME, "[ERROR] start -> writeDailyStatusReport -> err = " + err.stack);
diff --git a/Project.njsproj b/Project.njsproj
index a6dd72273..8c8f00478 100644
--- a/Project.njsproj
+++ b/Project.njsproj
@@ -24,6 +24,9 @@
Code
+
+ Code
+
diff --git a/Root.js b/Root.js
index 2e6c123c6..1e031b898 100644
--- a/Root.js
+++ b/Root.js
@@ -1,32 +1,5 @@
exports.newRoot = function newRoot() {
- /* Callbacks default responses. */
-
- global.DEFAULT_OK_RESPONSE = {
- result: "Ok",
- message: "Operation Succeeded"
- };
-
- global.DEFAULT_FAIL_RESPONSE = {
- result: "Fail",
- message: "Operation Failed"
- };
-
- global.DEFAULT_RETRY_RESPONSE = {
- result: "Retry",
- message: "Retry Later"
- };
-
- global.CUSTOM_OK_RESPONSE = {
- result: "Ok, but check Message",
- message: "Custom Message"
- };
-
- global.CUSTOM_FAIL_RESPONSE = {
- result: "Fail Because",
- message: "Custom Message"
- };
-
/* This is the Execution Datetime */
global.EXECUTION_DATETIME = new Date();
diff --git a/Run.js b/Run.js
index 389ea570d..6156a8432 100644
--- a/Run.js
+++ b/Run.js
@@ -1,3 +1,55 @@
+/* Callbacks default responses. */
+
+global.DEFAULT_OK_RESPONSE = {
+ result: "Ok",
+ message: "Operation Succeeded"
+};
+
+global.DEFAULT_FAIL_RESPONSE = {
+ result: "Fail",
+ message: "Operation Failed"
+};
+
+global.DEFAULT_RETRY_RESPONSE = {
+ result: "Retry",
+ message: "Retry Later"
+};
+
+global.CUSTOM_OK_RESPONSE = {
+ result: "Ok, but check Message",
+ message: "Custom Message"
+};
+
+global.CUSTOM_FAIL_RESPONSE = {
+ result: "Fail Because",
+ message: "Custom Message"
+};
+
+const EVENT_HANDLER_MODULE = require('./EventHandler.js');
+global.eventHandler = EVENT_HANDLER_MODULE.newEventHandler()
+
+global.eventHandler.initialize(bootLoader)
+
+function bootLoader() {
+
+ global.eventHandler.createEventHandler('Jason-Multi-Period')
+
+ tryToListenToCockpit()
+
+ function tryToListenToCockpit() {
+
+ global.eventHandler.listenToEvent('Cockpit-Restart-Simulation', 'Simulation Started', undefined, 'Clone Executor Boot Loader', onResponse, startSequence)
+
+ function onResponse(message) {
+ if (message.result !== global.DEFAULT_OK_RESPONSE.result) {
+ setTimeout(tryToListenToCockpit, 3000)
+ }
+ }
+ }
+}
+
+/* Old Run.js code follows... */
+
require('dotenv').config();
global.DEFINITION = require(process.env.INTER_PROCESS_FILES_PATH + '/Definition');
@@ -5,7 +57,7 @@ const definition = global.DEFINITION
const path = require('path');
global.SHALL_BOT_STOP = false
-global.AT_BREAKPOINT = false // This is used only when running at the browser.
+
global.FULL_LOG = process.env.FULL_LOG
/* Default parameters can be changed by the execution configuration */
@@ -40,18 +92,21 @@ if (process.env.RUN_SEQUENCE !== undefined) {
isRunSequence = JSON.parse(process.env.RUN_SEQUENCE)
}
-if (isRunSequence) {
- process.on('message', message => {
- if (message === 'STOP') {
- runClonExecutor = false;
- console.log("[INFO] CloneExecutor -> Clone Executor Stopped.");
- }
- });
- sequenceExecution(sequenceStep)
-} else {
- readExecutionConfiguration()
+function startSequence () {
+ if (isRunSequence) {
+ process.on('message', message => {
+ if (message === 'STOP') {
+ runClonExecutor = false;
+ console.log("[INFO] CloneExecutor -> Clone Executor Stopped.");
+ }
+ });
+ sequenceExecution(sequenceStep)
+ } else {
+ readExecutionConfiguration()
+ }
}
+
async function sequenceExecution(currentStep) {
let execution = sequenceList[currentStep];
diff --git a/SensorBotProcessMainLoop.js b/SensorBotProcessMainLoop.js
index 37ac495e7..73c03c2ed 100644
--- a/SensorBotProcessMainLoop.js
+++ b/SensorBotProcessMainLoop.js
@@ -51,7 +51,9 @@
return;
}
USER_BOT_MODULE = {}
-
+ if (bot.process === "Hole-Fixing") {
+ //USER_BOT_MODULE.newUserBot = require(process.env.BOTS_PATH + '/aamasters/AAMasters/bots/AACharly-Sensor-Bot/Hole-Fixing/User.Bot').newUserBot
+ }
USER_BOT_MODULE.newUserBot = eval(text); // TODO This needs to be changed function
filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo;
diff --git a/TradingBotProcessMainLoop.js b/TradingBotProcessMainLoop.js
index 63ba92fc9..6db2d7c29 100644
--- a/TradingBotProcessMainLoop.js
+++ b/TradingBotProcessMainLoop.js
@@ -260,11 +260,6 @@
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> bot.processDatetime = " + bot.processDatetime.toISOString()); }
- if (global.AT_BREAKPOINT === true) {
-
- if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] run -> loop -> Plot Breakpoint Hit."); }
-
- }
/* High level log entry */
diff --git a/package-lock.json b/package-lock.json
index b2391e70d..400d53cef 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -202,6 +202,11 @@
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.0.0.tgz",
"integrity": "sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg=="
},
+ "easy-stack": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz",
+ "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g="
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -224,6 +229,11 @@
"resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
"integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
},
+ "event-pubsub": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz",
+ "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ=="
+ },
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -344,6 +354,19 @@
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
+ "js-message": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz",
+ "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU="
+ },
+ "js-queue": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz",
+ "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=",
+ "requires": {
+ "easy-stack": "1.0.0"
+ }
+ },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -435,6 +458,16 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
+ "node-ipc": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz",
+ "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==",
+ "requires": {
+ "event-pubsub": "4.3.0",
+ "js-message": "1.0.5",
+ "js-queue": "2.0.0"
+ }
+ },
"nonce": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/nonce/-/nonce-1.0.4.tgz",
diff --git a/package.json b/package.json
index c676322d5..d13992b3a 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"@superalgos/mqservice": "^0.0.17",
"axios": "^0.19.0",
"dotenv": "^8.0.0",
+ "node-ipc": "^9.1.1",
"winston": "^3.2.1"
}
}
diff --git a/sequence - all processes.json b/sequence - all processes.json
index 20650bd26..0ae6028e3 100644
--- a/sequence - all processes.json
+++ b/sequence - all processes.json
@@ -14,26 +14,26 @@
{
"devTeam": "AAMasters",
"bot": "AACharly",
- "mode": "noTime",
+ "mode": "oneMonth",
"resumeExecution": true,
"type": "Sensor",
"exchangeName": "Poloniex",
"process": "Hole-Fixing",
"startYear": 2019,
- "endYear": 2021,
- "month": 1
+ "endYear": 2019,
+ "month": 9
},
{
"devTeam": "AAMasters",
"bot": "AABruce",
- "mode": "noTime",
+ "mode": "oneMonth",
"resumeExecution": true,
"type": "Indicator",
"exchangeName": "Poloniex",
"process": "Single-Period-Daily",
"startYear": 2019,
"endYear": 2021,
- "month": 1
+ "month": 9
},
{
"devTeam": "AAMasters",
@@ -141,52 +141,5 @@
"process": "Multi-Period-Daily",
"beginDatetime": "2019-08-01T08:00:00.000Z",
"timePeriod": "05-min"
- },
- {
- "devTeam": "AAVikings",
- "bot": "AAGauss",
- "mode": "noTime",
- "resumeExecution": true,
- "type": "Indicator",
- "exchangeName": "Poloniex",
- "process": "Multi-Period-Daily",
- "startYear": 2019,
- "endYear": 2021,
- "month": 1
- },
- {
- "devTeam": "AAVikings",
- "bot": "AAGauss",
- "mode": "noTime",
- "resumeExecution": true,
- "type": "Indicator",
- "exchangeName": "Poloniex",
- "process": "Multi-Period-Market",
- "startYear": 2019,
- "endYear": 2021,
- "month": 1
- },
- {
- "devTeam": "vikingsalerts",
- "bot": "simulator-bot-vikingsalerts",
- "mode": "noTime",
- "resumeExecution": true,
- "type": "Indicator",
- "exchangeName": "Poloniex",
- "process": "Multi-Period-Daily",
- "beginDatetime": "2019-08-01T08:00:00.000Z",
- "timePeriod": "05-min"
- },
- {
- "devTeam": "vikingsalerts",
- "bot": "bot-vikingsalerts",
- "mode": "live",
- "resumeExecution": true,
- "type": "Trading",
- "exchangeName": "Poloniex",
- "process": "Trading-Process",
- "beginDatetime": "2019-08-01T08:00:00.000Z",
- "timePeriod": "05-min",
- "dataSet": "Multi-Period-Daily"
}
]
diff --git a/sequence.json b/sequence.json
index 10ca0ec47..0ae6028e3 100644
--- a/sequence.json
+++ b/sequence.json
@@ -14,26 +14,26 @@
{
"devTeam": "AAMasters",
"bot": "AACharly",
- "mode": "noTime",
+ "mode": "oneMonth",
"resumeExecution": true,
"type": "Sensor",
"exchangeName": "Poloniex",
"process": "Hole-Fixing",
"startYear": 2019,
- "endYear": 2021,
- "month": 1
+ "endYear": 2019,
+ "month": 9
},
{
"devTeam": "AAMasters",
"bot": "AABruce",
- "mode": "noTime",
+ "mode": "oneMonth",
"resumeExecution": true,
"type": "Indicator",
"exchangeName": "Poloniex",
"process": "Single-Period-Daily",
"startYear": 2019,
"endYear": 2021,
- "month": 1
+ "month": 9
},
{
"devTeam": "AAMasters",