Downloading Data Improved
No files matched your search
@@ -238,7 +238,10 @@ function newDesignerSpace () {
|
||||
'next-phase-event',
|
||||
'testing-environment',
|
||||
'production-environment',
|
||||
'task-manager'
|
||||
'task-manager',
|
||||
'session-based-data',
|
||||
'session-independent-data',
|
||||
'session-reference'
|
||||
]
|
||||
|
||||
for (let i = 0; i < iconsNames.length; i++) {
|
||||
|
||||
@@ -5398,7 +5398,7 @@
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"icon": "dataset-definition",
|
||||
"icon": "session-independent-data",
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Data Storage->"
|
||||
},
|
||||
@@ -5433,7 +5433,7 @@
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"icon": "output-dataset",
|
||||
"icon": "session-based-data",
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Data Storage->"
|
||||
},
|
||||
@@ -5472,7 +5472,7 @@
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"icon": "data-dependency",
|
||||
"icon": "session-reference",
|
||||
"alternativeIcons": "Use Reference Parent",
|
||||
"referenceAttachesTo": {
|
||||
"compatibleTypes": "->Backtesting Session->Paper Trading Session->Fordward Testing Session->Live Trading Session->"
|
||||
|
||||
@@ -56,11 +56,12 @@
|
||||
|
||||
let market = bot.market;
|
||||
|
||||
let lastTradeFileAvailable; // Datetime of the last file certified by the Hole Fixing process as without permanent holes.
|
||||
let lastTradeFileProcessed; // Datetime of the last file certified by the Hole Fixing process as without permanent holes.
|
||||
let firstTradeFile; // Datetime of the first trade file in the whole market history.
|
||||
let lastTradeFileSaved; // Datetime of the last verified file without holes.
|
||||
let lastCandleClose; // Value of the last candle close.
|
||||
let lastTradeFile; // Datetime pointing to the last Trade File sucessfuly processed and included in the last file.
|
||||
let beginingOfMarket
|
||||
|
||||
getContextVariables();
|
||||
|
||||
@@ -114,25 +115,39 @@
|
||||
|
||||
thisReport = statusDependencies.statusReports.get(reportKey).file;
|
||||
|
||||
if (thisReport.lastFile === undefined) {
|
||||
logger.write(MODULE_NAME, "[WARN] start -> getContextVariables -> Undefined Last File. -> reportKey = " + reportKey);
|
||||
logger.write(MODULE_NAME, "[HINT] start -> getContextVariables -> If the status report does not exist we will point the lasCandleFile to the last day of the previous month.");
|
||||
if (thisReport.lastFile === undefined) { // Means this is the first time ever this process runs.
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Process Running for the very first time. -> reportKey = " + reportKey);
|
||||
|
||||
lastTradeFileAvailable = new Date(processDate.valueOf() - ONE_DAY_IN_MILISECONDS);
|
||||
findLastCandleCloseValue();
|
||||
return;
|
||||
}
|
||||
lastCandleClose = 0;
|
||||
lastTradeFileProcessed = new Date(firstTradeFile.valueOf() - ONE_DAY_IN_MILISECONDS)
|
||||
beginingOfMarket = new Date(firstTradeFile.valueOf())
|
||||
|
||||
lastTradeFileAvailable = new Date(thisReport.lastTradeFile.year + "-" + thisReport.lastTradeFile.month + "-" + thisReport.lastTradeFile.days + " " + "00:00" + GMT_SECONDS);
|
||||
lastCandleClose = thisReport.candleClose;
|
||||
|
||||
if (thisReport.fileComplete === true) {
|
||||
buildCandlesAndVolumes();
|
||||
|
||||
} else {
|
||||
lastTradeFile = new Date(thisReport.lastTradeFile.year + "-" + thisReport.lastTradeFile.month + "-" + thisReport.lastTradeFile.days + " " + thisReport.lastTradeFile.hours + ":" + thisReport.lastTradeFile.minutes + GMT_SECONDS);
|
||||
findPreviousContent();
|
||||
}
|
||||
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Process Running not for the very first time. -> reportKey = " + reportKey);
|
||||
|
||||
lastTradeFileProcessed = new Date(thisReport.lastTradeFile.year + "-" + thisReport.lastTradeFile.month + "-" + thisReport.lastTradeFile.days + " " + "00:00" + GMT_SECONDS);
|
||||
lastCandleClose = thisReport.candleClose;
|
||||
beginingOfMarket = new Date(thisReport.beginingOfMarket.year + "-" + thisReport.beginingOfMarket.month + "-" + thisReport.beginingOfMarket.days + " " + thisReport.beginingOfMarket.hours + ":" + thisReport.beginingOfMarket.minutes + GMT_SECONDS);
|
||||
|
||||
if (beginingOfMarket.valueOf() !== firstTradeFile.valueOf()) { // Reset Mechanism for Begining of the Market
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(firstTradeFile.valueOf())
|
||||
lastTradeFileProcessed = new Date(firstTradeFile.valueOf() - ONE_DAY_IN_MILISECONDS)
|
||||
lastCandleClose = 0
|
||||
buildCandlesAndVolumes()
|
||||
return
|
||||
}
|
||||
|
||||
if (thisReport.fileComplete === true) {
|
||||
buildCandlesAndVolumes();
|
||||
} else {
|
||||
lastTradeFile = new Date(thisReport.lastTradeFile.year + "-" + thisReport.lastTradeFile.month + "-" + thisReport.lastTradeFile.days + " " + thisReport.lastTradeFile.hours + ":" + thisReport.lastTradeFile.minutes + GMT_SECONDS);
|
||||
findPreviousContent();
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> err = " + err.stack);
|
||||
if (err.message === "Cannot read property 'file' of undefined") {
|
||||
@@ -161,7 +176,7 @@
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> getCandles -> Entering function."); }
|
||||
|
||||
let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json';
|
||||
let dateForPath = lastTradeFileAvailable.getUTCFullYear() + '/' + utilities.pad(lastTradeFileAvailable.getUTCMonth() + 1, 2) + '/' + utilities.pad(lastTradeFileAvailable.getUTCDate(), 2);
|
||||
let dateForPath = lastTradeFileProcessed.getUTCFullYear() + '/' + utilities.pad(lastTradeFileProcessed.getUTCMonth() + 1, 2) + '/' + utilities.pad(lastTradeFileProcessed.getUTCDate(), 2);
|
||||
let filePath = bot.filePathRoot + "/Output/" + CANDLES_FOLDER_NAME + '/' + CANDLES_ONE_MIN + '/' + dateForPath;
|
||||
filePath += '/' + fileName
|
||||
|
||||
@@ -212,7 +227,7 @@
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> getVolumes -> Entering function."); }
|
||||
|
||||
let fileName = '' + market.baseAsset + '_' + market.quotedAsset + '.json';
|
||||
let dateForPath = lastTradeFileAvailable.getUTCFullYear() + '/' + utilities.pad(lastTradeFileAvailable.getUTCMonth() + 1, 2) + '/' + utilities.pad(lastTradeFileAvailable.getUTCDate(), 2);
|
||||
let dateForPath = lastTradeFileProcessed.getUTCFullYear() + '/' + utilities.pad(lastTradeFileProcessed.getUTCMonth() + 1, 2) + '/' + utilities.pad(lastTradeFileProcessed.getUTCDate(), 2);
|
||||
let filePath = bot.filePathRoot + "/Output/" + VOLUMES_FOLDER_NAME + '/' + VOLUMES_ONE_MIN + '/' + dateForPath;
|
||||
filePath += '/' + fileName
|
||||
|
||||
@@ -241,7 +256,7 @@
|
||||
|
||||
volumesFile = JSON.parse(text);
|
||||
previousVolumes = volumesFile;
|
||||
lastTradeFileAvailable = new Date(lastTradeFileAvailable.valueOf() - ONE_DAY_IN_MILISECONDS); // We know that after the next call a new day will be added.
|
||||
lastTradeFileProcessed = new Date(lastTradeFileProcessed.valueOf() - ONE_DAY_IN_MILISECONDS); // We know that after the next call a new day will be added.
|
||||
buildCandlesAndVolumes(previousCandles, previousVolumes);
|
||||
|
||||
} catch (err) {
|
||||
@@ -266,131 +281,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
function findLastCandleCloseValue() {
|
||||
|
||||
try {
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> Entering function."); }
|
||||
|
||||
/*
|
||||
We will search and find for the last trade before the begining of the current candle and that will give us the last close value.
|
||||
Before going backwards, we need to be sure we are not at the begining of the market.
|
||||
*/
|
||||
|
||||
if ((Number((new Date()).getUTCFullYear()) === firstTradeFile.getUTCFullYear() && parseInt(((new Date()).getUTCMonth() + 1)) === firstTradeFile.getUTCMonth() + 1)) {
|
||||
|
||||
/*
|
||||
We are at the begining of the market, so we will set everyting to build the first candle.
|
||||
*/
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> Begining of the market detected."); }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> Entering market = " + JSON.stringify(market)); }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> lastCandleClose = " + lastCandleClose); }
|
||||
|
||||
lastTradeFileAvailable = new Date(firstTradeFile.getUTCFullYear() + "-" + (firstTradeFile.getUTCMonth() + 1) + "-" + firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
lastTradeFileAvailable = new Date(lastTradeFileAvailable.valueOf() - ONE_DAY_IN_MILISECONDS);
|
||||
|
||||
lastCandleClose = 0;
|
||||
buildCandlesAndVolumes();
|
||||
|
||||
} else {
|
||||
|
||||
/*
|
||||
We are not at the begining of the market, so we need scan backwards the trade files until we find a non empty one and get the last trade.
|
||||
*/
|
||||
|
||||
let date = new Date(processDate.valueOf());
|
||||
|
||||
loopStart();
|
||||
|
||||
function loopStart() {
|
||||
|
||||
try {
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> loopStart -> Entering function."); }
|
||||
|
||||
date = new Date(date.valueOf() - 60 * 1000);
|
||||
|
||||
let dateForPath = date.getUTCFullYear() + '/' + utilities.pad(date.getUTCMonth() + 1, 2) + '/' + utilities.pad(date.getUTCDate(), 2) + '/' + utilities.pad(date.getUTCHours(), 2) + '/' + utilities.pad(date.getUTCMinutes(), 2);
|
||||
let fileName = market.baseAsset + '_' + market.quotedAsset + ".json"
|
||||
let filePathRoot = bot.dataMine + "/" + "AACharly" + "/" + bot.exchange;
|
||||
let filePath = filePathRoot + "/Output/" + TRADES_FOLDER_NAME + '/' + dateForPath;
|
||||
filePath += '/' + fileName
|
||||
|
||||
fileStorage.getTextFile(filePath, onFileReceived);
|
||||
|
||||
logger.write(MODULE_NAME, "[INFO] start -> findPreviousContent -> loopStart -> reading file at dateForPath = " + dateForPath);
|
||||
|
||||
function onFileReceived(err, text) {
|
||||
|
||||
let tradesFile;
|
||||
|
||||
try {
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> Entering function."); }
|
||||
|
||||
/*
|
||||
There is a situation at the end of each month where the process might have been started at the new month before dependent processes have
|
||||
created the expected file. For those cases we will retry instead of just aborting the process.
|
||||
*/
|
||||
if (err.result === global.CUSTOM_FAIL_RESPONSE.result && err.message === 'File does not exist.') {
|
||||
logger.write(MODULE_NAME, "[WARN] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> err received = " + err.stack);
|
||||
logger.write(MODULE_NAME, "[WARN] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> text received = " + text);
|
||||
callBackFunction(global.DEFAULT_RETRY_RESPONSE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (err.result !== global.DEFAULT_OK_RESPONSE.result) {
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> err received = " + err.stack);
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> text received = " + text);
|
||||
callBackFunction(err);
|
||||
return;
|
||||
}
|
||||
|
||||
if (LOG_FILE_CONTENT === true) {
|
||||
logger.write(MODULE_NAME, "[INFO] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> text = " + text);
|
||||
}
|
||||
|
||||
tradesFile = JSON.parse(text);
|
||||
|
||||
if (tradesFile.length > 0) {
|
||||
|
||||
lastCandleClose = tradesFile[tradesFile.length - 1][2]; // Position 2 is the rate at which the trade was executed.
|
||||
|
||||
logger.write(MODULE_NAME, "[INFO] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> Trades found at " + filePath + " for market " + market.baseAsset + '_' + market.quotedAsset + ".");
|
||||
logger.write(MODULE_NAME, "[INFO] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> lastCandleClose = " + lastCandleClose);
|
||||
|
||||
buildCandlesAndVolumes();
|
||||
|
||||
} else {
|
||||
|
||||
logger.write(MODULE_NAME, "[INFO] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> NO Trades found at " + filePath + " for market " + market.baseAsset + '_' + market.quotedAsset + ".");
|
||||
|
||||
loopStart();
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> err = " + err.stack);
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> filePath = " + filePath);
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> text = " + text);
|
||||
logger.write(MODULE_NAME, "[HINT] start -> findLastCandleCloseValue -> loopStart -> onFileReceived -> Empty or corrupt volume file found.");
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> loopStart -> err = " + err.stack);
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> findLastCandleCloseValue -> err = " + err.stack);
|
||||
callBackFunction(global.DEFAULT_FAIL_RESPONSE);
|
||||
}
|
||||
}
|
||||
|
||||
function buildCandlesAndVolumes(previousCandles, previousVolumes) {
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> buildCandlesAndVolumes -> Entering function."); }
|
||||
@@ -412,9 +302,9 @@
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> buildCandlesAndVolumes -> nextFile -> Entering function."); }
|
||||
|
||||
lastTradeFileAvailable = new Date(lastTradeFileAvailable.valueOf() + ONE_DAY_IN_MILISECONDS);
|
||||
lastTradeFileProcessed = new Date(lastTradeFileProcessed.valueOf() + ONE_DAY_IN_MILISECONDS);
|
||||
|
||||
let date = new Date(lastTradeFileAvailable.valueOf() - 60 * 1000);
|
||||
let date = new Date(lastTradeFileProcessed.valueOf() - 60 * 1000);
|
||||
|
||||
if (date.valueOf() < firstTradeFile.valueOf()) { // At the special case where we are at the begining of the market, this might be true.
|
||||
date = new Date(firstTradeFile.valueOf() - 60 * 1000);
|
||||
@@ -481,9 +371,9 @@
|
||||
|
||||
/* Check if we are outside the current Day / File */
|
||||
|
||||
if (date.getUTCDate() !== lastTradeFileAvailable.getUTCDate()) {
|
||||
if (date.getUTCDate() !== lastTradeFileProcessed.getUTCDate()) {
|
||||
|
||||
writeFiles(lastTradeFileAvailable, candles, volumes, true, onFilesWritten);
|
||||
writeFiles(lastTradeFileProcessed, candles, volumes, true, onFilesWritten);
|
||||
|
||||
return;
|
||||
|
||||
@@ -497,7 +387,7 @@
|
||||
|
||||
if (date.valueOf() > lastTradeFileSaved.valueOf()) {
|
||||
|
||||
writeFiles(lastTradeFileAvailable, candles, volumes, false, onFilesWritten);
|
||||
writeFiles(lastTradeFileProcessed, candles, volumes, false, onFilesWritten);
|
||||
return;
|
||||
|
||||
function onFilesWritten() {
|
||||
@@ -881,6 +771,13 @@
|
||||
hours: lastTradeFile.getUTCHours(),
|
||||
minutes: lastTradeFile.getUTCMinutes()
|
||||
},
|
||||
beginingOfMarket: {
|
||||
year: beginingOfMarket.getUTCFullYear(),
|
||||
month: (beginingOfMarket.getUTCMonth() + 1),
|
||||
days: beginingOfMarket.getUTCDate(),
|
||||
hours: beginingOfMarket.getUTCHours(),
|
||||
minutes: beginingOfMarket.getUTCMinutes()
|
||||
},
|
||||
candleClose: candleClose,
|
||||
fileComplete: isFileComplete
|
||||
};
|
||||
|
||||
@@ -33,6 +33,7 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, fileSt
|
||||
let lastId
|
||||
let firstId
|
||||
let exchange
|
||||
let uiStartDate = new Date(bot.uiStartDate)
|
||||
|
||||
const limit = 1000
|
||||
|
||||
@@ -110,8 +111,7 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, fileSt
|
||||
async function begin() {
|
||||
|
||||
getContextVariables()
|
||||
defineSince()
|
||||
|
||||
|
||||
await getFirstId()
|
||||
await getTrades()
|
||||
if (global.STOP_TASK_GRACEFULLY === true) {
|
||||
@@ -144,6 +144,25 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, fileSt
|
||||
} else { // This means this is the first time this process run.
|
||||
beginingOfMarket = new Date()
|
||||
}
|
||||
|
||||
defineSince()
|
||||
function defineSince() {
|
||||
if (thisReport.file.uiStartDate === undefined) {
|
||||
thisReport.file.uiStartDate = uiStartDate
|
||||
} else {
|
||||
thisReport.file.uiStartDate = new Date(thisReport.file.uiStartDate)
|
||||
}
|
||||
|
||||
if (uiStartDate.valueOf() !== thisReport.file.uiStartDate.valueOf()) {
|
||||
since = uiStartDate.valueOf()
|
||||
initialProcessTimestamp = since
|
||||
beginingOfMarket = new Date(uiStartDate.valueOf())
|
||||
} else {
|
||||
since = lastFileSaved.valueOf()
|
||||
initialProcessTimestamp = lastFileSaved.valueOf()
|
||||
}
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
logger.write(MODULE_NAME, "[ERROR] start -> getContextVariables -> err = " + err.stack);
|
||||
if (err.message === "Cannot read property 'file' of undefined") {
|
||||
@@ -154,20 +173,6 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, fileSt
|
||||
}
|
||||
}
|
||||
|
||||
function defineSince() {
|
||||
|
||||
let uiStartDate = new Date(bot.uiStartDate)
|
||||
|
||||
if (uiStartDate.valueOf() < beginingOfMarket.valueOf()) {
|
||||
since = (new Date(bot.uiStartDate)).valueOf()
|
||||
initialProcessTimestamp = since
|
||||
beginingOfMarket = new Date(uiStartDate.valueOf())
|
||||
} else {
|
||||
since = lastFileSaved.valueOf()
|
||||
initialProcessTimestamp = lastFileSaved.valueOf()
|
||||
}
|
||||
}
|
||||
|
||||
async function getFirstId() {
|
||||
try {
|
||||
/* We need the first id only when we are going to fetch trades based on id and it is the first time the process runs*/
|
||||
@@ -367,6 +372,16 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, fileSt
|
||||
}
|
||||
function createMissingEmptyFiles(begin, end) {
|
||||
|
||||
/*
|
||||
If this range is too wide, we will consider this means that the begin is before the begining of this market at this exchange.
|
||||
In that case we will change the begin and the beginingOfMarket
|
||||
*/
|
||||
|
||||
if ((end - begin) / 60 / 24 > 7) {
|
||||
begin = end
|
||||
beginingOfMarket = new Date(end * ONE_MINUTE)
|
||||
}
|
||||
|
||||
for (let j = begin + 1; j < end; j++) {
|
||||
let fileName = bot.market.baseAsset + '_' + bot.market.quotedAsset + '.json'
|
||||
filesToCreate++
|
||||
@@ -436,7 +451,8 @@ exports.newUserBot = function newUserBot(bot, logger, COMMONS, UTILITIES, fileSt
|
||||
days: beginingOfMarket.getUTCDate(),
|
||||
hours: beginingOfMarket.getUTCHours(),
|
||||
minutes: beginingOfMarket.getUTCMinutes()
|
||||
}
|
||||
},
|
||||
uiStartDate: uiStartDate.toUTCString()
|
||||
};
|
||||
|
||||
if (fetchType === "by Id") {
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
let utilities = UTILITIES.newCloudUtilities(bot, logger);
|
||||
|
||||
let statusDependencies;
|
||||
let beginingOfMarket
|
||||
|
||||
return thisObject;
|
||||
|
||||
@@ -178,6 +179,19 @@
|
||||
|
||||
if (thisReport.lastFile !== undefined) {
|
||||
|
||||
beginingOfMarket = new Date(thisReport.beginingOfMarket);
|
||||
|
||||
if (beginingOfMarket.valueOf() !== contextVariables.firstTradeFile.valueOf()) { // Reset Mechanism for Begining of the Market
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastBandFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastBandFile = new Date(contextVariables.lastBandFile.valueOf() + ONE_DAY_IN_MILISECONDS);
|
||||
|
||||
buildBands();
|
||||
return;
|
||||
}
|
||||
|
||||
contextVariables.lastBandFile = new Date(thisReport.lastFile);
|
||||
|
||||
/*
|
||||
@@ -205,6 +219,8 @@
|
||||
contextVariables.lastBandFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastBandFile = new Date(contextVariables.lastBandFile.valueOf() + ONE_DAY_IN_MILISECONDS);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> thisReport.lastFile === undefined"); }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> contextVariables.lastBandFile = " + contextVariables.lastBandFile); }
|
||||
|
||||
@@ -852,6 +868,7 @@
|
||||
|
||||
thisReport.file.lastExecution = bot.processDatetime;
|
||||
thisReport.file.lastFile = lastFileDate;
|
||||
thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString()
|
||||
thisReport.save(callBack);
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
let utilities = UTILITIES.newCloudUtilities(bot, logger);
|
||||
|
||||
let statusDependencies;
|
||||
let beginingOfMarket
|
||||
|
||||
return thisObject;
|
||||
|
||||
@@ -176,6 +177,20 @@ Read the candles and volumes from Bruce and produce a file for each day and for
|
||||
thisReport = statusDependencies.statusReports.get(reportKey).file;
|
||||
|
||||
if (thisReport.lastFile !== undefined) {
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Process Running not for the very first time. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(thisReport.beginingOfMarket);
|
||||
|
||||
if (beginingOfMarket.valueOf() !== contextVariables.firstTradeFile.valueOf()) { // Reset Mechanism for Begining of the Market
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.lastCandleFile.valueOf() - ONE_DAY_IN_MILISECONDS); // Go back one day to start well.
|
||||
|
||||
buildCandles();
|
||||
return;
|
||||
}
|
||||
|
||||
contextVariables.lastCandleFile = new Date(thisReport.lastFile);
|
||||
|
||||
@@ -190,7 +205,9 @@ Read the candles and volumes from Bruce and produce a file for each day and for
|
||||
return;
|
||||
|
||||
} else {
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Process Running for the very first time. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.lastCandleFile.valueOf() - ONE_DAY_IN_MILISECONDS); // Go back one day to start well.
|
||||
|
||||
@@ -756,6 +773,7 @@ Read the candles and volumes from Bruce and produce a file for each day and for
|
||||
|
||||
thisReport.file.lastExecution = bot.processDatetime;
|
||||
thisReport.file.lastFile = lastFileDate;
|
||||
thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString()
|
||||
thisReport.save(callBack);
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
let utilities = UTILITIES.newCloudUtilities(bot, logger);
|
||||
|
||||
let statusDependencies;
|
||||
let beginingOfMarket
|
||||
|
||||
return thisObject;
|
||||
|
||||
@@ -185,6 +186,20 @@
|
||||
thisReport = statusDependencies.statusReports.get(reportKey).file;
|
||||
|
||||
if (thisReport.lastFile !== undefined) {
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Process Running not for the very first time. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(thisReport.beginingOfMarket);
|
||||
|
||||
if (beginingOfMarket.valueOf() !== contextVariables.firstTradeFile.valueOf()) { // Reset Mechanism for Begining of the Market
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.lastCandleFile.valueOf() - ONE_DAY_IN_MILISECONDS); // Go back one day to start well.
|
||||
|
||||
buildCandles();
|
||||
return;
|
||||
}
|
||||
|
||||
contextVariables.lastCandleFile = new Date(thisReport.lastFile);
|
||||
|
||||
@@ -199,7 +214,9 @@
|
||||
return;
|
||||
|
||||
} else {
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Process Running for the very first time. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.lastCandleFile.valueOf() - ONE_DAY_IN_MILISECONDS); // Go back one day to start well.
|
||||
|
||||
@@ -874,6 +891,7 @@
|
||||
|
||||
thisReport.file.lastExecution = bot.processDatetime;
|
||||
thisReport.file.lastFile = lastFileDate;
|
||||
thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString()
|
||||
thisReport.save(callBack);
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
let utilities = UTILITIES.newCloudUtilities(bot, logger);
|
||||
|
||||
let statusDependencies;
|
||||
let beginingOfMarket
|
||||
|
||||
return thisObject;
|
||||
|
||||
@@ -185,6 +186,19 @@
|
||||
|
||||
if (thisReport.lastFile !== undefined) {
|
||||
|
||||
beginingOfMarket = new Date(thisReport.beginingOfMarket);
|
||||
|
||||
if (beginingOfMarket.valueOf() !== contextVariables.firstTradeFile.valueOf()) { // Reset Mechanism for Begining of the Market
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.lastCandleFile.valueOf() + ONE_DAY_IN_MILISECONDS)
|
||||
|
||||
buildStairs();
|
||||
return;
|
||||
}
|
||||
|
||||
contextVariables.lastCandleFile = new Date(thisReport.lastFile);
|
||||
|
||||
/*
|
||||
@@ -213,6 +227,8 @@
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
contextVariables.lastCandleFile = new Date(contextVariables.lastCandleFile.valueOf() + ONE_DAY_IN_MILISECONDS)
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.firstTradeFile.getUTCFullYear() + "-" + (contextVariables.firstTradeFile.getUTCMonth() + 1) + "-" + contextVariables.firstTradeFile.getUTCDate() + " " + "00:00" + GMT_SECONDS);
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> thisReport.lastFile === undefined"); }
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> contextVariables.lastCandleFile = " + contextVariables.lastCandleFile); }
|
||||
|
||||
@@ -1606,6 +1622,7 @@
|
||||
|
||||
thisReport.file.lastExecution = bot.processDatetime;
|
||||
thisReport.file.lastFile = lastFileDate;
|
||||
thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString()
|
||||
thisReport.save(callBack);
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"type":"Workspace","name":"My Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","singleMarketData":[{"type":"Single Market Data","name":"Poloniex BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"55e735a5-60c9-4e2d-a582-a6c6eddf3502","savedPayload":{"position":{"x":20540.40147952935,"y":29594.842461140834},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candles","id":"36ae2d5d-6734-4526-b2f8-31c89a0c4fc1"}}},{"type":"Data Product","name":"Volumes","id":"ffaf5a8e-12d6-4040-922d-57845eb3377c","savedPayload":{"position":{"x":20443.46330696417,"y":29528.218700975147},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"b2d5ba69-67ac-490f-9e74-28239b35a92e"}}},{"type":"Data Product","name":"Candle-Stairs","id":"e1c46e1f-09d1-46a2-b738-e761b4e04cd9","savedPayload":{"position":{"x":20359.566937601234,"y":29445.773968416845},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candle-Stairs","id":"642474e9-da61-4168-97dc-7f7869bebc02"}}},{"type":"Data Product","name":"Volume-Stairs","id":"eefaf182-ffe4-457e-a7fa-f43dfabdc086","savedPayload":{"position":{"x":20291.261520170025,"y":29350.013304945667},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volume-Stairs","id":"846e9572-c4d6-4c7e-942e-c82402c5ecea"}}},{"type":"Data Product","name":"Bollinger Bands","id":"3576cfd0-1774-4094-b8a0-66e182fc4c41","savedPayload":{"position":{"x":20240.62248021498,"y":29243.84634986395},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4dfde44c-0bbf-4204-91de-ce99ecba4cf2","savedPayload":{"position":{"x":20209.18845934055,"y":29130.49893237878},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"6986bcb1-119c-48c9-a00b-d046e9e07951","savedPayload":{"position":{"x":20197.914564364608,"y":29013.415056413884},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"85098ab8-a125-49f1-b24d-416c2090c7a0","savedPayload":{"position":{"x":20207.143346881145,"y":28896.152256293153},"targetPosition":{"x":20872.688924896975,"y":29007.526389780924},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}}],"id":"49a747b4-2eb7-41d6-b0e2-493f43ceed44","savedPayload":{"position":{"x":20872.688924896975,"y":29007.526389780924},"targetPosition":{"x":21481.75352428374,"y":28717.01747804083},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"d4098b73-7e25-434e-8fd9-342393cbb400"}}},{"type":"Single Market Data","name":"Kraken ETH/BTC","dataProducts":[{"type":"Data Product","name":"Candles","id":"fce50098-d674-4006-94ad-cce46f3d59a4","savedPayload":{"position":{"x":20166.10527009364,"y":28960.858468938266},"targetPosition":{"x":20807.878259455774,"y":28752.333784184237},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":truLine truncated
|
||||
{"type":"Workspace","name":"My Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","singleMarketData":[{"type":"Single Market Data","name":"Poloniex BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"55e735a5-60c9-4e2d-a582-a6c6eddf3502","savedPayload":{"position":{"x":20539.984201295887,"y":29594.698317884096},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candles","id":"36ae2d5d-6734-4526-b2f8-31c89a0c4fc1"}}},{"type":"Data Product","name":"Volumes","id":"ffaf5a8e-12d6-4040-922d-57845eb3377c","savedPayload":{"position":{"x":20443.046028730707,"y":29528.07455771841},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"b2d5ba69-67ac-490f-9e74-28239b35a92e"}}},{"type":"Data Product","name":"Candle-Stairs","id":"e1c46e1f-09d1-46a2-b738-e761b4e04cd9","savedPayload":{"position":{"x":20359.14965936777,"y":29445.629825160107},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Candle-Stairs","id":"642474e9-da61-4168-97dc-7f7869bebc02"}}},{"type":"Data Product","name":"Volume-Stairs","id":"eefaf182-ffe4-457e-a7fa-f43dfabdc086","savedPayload":{"position":{"x":20290.84424193656,"y":29349.86916168893},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Volume-Stairs","id":"846e9572-c4d6-4c7e-942e-c82402c5ecea"}}},{"type":"Data Product","name":"Bollinger Bands","id":"3576cfd0-1774-4094-b8a0-66e182fc4c41","savedPayload":{"position":{"x":20240.205201981516,"y":29243.702206607213},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4dfde44c-0bbf-4204-91de-ce99ecba4cf2","savedPayload":{"position":{"x":20208.771181107084,"y":29130.354789122044},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"6986bcb1-119c-48c9-a00b-d046e9e07951","savedPayload":{"position":{"x":20197.497286131143,"y":29013.270913157146},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"85098ab8-a125-49f1-b24d-416c2090c7a0","savedPayload":{"position":{"x":20206.72606864768,"y":28896.008113036416},"targetPosition":{"x":20872.27164666351,"y":29007.382246524186},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":3,"distanceToParent":3},"uiObject":{},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}}],"id":"49a747b4-2eb7-41d6-b0e2-493f43ceed44","savedPayload":{"position":{"x":20872.27164666351,"y":29007.382246524186},"targetPosition":{"x":21481.336246050276,"y":28716.873334784093},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":4},"uiObject":{},"referenceParent":{"type":"Market","name":"BTC/USDT","id":"d4098b73-7e25-434e-8fd9-342393cbb400"}}},{"type":"Single Market Data","name":"Kraken ETH/BTC","dataProducts":[{"type":"Data Product","name":"Candles","id":"fce50098-d674-4006-94ad-cce46f3d59a4","savedPayload":{"position":{"x":20165.687991860177,"y":28960.71432568153},"targetPosition":{"x":20807.46098122231,"y":28752.1896409275},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleTLine truncated
|
||||
@@ -26,6 +26,7 @@
|
||||
let bootstrappingTheProcess = false
|
||||
|
||||
let processConfig;
|
||||
let beginingOfMarket
|
||||
|
||||
return thisObject;
|
||||
|
||||
@@ -223,6 +224,16 @@
|
||||
|
||||
if (thisReport.lastFile !== undefined) {
|
||||
|
||||
beginingOfMarket = new Date(thisReport.beginingOfMarket);
|
||||
|
||||
if (beginingOfMarket.valueOf() !== contextVariables.dateBeginOfMarket.valueOf()) { // Reset Mechanism for Begining of the Market
|
||||
logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Reset Mechanism for Begining of the Market Activated. -> reportKey = " + reportKey);
|
||||
|
||||
beginingOfMarket = new Date(contextVariables.dateBeginOfMarket.valueOf());
|
||||
startFromBegining();
|
||||
return;
|
||||
}
|
||||
|
||||
if (bot.hasTheBotJustStarted === true && processConfig.framework.startDate.resumeExecution === false) {
|
||||
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining because bot has just started and resume execution was true."); }
|
||||
@@ -242,6 +253,7 @@
|
||||
In the case when there is no status report, we assume like the last processed file is the one on the date of Begining of Market.
|
||||
*/
|
||||
if (FULL_LOG === true) { logger.write(MODULE_NAME, "[INFO] start -> getContextVariables -> Starting from the begining of the market because own status report not found or lastFile was undefined."); }
|
||||
beginingOfMarket = new Date(contextVariables.dateBeginOfMarket.valueOf());
|
||||
startFromBegining();
|
||||
return;
|
||||
}
|
||||
@@ -765,6 +777,7 @@
|
||||
thisReport.file.lastExecution = bot.currentDaytime;
|
||||
thisReport.file.lastFile = lastFileDate;
|
||||
thisReport.file.interExecutionMemoryArray = interExecutionMemoryArray;
|
||||
thisReport.file.beginingOfMarket = beginingOfMarket.toUTCString()
|
||||
thisReport.save(callBack);
|
||||
|
||||
bot.hasTheBotJustStarted = false;
|
||||
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 15 KiB |
@@ -2,6 +2,12 @@ network: "The network hierarchy contains definitions regarding the physical loca
|
||||
|
||||
network_node: "A network node represents a machine in the network on which processes run or data is stored."
|
||||
|
||||
data_mining: "Data mining is the activity of processing data. In the context of the network hierarchy, the node groups the task managers handling sensors and indicators."
|
||||
|
||||
testing_environment: "The testing environment node organizes trading sessions involving testing of trading systems."
|
||||
|
||||
production_environment: "The production environment node organizes trading sessions involving live trading."
|
||||
|
||||
task_manager: "A task manager is a device used to organize and control any number of tasks."
|
||||
|
||||
task: "A task is a device used to control bot instances."
|
||||
|
||||
@@ -2,6 +2,12 @@ network: "The network hierarchy contains definitions regarding the physical loca
|
||||
|
||||
network_node: "A network node represents a machine in the network on which processes run or data is stored."
|
||||
|
||||
data_mining: "Data mining is the activity of processing data. In the context of the network hierarchy, the node groups the task managers handling sensors and indicators."
|
||||
|
||||
testing_environment: "The testing environment node organizes trading sessions involving testing of trading systems."
|
||||
|
||||
production_environment: "The production environment node organizes trading sessions involving live trading."
|
||||
|
||||
task_manager: "A task manager is a device used to organize and control any number of tasks."
|
||||
|
||||
task: "A task is a device used to control bot instances."
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
{% assign title = "Backtesting Session" %}
|
||||
{% assign definition = site.data.network.backtesting_session %}
|
||||
{% assign preposition = "a" %}
|
||||
{% assign plural = "s" %}
|
||||
|
||||
<!-- TITLE AND DEFINITION ends -->
|
||||
<!--------------------------------------------- TITLE AND DEFINITION ends -->
|
||||
|
||||
{% if include.heading != "" %}
|
||||
{{include.heading}} {{title}}
|
||||
@@ -12,19 +13,19 @@
|
||||
|
||||
{% if include.icon != "no" %}
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
<table class="definitionTable"><tr><td>
|
||||
{% endif %}
|
||||
|
||||
<img src='images/icons/{{include.icon}}{{ title | downcase | replace: " ", "-" }}.png' />
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td><td>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.definition != "regular" %}
|
||||
{% if include.definition == "bold" %}
|
||||
|
||||
<strong>{{ definition }}</strong>
|
||||
|
||||
@@ -34,25 +35,35 @@
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.table == "y" and include.icon != "no" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td></tr></table>
|
||||
{% endif %}
|
||||
|
||||
{% if include.content != "n" %}
|
||||
{% if include.more == "yes" and include.content == "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
<!-- CONTENT starts -->
|
||||
{% if include.content != "no" %}
|
||||
|
||||
<!--------------------------------------------- CONTENT starts -->
|
||||
|
||||
A backtesting session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.
|
||||
|
||||
<!-- CONTENT ends -->
|
||||
<!--------------------------------------------- CONTENT ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" and include.content != "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
{% if include.adding != "" %}
|
||||
|
||||
{{include.adding}} Adding {{preposition}} {{title}}
|
||||
|
||||
<!-- ADDING starts -->
|
||||
<!--------------------------------------------- ADDING starts -->
|
||||
|
||||
To add a backtesting session, select *Add Backtesting Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.
|
||||
|
||||
@@ -94,6 +105,10 @@ After a few seconds, a literal indication of the progress of the calculations ap
|
||||
|
||||
To stop a backtesting session, select *Stop* on the menu.
|
||||
|
||||
<!-- STARTING ends -->
|
||||
<!--------------------------------------------- STARTING ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" %}
|
||||
</details>
|
||||
{% endif %}
|
||||
@@ -3,8 +3,9 @@
|
||||
{% assign title = "Forward Testing Session" %}
|
||||
{% assign definition = site.data.network.forward_testing_session %}
|
||||
{% assign preposition = "a" %}
|
||||
{% assign plural = "s" %}
|
||||
|
||||
<!-- TITLE AND DEFINITION ends -->
|
||||
<!--------------------------------------------- TITLE AND DEFINITION ends -->
|
||||
|
||||
{% if include.heading != "" %}
|
||||
{{include.heading}} {{title}}
|
||||
@@ -12,19 +13,19 @@
|
||||
|
||||
{% if include.icon != "no" %}
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
<table class="definitionTable"><tr><td>
|
||||
{% endif %}
|
||||
|
||||
<img src='images/icons/{{include.icon}}{{ title | downcase | replace: " ", "-" }}.png' />
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td><td>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.definition != "regular" %}
|
||||
{% if include.definition == "bold" %}
|
||||
|
||||
<strong>{{ definition }}</strong>
|
||||
|
||||
@@ -34,25 +35,35 @@
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.table == "y" and include.icon != "no" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td></tr></table>
|
||||
{% endif %}
|
||||
|
||||
{% if include.content != "n" %}
|
||||
{% if include.more == "yes" and include.content == "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
<!-- CONTENT starts -->
|
||||
{% if include.content != "no" %}
|
||||
|
||||
<!--------------------------------------------- CONTENT starts -->
|
||||
|
||||
A forward testing session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.
|
||||
|
||||
<!-- CONTENT ends -->
|
||||
<!--------------------------------------------- CONTENT ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" and include.content != "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
{% if include.adding != "" %}
|
||||
|
||||
{{include.adding}} Adding {{preposition}} {{title}}
|
||||
|
||||
<!-- ADDING starts -->
|
||||
<!--------------------------------------------- ADDING starts -->
|
||||
|
||||
To add a forward testing session, select *Add Forward Testing Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.
|
||||
|
||||
@@ -103,6 +114,10 @@ Before you start a forward testing session, the corresponding task needs to be r
|
||||
|
||||
To stop a backtesting session, select *Stop* on the menu.
|
||||
|
||||
<!-- STARTING ends -->
|
||||
<!--------------------------------------------- STARTING ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" %}
|
||||
</details>
|
||||
{% endif %}
|
||||
@@ -3,8 +3,9 @@
|
||||
{% assign title = "Live Trading Session" %}
|
||||
{% assign definition = site.data.network.live_trading_session %}
|
||||
{% assign preposition = "a" %}
|
||||
{% assign plural = "s" %}
|
||||
|
||||
<!-- TITLE AND DEFINITION ends -->
|
||||
<!--------------------------------------------- TITLE AND DEFINITION ends -->
|
||||
|
||||
{% if include.heading != "" %}
|
||||
{{include.heading}} {{title}}
|
||||
@@ -12,19 +13,19 @@
|
||||
|
||||
{% if include.icon != "no" %}
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
<table class="definitionTable"><tr><td>
|
||||
{% endif %}
|
||||
|
||||
<img src='images/icons/{{include.icon}}{{ title | downcase | replace: " ", "-" }}.png' />
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td><td>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.definition != "regular" %}
|
||||
{% if include.definition == "bold" %}
|
||||
|
||||
<strong>{{ definition }}</strong>
|
||||
|
||||
@@ -34,25 +35,35 @@
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.table == "y" and include.icon != "no" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td></tr></table>
|
||||
{% endif %}
|
||||
|
||||
{% if include.content != "n" %}
|
||||
{% if include.more == "yes" and include.content == "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
<!-- CONTENT starts -->
|
||||
{% if include.content != "no" %}
|
||||
|
||||
<!--------------------------------------------- CONTENT starts -->
|
||||
|
||||
A live trading session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.
|
||||
|
||||
<!-- CONTENT ends -->
|
||||
<!--------------------------------------------- CONTENT ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" and include.content != "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
{% if include.adding != "" %}
|
||||
|
||||
{{include.adding}} Adding {{preposition}} {{title}}
|
||||
|
||||
<!-- ADDING starts -->
|
||||
<!--------------------------------------------- ADDING starts -->
|
||||
|
||||
To add a live trading session, select *Add Live Trading Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.
|
||||
|
||||
@@ -92,6 +103,10 @@ Before you start a live trading session, the corresponding task needs to be runn
|
||||
|
||||
To stop a backtesting session, select *Stop* on the menu.
|
||||
|
||||
<!-- STARTING ends -->
|
||||
<!--------------------------------------------- STARTING ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" %}
|
||||
</details>
|
||||
{% endif %}
|
||||
@@ -3,8 +3,9 @@
|
||||
{% assign title = "Paper Trading Session" %}
|
||||
{% assign definition = site.data.network.paper_trading_session %}
|
||||
{% assign preposition = "a" %}
|
||||
{% assign plural = "s" %}
|
||||
|
||||
<!-- TITLE AND DEFINITION ends -->
|
||||
<!--------------------------------------------- TITLE AND DEFINITION ends -->
|
||||
|
||||
{% if include.heading != "" %}
|
||||
{{include.heading}} {{title}}
|
||||
@@ -12,19 +13,19 @@
|
||||
|
||||
{% if include.icon != "no" %}
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
<table class="definitionTable"><tr><td>
|
||||
{% endif %}
|
||||
|
||||
<img src='images/icons/{{include.icon}}{{ title | downcase | replace: " ", "-" }}.png' />
|
||||
|
||||
{% if include.table == "y" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td><td>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.definition != "regular" %}
|
||||
{% if include.definition == "bold" %}
|
||||
|
||||
<strong>{{ definition }}</strong>
|
||||
|
||||
@@ -34,25 +35,35 @@
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.table == "y" and include.icon != "no" %}
|
||||
{% if include.table == "yes" and include.icon != "no" %}
|
||||
</td></tr></table>
|
||||
{% endif %}
|
||||
|
||||
{% if include.content != "n" %}
|
||||
{% if include.more == "yes" and include.content == "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
<!-- CONTENT starts -->
|
||||
{% if include.content != "no" %}
|
||||
|
||||
<!--------------------------------------------- CONTENT starts -->
|
||||
|
||||
A paper trading session node must reference a trading system to gain access to the trading logic to be applied during the session. Other considerations framing the session come from the set of parameters attached to it.
|
||||
|
||||
<!-- CONTENT ends -->
|
||||
<!--------------------------------------------- CONTENT ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" and include.content != "more" %}
|
||||
<details><summary class="nobr">Click to learn more about {{ title | downcase }}{{plural}}
|
||||
</summary>
|
||||
{% endif %}
|
||||
|
||||
{% if include.adding != "" %}
|
||||
|
||||
{{include.adding}} Adding {{preposition}} {{title}}
|
||||
|
||||
<!-- ADDING starts -->
|
||||
<!--------------------------------------------- ADDING starts -->
|
||||
|
||||
To add a paper trading session, select *Add Paper Trading Session* on the trading process instance node menu. When a session is added, it is created with the full set of parameters.
|
||||
|
||||
@@ -92,6 +103,10 @@ Before you start a paper trading session, the corresponding task needs to be run
|
||||
|
||||
To stop a backtesting session, select *Stop* on the menu.
|
||||
|
||||
<!-- STARTING ends -->
|
||||
<!--------------------------------------------- STARTING ends -->
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if include.more == "yes" %}
|
||||
</details>
|
||||
{% endif %}
|
||||
@@ -75,7 +75,7 @@ To add a parameter that may be missing, select *Add Missing Params* on the param
|
||||
|
||||
{% if include.configuring != "" %}
|
||||
|
||||
{{include.adding}} Configuring the {{title}}
|
||||
{{include.configuring}} Configuring the {{title}}
|
||||
|
||||
<!-- CONFIGURING starts -->
|
||||
|
||||
|
||||
@@ -684,10 +684,10 @@ a.fa.fa-envelope-o.mailto {
|
||||
|
||||
h2 {font-weight:700; font-size:170%; margin-top: 60px; padding-bottom: 5px;}
|
||||
h3 {font-weight:500; font-size:150%; margin-top: 30px;}
|
||||
h4 {font-weight:400; font-size:140%; margin-top: 30px;}
|
||||
h5 {font-weight:400; font-size:130%; margin-top: 30px; font-style:italic;}
|
||||
h6 {font-weight:400; font-size:120%; margin-top: 30px; font-style:italic;}
|
||||
h7 {font-weight:400; font-size:110%; margin-top: 30px; font-style:italic;}
|
||||
h4 {font-weight:400; font-size:150%; margin-top: 30px;}
|
||||
h5 {font-weight:400; font-size:140%; margin-top: 30px; font-style:italic;}
|
||||
h6 {font-weight:400; font-size:130%; margin-top: 30px; font-style:italic;}
|
||||
h7 {font-weight:400; font-size:120%; margin-top: 30px; font-style:italic;}
|
||||
|
||||
/* Line on main headings spanning across the screen */
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 905 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
@@ -5,7 +5,7 @@ sidebar: suite_sidebar
|
||||
permalink: suite-defining-a-trading-strategy.html
|
||||
---
|
||||
|
||||
{% include /trading_system/strategy.md heading="" icon="150-" adding="##" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
{% include /trading_system/strategy.md heading="" icon="150-" adding="####" configuring="" starting="" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /trading_system/trigger-stage.md heading="##" icon="150-" adding="" configuring="" starting="" content="yes" definition="bold" table="yes" more="no"%}
|
||||
|
||||
|
||||
@@ -8,40 +8,58 @@ toc: false
|
||||
|
||||
{% include note.html content="Hover your mouse over a node for a tooltip definition, and click to get all the details." %}
|
||||
|
||||
<table class='hierarchyTable'><thead><tr><th><a href='#network' data-toggle='tooltip' data-original-title='{{site.data.network.network}}'><img src='images/icons/network.png' /><br />Network</a></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>
|
||||
<tr><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#network-node' data-toggle='tooltip' data-original-title='{{site.data.network.network_node}}'><img src='images/icons/network-node.png' /><br />Network Node</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#task-manager' data-toggle='tooltip' data-original-title='{{site.data.network.task_manager}}'><img src='images/icons/task-manager.png' /><br />Task Manager</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task' data-toggle='tooltip' data-original-title='{{site.data.network.task}}'><img src='images/icons/task.png' /><br />Task</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#sensor-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.sensor_bot_instance}}'><img src='images/icons/sensor-bot-instance.png' /><br />Sensor Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#sensor-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.sensor_process_instance}}'><img src='images/icons/sensor-process-instance.png' /><br />Sensor Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#key-instance' data-toggle='tooltip' data-original-title='{{site.data.trading_system.key_instance}}'><img src='images/icons/key-instance.png' /><br />Key Instance</a></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#indicator-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.indicator_bot_instance}}'><img src='images/icons/indicator-bot-instance.png' /><br />Indicator Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#indicator-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.indicator_process_instance}}'><img src='images/icons/indicator-process-instance.png' /><br />Indicator Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#trading-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.trading_bot_instance}}'><img src='images/icons/trading-bot-instance.png' /><br />Trading Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#trading-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.trading_process_instance}}'><img src='images/icons/trading-process-instance.png' /><br />Trading Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#key-instance' data-toggle='tooltip' data-original-title='{{site.data.trading_system.key_instance}}'><img src='images/icons/key-instance.png' /><br />Key Instance</a></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#backtesting-session' data-toggle='tooltip' data-original-title='{{site.data.network.backtesting_session}}'><img src='images/icons/backtesting-session.png' /><br />Backtesting Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#paper-trading-session' data-toggle='tooltip' data-original-title='{{site.data.network.paper_trading_session}}'><img src='images/icons/paper-trading-session.png' /><br />Paper Trading Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#forward-testing-session' data-toggle='tooltip' data-original-title='{{site.data.network.forward_testing_session}}'><img src='images/icons/forward-testing-session.png' /><br />Forward Testing Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#live-trading-session' data-toggle='tooltip' data-original-title='{{site.data.network.live_trading_session}}'><img src='images/icons/live-trading-session.png' /><br />Live Trading Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#parameters' data-toggle='tooltip' data-original-title='{{site.data.trading_system.parameters}}'><img src='images/icons/parameters.png' /><br />Parameters</a></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#base-asset' data-toggle='tooltip' data-original-title='{{site.data.trading_system.base_asset}}'><img src='images/icons/base-asset.png' /><br />Base Asset</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#quoted-asset' data-toggle='tooltip' data-original-title='{{site.data.trading_system.quoted_asset}}'><img src='images/icons/quoted-asset.png' /><br />Quoted Asset</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#time-range' data-toggle='tooltip' data-original-title='{{site.data.trading_system.time_range}}'><img src='images/icons/time-range.png' /><br />Time Range</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#time-frame' data-toggle='tooltip' data-original-title='{{site.data.trading_system.time_frame}}'><img src='images/icons/time-frame.png' /><br />Time Frame</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#slippage' data-toggle='tooltip' data-original-title='{{site.data.trading_system.slippage}}'><img src='images/icons/slippage.png' /><br />Slippage</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#fee-structure' data-toggle='tooltip' data-original-title='{{site.data.trading_system.fee_structure}}'><img src='images/icons/fee-structure.png' /><br />Fee Structure</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-storage' data-toggle='tooltip' data-original-title='{{site.data.network.data_storage}}'><img src='images/icons/data-storage.png' /><br />Data Storage</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#session-based-data' data-toggle='tooltip' data-original-title='{{site.data.network.session-based_data}}'><img src='images/icons/session-based-data.png' /><br />Session-based Data</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#session-reference' data-toggle='tooltip' data-original-title='{{site.data.network.session_reference}}'><img src='images/icons/session-reference.png' /><br />Session Reference</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#single-market-data' data-toggle='tooltip' data-original-title='{{site.data.network.single_market_data}}'><img src='images/icons/single-market-data.png' /><br />Single Market Data</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-product' data-toggle='tooltip' data-original-title='{{site.data.network.data_product}}'><img src='images/icons/data-product.png' /><br />Data Product</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#session-independent-data' data-toggle='tooltip' data-original-title='{{site.data.network.session-independent_data}}'><img src='images/icons/session-independent-data.png' /><br />Session-independent Data</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#single-market-data' data-toggle='tooltip' data-original-title='{{site.data.network.single_market_data}}'><img src='images/icons/single-market-data.png' /><br />Single Market Data</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-product' data-toggle='tooltip' data-original-title='{{site.data.network.data_product}}'><img src='images/icons/data-product.png' /><br />Data Product</a></td><td></td><td></td><td></td></tr></tbody></table>
|
||||
|
||||
|
||||
<table class='hierarchyTable'><thead><tr><th><a href='#network' data-toggle='tooltip' data-original-title='{{site.data.network.network}}'><img src='images/icons/network.png' /><br />Network</a></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody>
|
||||
<tr><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#network-node' data-toggle='tooltip' data-original-title='{{site.data.network.network_node}}'><img src='images/icons/network-node.png' /><br />Network Node</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#data-storage' data-toggle='tooltip' data-original-title='{{site.data.network.data_storage}}'><img src='images/icons/data-storage.png' /><br />Data Storage</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#session-based-data' data-toggle='tooltip' data-original-title='{{site.data.network.session_based_data}}'><img src='images/icons/session-based-data.png' /><br />Session Based Data</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#session-reference' data-toggle='tooltip' data-original-title='{{site.data.network.session_reference}}'><img src='images/icons/session-reference.png' /><br />Session Reference</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#single-market-data' data-toggle='tooltip' data-original-title='{{site.data.network.single_market_data}}'><img src='images/icons/single-market-data.png' /><br />Single Market Data</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-product' data-toggle='tooltip' data-original-title='{{site.data.network.data_product}}'><img src='images/icons/data-product.png' /><br />Data Product</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#session-independent-data' data-toggle='tooltip' data-original-title='{{site.data.network.session_independent_data}}'><img src='images/icons/session-independent-data.png' /><br />Session Independent Data</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#single-market-data' data-toggle='tooltip' data-original-title='{{site.data.network.single_market_data}}'><img src='images/icons/single-market-data.png' /><br />Single Market Data</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#data-product' data-toggle='tooltip' data-original-title='{{site.data.network.data_product}}'><img src='images/icons/data-product.png' /><br />Data Product</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#data-mining' data-toggle='tooltip' data-original-title='{{site.data.network.data_mining}}'><img src='images/icons/data-mining.png' /><br />Data Mining</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task-manager' data-toggle='tooltip' data-original-title='{{site.data.network.task_manager}}'><img src='images/icons/task-manager.png' /><br />Task Manager</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task' data-toggle='tooltip' data-original-title='{{site.data.network.task}}'><img src='images/icons/task.png' /><br />Task</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#sensor-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.sensor_bot_instance}}'><img src='images/icons/sensor-bot-instance.png' /><br />Sensor Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#sensor-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.sensor_process_instance}}'><img src='images/icons/sensor-process-instance.png' /><br />Sensor Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#key-instance' data-toggle='tooltip' data-original-title='{{site.data.trading_system.key_instance}}'><img src='images/icons/key-instance.png' /><br />Key Instance</a></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#indicator-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.indicator_bot_instance}}'><img src='images/icons/indicator-bot-instance.png' /><br />Indicator Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#indicator-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.indicator_process_instance}}'><img src='images/icons/indicator-process-instance.png' /><br />Indicator Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#testing-environment' data-toggle='tooltip' data-original-title='{{site.data.network.testing_environment}}'><img src='images/icons/testing-environment.png' /><br />Testing Environment</a></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task-manager' data-toggle='tooltip' data-original-title='{{site.data.network.task_manager}}'><img src='images/icons/task-manager.png' /><br />Task Manager</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task' data-toggle='tooltip' data-original-title='{{site.data.network.task}}'><img src='images/icons/task.png' /><br />Task</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#trading-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.trading_bot_instance}}'><img src='images/icons/trading-bot-instance.png' /><br />Trading Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#trading-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.trading_process_instance}}'><img src='images/icons/trading-process-instance.png' /><br />Trading Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#backtesting-session' data-toggle='tooltip' data-original-title='{{site.data.network.backtesting_session}}'><img src='images/icons/backtesting-session.png' /><br />Backtesting Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#paper-trading-session' data-toggle='tooltip' data-original-title='{{site.data.network.paper_trading_session}}'><img src='images/icons/paper-trading-session.png' /><br />Paper Trading Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#parameters' data-toggle='tooltip' data-original-title='{{site.data.trading_system.parameters}}'><img src='images/icons/parameters.png' /><br />Parameters</a></td><td></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#base-asset' data-toggle='tooltip' data-original-title='{{site.data.trading_system.base_asset}}'><img src='images/icons/base-asset.png' /><br />Base Asset</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#quoted-asset' data-toggle='tooltip' data-original-title='{{site.data.trading_system.quoted_asset}}'><img src='images/icons/quoted-asset.png' /><br />Quoted Asset</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#time-range' data-toggle='tooltip' data-original-title='{{site.data.trading_system.time_range}}'><img src='images/icons/time-range.png' /><br />Time Range</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#time-frame' data-toggle='tooltip' data-original-title='{{site.data.trading_system.time_frame}}'><img src='images/icons/time-frame.png' /><br />Time Frame</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#slippage' data-toggle='tooltip' data-original-title='{{site.data.trading_system.slippage}}'><img src='images/icons/slippage.png' /><br />Slippage</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#fee-structure' data-toggle='tooltip' data-original-title='{{site.data.trading_system.fee_structure}}'><img src='images/icons/fee-structure.png' /><br />Fee Structure</a></td></tr>
|
||||
<tr><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#production-environment' data-toggle='tooltip' data-original-title='{{site.data.network.production_environment}}'><img src='images/icons/production-environment.png' /><br />Production Environment</a></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task-manager' data-toggle='tooltip' data-original-title='{{site.data.network.task_manager}}'><img src='images/icons/task-manager.png' /><br />Task Manager</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#task' data-toggle='tooltip' data-original-title='{{site.data.network.task}}'><img src='images/icons/task.png' /><br />Task</a></td><td></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#trading-bot-instance' data-toggle='tooltip' data-original-title='{{site.data.network.trading_bot_instance}}'><img src='images/icons/trading-bot-instance.png' /><br />Trading Bot Instance</a></td><td></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#trading-process-instance' data-toggle='tooltip' data-original-title='{{site.data.network.trading_process_instance}}'><img src='images/icons/trading-process-instance.png' /><br />Trading Process Instance</a></td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#market-reference' data-toggle='tooltip' data-original-title='{{site.data.network.market_reference}}'><img src='images/icons/market-reference.png' /><br />Market Reference</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-line.png' /></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#key-instance' data-toggle='tooltip' data-original-title='{{site.data.trading_system.key_instance}}'><img src='images/icons/key-instance.png' /><br />Key Instance</a></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#forward-testing-session' data-toggle='tooltip' data-original-title='{{site.data.network.forward_testing_session}}'><img src='images/icons/forward-testing-session.png' /><br />Forward Testing Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#live-trading-session' data-toggle='tooltip' data-original-title='{{site.data.network.live_trading_session}}'><img src='images/icons/live-trading-session.png' /><br />Live Trading Session</a></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#parameters' data-toggle='tooltip' data-original-title='{{site.data.trading_system.parameters}}'><img src='images/icons/parameters.png' /><br />Parameters</a></td><td></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#base-asset' data-toggle='tooltip' data-original-title='{{site.data.trading_system.base_asset}}'><img src='images/icons/base-asset.png' /><br />Base Asset</a></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#quoted-asset' data-toggle='tooltip' data-original-title='{{site.data.trading_system.quoted_asset}}'><img src='images/icons/quoted-asset.png' /><br />Quoted Asset</a></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#time-range' data-toggle='tooltip' data-original-title='{{site.data.trading_system.time_range}}'><img src='images/icons/time-range.png' /><br />Time Range</a></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#time-frame' data-toggle='tooltip' data-original-title='{{site.data.trading_system.time_frame}}'><img src='images/icons/time-frame.png' /><br />Time Frame</a></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-fork.png' /></td><td><a href='#slippage' data-toggle='tooltip' data-original-title='{{site.data.trading_system.slippage}}'><img src='images/icons/slippage.png' /><br />Slippage</a></td></tr>
|
||||
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img src='images/icons/tree-connector-elbow.png' /></td><td><a href='#fee-structure' data-toggle='tooltip' data-original-title='{{site.data.trading_system.fee_structure}}'><img src='images/icons/fee-structure.png' /><br />Fee Structure</a></td></tr></tbody></table>
|
||||
|
||||
|
||||
|
||||
@@ -81,6 +99,18 @@ In a more distant future, you will also be able to connect to and consume servic
|
||||
|
||||
|
||||
|
||||
|
||||
## Data Mining
|
||||
|
||||
<img src='images/icons/150-data-mining.png' />
|
||||
|
||||
**{{site.data.network.data_mining}}**
|
||||
|
||||
Users may have access to several data mines. For organizational purposes, it is recommended each data mine has its task manager. However, the system allows any form of organization.
|
||||
|
||||
|
||||
|
||||
|
||||
## Task Manager
|
||||
|
||||
<img src='images/icons/150-task-manager.png' />
|
||||
@@ -269,6 +299,19 @@ To add a key instance, select *Add Key Instance* on the market reference node me
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Testing Environment
|
||||
|
||||
<img src='images/icons/150-testing-environment.png' />
|
||||
|
||||
**{{site.data.network.testing_environment}}**
|
||||
|
||||
Depending on how you use the system, how many markets and exchanges you work with, the number of trading systems you use, or the way you choose to test your strategies, you may find yourself with a large number of testing sessions. It is recommended you organize all of your testing sessions below the testing environment node.
|
||||
|
||||
|
||||
|
||||
|
||||
## Trading Bot Instance
|
||||
|
||||
<img src='images/icons/150-trading-bot-instance.png' />
|
||||
@@ -313,13 +356,25 @@ You do not start or stop a trading process instance directly. Instead, you start
|
||||
|
||||
|
||||
|
||||
{% include /network/backtesting-session.md heading="##" icon="150-" adding="###" configuring="###" starting="###" definition="" table="y" %}
|
||||
{% include /network/backtesting-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="no"%}
|
||||
|
||||
{% include /network/paper-trading-session.md heading="##" icon="150-" adding="###" configuring="###" starting="###" definition="" table="y" %}
|
||||
{% include /network/paper-trading-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="no"%}
|
||||
|
||||
{% include /network/forward-testing-session.md heading="##" icon="150-" adding="###" configuring="###" starting="###" definition="" table="y" %}
|
||||
|
||||
{% include /network/live-trading-session.md heading="##" icon="150-" adding="###" configuring="###" starting="###" definition="" table="y" %}
|
||||
|
||||
## Production Environment
|
||||
|
||||
<img src='images/icons/150-production-environment.png' />
|
||||
|
||||
**{{site.data.network.production_environment}}**
|
||||
|
||||
If you work with multiple markets, multiple exchanges of multiple trading systems, it is recommended to organize your live trading sessions below the production environment node.
|
||||
|
||||
|
||||
|
||||
{% include /network/forward-testing-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="no"%}
|
||||
|
||||
{% include /network/live-trading-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="no"%}
|
||||
|
||||
|
||||
|
||||
@@ -443,3 +498,12 @@ To add a session-independent data node, select *Add Session-independent Data* on
|
||||
|
||||
{% include note.html content="Only one session-independent data node may exist on each data storage node." %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ permalink: suite-trading-sessions.html
|
||||
|
||||
{{site.data.network.session}}
|
||||
|
||||
{% include /network/backtesting-session.md heading="##" icon="150-" adding="" configuring="" starting="" content="n" definition="regular" table="y" %}
|
||||
{% include /network/backtesting-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /network/paper-trading-session.md heading="##" icon="150-" adding="" configuring="" starting="" content="n" definition="regular" table="y" %}
|
||||
{% include /network/paper-trading-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /network/forward-testing-session.md heading="##" icon="150-" adding="" configuring="" starting="" content="n" definition="regular" table="y" %}
|
||||
{% include /network/forward-testing-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="yes"%}
|
||||
|
||||
{% include /network/live-trading-session.md heading="##" icon="150-" adding="" configuring="" starting="" content="n" definition="regular" table="y" %}
|
||||
{% include /network/live-trading-session.md heading="##" icon="150-" adding="####" configuring="####" starting="####" content="yes" definition="bold" table="yes" more="yes"%}
|
||||