Includes Implemented

This commit is contained in:
Luis Fernando Molina committed 2020-09-21 10:19:50 +02:00
1 parent c77b9af992
commit e494dd8ad9
31 files changed
+681 -217

No files matched your search

+9 -6
View File
@@ -13,11 +13,14 @@ TASK_SERVER_PATH=./TaskServer
INTER_PROCESS_FILES_PATH=./Inter-Process-Files
STORAGE_PATH=./Data-Storage
PLOTTERS_PATH=./Legacy-Code
DATA_MINES_PATH=./Data-Mines
TRADING_MINES_PATH=./Trading-Mines
TRADING_SYSTEMS_PATH=./Trading-Systems
SUPER_SCRIPTS_PATH=./Super-Scripts
TRADING_ENGINES_PATH=./Trading-Engines
DATA_MINES_PATH=./Includes/Data-Mines
TRADING_MINES_PATH=./Includes/Trading-Mines
TRADING_SYSTEMS_PATH=./Includes/Trading-Systems
SUPER_SCRIPTS_PATH=./Includes/Super-Scripts
TRADING_ENGINES_PATH=./Includes/Trading-Engines
TUTORIALS_PATH=./Includes/Tutorials
WORKSPACES_PATH=./Includes/Workspaces
WRITE_LOGS_TO_FILES=true
BOTS_PATH=./Legacy-Code
@@ -36,6 +39,6 @@ PATH_TO_FILES_COMPONENT=./Files-Component/src
PATH_TO_WEB_SERVER=./BackendServers/
APP_SCHEMA_PATH=./
WORKSPACE_PATH=./
DEFAULT_WORKSPACE_PATH=./Includes/Workspaces
MY_WORKSPACES_PATH=./My-Workspaces
PATH_TO_FONTS=./BackendServers/WebServer/Fonts
+278 -4
View File
@@ -14299,22 +14299,296 @@
{
"name": "includedTradingSystems",
"type": "node",
"childType": "Included Trading Mines",
"childType": "Included Trading Systems",
"autoAdd": false
},
{
"name": "includedTradingEngines",
"type": "node",
"childType": "Included Trading Mines",
"childType": "Included Trading Engines",
"autoAdd": false
},
{
"name": "includedSuperScripts",
"type": "node",
"childType": "Included Trading Mines",
"childType": "Included Super Scripts",
"autoAdd": false
},
{
"name": "includedTutorials",
"type": "node",
"childType": "Included Tutorials",
"autoAdd": false
}
]
],
"icon": "bitcoin"
},
{
"type": "Included Data Mines",
"menuItems": [
{
"action": "Include Missing Data Mines",
"label": "Include Missing Data Mines",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Data Mine",
"actionFunction": "payload.onMenuItemClick"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "includedDataMines",
"properties": [
{
"name": "includedFiles",
"type": "array",
"childType": "Included File",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included Trading Mines",
"menuItems": [
{
"action": "Include Missing Trading Mines",
"label": "Include Missing Trading Mines",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Trading Mine",
"actionFunction": "payload.onMenuItemClick"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "includedTradingMines",
"properties": [
{
"name": "includedFiles",
"type": "array",
"childType": "Included File",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included Trading Systems",
"menuItems": [
{
"action": "Include Missing Trading Systems",
"label": "Include Missing Trading Systems",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Trading System",
"actionFunction": "payload.onMenuItemClick"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "includedTradingSystems",
"properties": [
{
"name": "includedFiles",
"type": "array",
"childType": "Included File",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included Trading Engines",
"menuItems": [
{
"action": "Include Missing Trading Engines",
"label": "Include Missing Trading Engines",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Trading Engine",
"actionFunction": "payload.onMenuItemClick"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "includedTradingEngines",
"properties": [
{
"name": "includedFiles",
"type": "array",
"childType": "Included File",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included Super Scripts",
"menuItems": [
{
"action": "Include Missing Super Scripts",
"label": "Include Missing Super Scripts",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Super Scripts",
"actionFunction": "payload.onMenuItemClick"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "includedSuperScripts",
"properties": [
{
"name": "includedFiles",
"type": "array",
"childType": "Included File",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included Tutorials",
"menuItems": [
{
"action": "Include Missing Tutorials",
"label": "Include Missing Tutorials",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Tutorial",
"actionFunction": "payload.onMenuItemClick"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "includedTutorials",
"properties": [
{
"name": "includedFiles",
"type": "array",
"childType": "Included File",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included File",
"menuItems": [
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "includedFilePosition",
"actionFunction": "payload.onMenuItemClick",
"label": "Add Included File Position",
"relatedUiObject": "Included File Position",
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"addLeftIcons": true,
"level": 2,
"propertyNameAtParent": "includedFiles",
"properties": [
{
"name": "includedFilePosition",
"type": "node",
"childType": "Included File Position",
"autoAdd": false
}
],
"icon": "bitcoin"
},
{
"type": "Included File Position",
"menuItems": [
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete",
"iconPathOff": "delete",
"actionFunction": "payload.onMenuItemClick"
}
],
"title": [
"Use Parent"
],
"addLeftIcons": true,
"level": 3,
"propertyNameAtParent": "includedFilePosition",
"properties": [
],
"icon": "bitcoin"
},
{
"type": "Tutorial",
+2 -1
View File
@@ -57,7 +57,8 @@ function newAppLoader() {
'DesignSpace/Workspace/FunctionLibraries/DataMineFunctions.js',
'DesignSpace/Workspace/FunctionLibraries/DataStorageFunctions.js',
'DesignSpace/Workspace/FunctionLibraries/ChartingSpaceFunctions.js',
'DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js',
'DesignSpace/Workspace/FunctionLibraries/TutorialFunctions.js',
'DesignSpace/Workspace/FunctionLibraries/IncludesFunctions.js',
'Utilities/CoordinateTransformations.js',
'Utilities/DateRateTransformations.js',
+4 -4
View File
@@ -11,10 +11,10 @@
<script src="externalScripts/CCapture.all.min.js"></script>
<!-- Documentation Style Sheets -->
<!--
<!-- -->
<link rel="stylesheet" type="text/css"
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
-->
<script type="text/javascript">
function loadCanvas() {
try {
@@ -42,9 +42,9 @@
<div id="masterApp"></div>
<div id="canvasApp"></div>
<div id="docApp" style="position:fixed; top:100000px; left:100000px">
<iframe id="docIFrame" style="border:none; " height="2000"
<iframe id="docIFrame" style="border:none; " height="2000" src="https://julian-molina.github.io/Documentation/"
width="900" ></iframe>
</div> <!-- src="https://julian-molina.github.io/Documentation/" -->
</div> <!-- -->
<div id="textAreaDiv"></div>
<div id="inputDiv" style="font-family:saira condensed;">&nbsp;</div>
+97 -51
View File
@@ -454,38 +454,39 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
}
break
case 'IncludedNames':
case 'IncludedFileNames':
{
const fs = require('fs')
let folder
let includedNames = {
includedDataMines: [],
includedTradingMines: [],
includedTradingSystems: [],
includedSuperScripts: [],
includedTradingEngines: []
switch (requestParameters[2]) {
case 'Data-Mines': {
folder = process.env.DATA_MINES_PATH + '/'
break
}
case 'Trading-Mines': {
folder = process.env.TRADING_MINES_PATH + '/'
break
}
case 'Trading-Systems': {
folder = process.env.TRADING_SYSTEMS_PATH + '/'
break
}
case 'Trading-Engines': {
folder = process.env.TRADING_ENGINES_PATH + '/'
break
}
case 'Super-Scripts': {
folder = process.env.SUPER_SCRIPTS_PATH + '/'
break
}
case 'Tutorials': {
folder = process.env.TUTORIALS_PATH + '/'
break
}
}
folder = process.env.DATA_MINES_PATH + '/'
fs.readdir(folder, (err, files) => {
includedNames.includedDataMines = files
folder = process.env.TRADING_SYSTEMS_PATH + '/'
fs.readdir(folder, (err, files) => {
includedNames.includedTradingSystems = files
folder = process.env.SUPER_SCRIPTS_PATH + '/'
fs.readdir(folder, (err, files) => {
includedNames.includedSuperScripts = files
folder = process.env.TRADING_ENGINES_PATH + '/'
fs.readdir(folder, (err, files) => {
includedNames.includedTradingEngines = files
folder = process.env.TRADING_MINES_PATH + '/'
fs.readdir(folder, (err, files) => {
includedNames.includedTradingMines = files
respondWithContent(JSON.stringify(includedNames), response)
})
})
})
})
respondWithContent(JSON.stringify(files), response)
})
}
break
@@ -517,7 +518,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
let fs = require('fs')
try {
let filePath = process.env.WORKSPACE_PATH + 'Workspace.json'
let filePath = process.env.DEFAULT_WORKSPACE_PATH + '/Default.json'
fs.readFile(filePath, onFileRead)
} catch (e) {
console.log('[ERROR] Error reading the Workspace.', e)
@@ -536,30 +537,60 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
case 'ListWorkspaces':
{
let dirPath = process.env.MY_WORKSPACES_PATH
let allWorkspaces = []
readIncludedWorkspaces()
function readIncludedWorkspaces() {
let dirPath = process.env.WORKSPACES_PATH
try {
let fs = require('fs')
fs.readdir(dirPath, onDirRead)
try {
let fs = require('fs')
fs.readdir(dirPath, onDirRead)
function onDirRead(err, fileList) {
if (err) {
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
return
} else {
respondWithContent(JSON.stringify(fileList), response)
return
function onDirRead(err, fileList) {
if (err) {
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
return
} else {
let updatedFileList = []
for (let i = 0; i < fileList.length; i++) {
let name = 'Included -> ' + fileList[i]
updatedFileList.push(name)
}
allWorkspaces = allWorkspaces.concat(updatedFileList)
readMyWorkspaces()
return
}
}
} catch (err) {
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
return
}
} catch (err) {
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
return
}
function readMyWorkspaces() {
let dirPath = process.env.MY_WORKSPACES_PATH
try {
let fs = require('fs')
fs.readdir(dirPath, onDirRead)
function onDirRead(err, fileList) {
if (err) {
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
return
} else {
allWorkspaces = allWorkspaces.concat(fileList)
respondWithContent(JSON.stringify(allWorkspaces), response)
return
}
}
} catch (err) {
if (CONSOLE_LOG === true) { console.log('[ERROR] Error reading a directory content. filePath = ' + dirPath) }
respondWithContent(JSON.stringify(global.DEFAULT_FAIL_RESPONSE), response)
return
}
}
}
break
@@ -571,6 +602,14 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
}
break
case 'LoadIncludedWorkspace':
{
let fileName = unescape(requestParameters[2])
let filePath = process.env.WORKSPACES_PATH + '/' + fileName + '.json'
respondWithFile(filePath, response)
}
break
case 'SaveWorkspace':
{
getBody(processRequest)
@@ -609,36 +648,42 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
}
break
case 'DataMines':
case 'Data-Mines':
{
respondWithFile(process.env.DATA_MINES_PATH + '/' + requestParameters[2], response)
}
break
case 'TradingMines':
case 'Trading-Mines':
{
respondWithFile(process.env.TRADING_MINES_PATH + '/' + requestParameters[2], response)
}
break
case 'TradingSystems':
case 'Trading-Systems':
{
respondWithFile(process.env.TRADING_SYSTEMS_PATH + '/' + requestParameters[2], response)
}
break
case 'SuperScripts':
case 'Super-Scripts':
{
respondWithFile(process.env.SUPER_SCRIPTS_PATH + '/' + requestParameters[2], response)
}
break
case 'TradingEngines':
case 'Trading-Engines':
{
respondWithFile(process.env.TRADING_ENGINES_PATH + '/' + requestParameters[2], response)
}
break
case 'Tutorials':
{
respondWithFile(process.env.TUTORIALS_PATH + '/' + requestParameters[2], response)
}
break
case 'Storage':
{
respondWithFile(process.env.STORAGE_PATH + '/' + request.url.substring(9), response)
@@ -722,6 +767,7 @@ exports.newWebServer = function newWebServer(EVENTS_SERVER) {
if (!err) {
respondWithContent(file.toString(), response)
} else {
console.log('File requested not found: ' + fileName)
respondWithContent(undefined, response)
}
}
@@ -0,0 +1,84 @@
function newIncludesFunctions() {
thisObject = {
includeMissingDataMines: includeMissingDataMines,
includeMissingTradingMines: includeMissingTradingMines,
includeMissingTradingSystems: includeMissingTradingSystems,
includeMissingTradingEngines: includeMissingTradingEngines,
includeMissingSuperScripts: includeMissingSuperScripts,
includeMissingTutorials: includeMissingTutorials
}
return thisObject
function getIncludedFileNames(includeType, callBack) {
callServer(undefined, 'IncludedFileNames/' + includeType, onResponse)
function onResponse(err, data) {
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Failed to Fetch Included ' + includeType + ' from the Backend')
return
}
let includedFileNames = JSON.parse(data)
callBack(includedFileNames)
}
}
function addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes) {
for (let i = 0; i < fileNames.length; i++) {
let fileName = fileNames[i]
fileName = fileName.replace('.json', '')
if (isMissingChildrenByName(node, fileName) === true) {
let child = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Included File')
child.name = fileName
}
}
}
function includeMissingDataMines(node, rootNodes, functionLibraryUiObjectsFromNodes) {
getIncludedFileNames('Data-Mines', onNamesArrived)
function onNamesArrived(fileNames) {
addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
}
}
function includeMissingTradingMines(node, rootNodes, functionLibraryUiObjectsFromNodes) {
getIncludedFileNames('Trading-Mines', onNamesArrived)
function onNamesArrived(fileNames) {
addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
}
}
function includeMissingTradingSystems(node, rootNodes, functionLibraryUiObjectsFromNodes) {
getIncludedFileNames('Trading-Systems', onNamesArrived)
function onNamesArrived(fileNames) {
addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
}
}
function includeMissingTradingEngines(node, rootNodes, functionLibraryUiObjectsFromNodes) {
getIncludedFileNames('Trading-Engines', onNamesArrived)
function onNamesArrived(fileNames) {
addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
}
}
function includeMissingSuperScripts(node, rootNodes, functionLibraryUiObjectsFromNodes) {
getIncludedFileNames('Super-Scripts', onNamesArrived)
function onNamesArrived(fileNames) {
addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
}
}
function includeMissingTutorials(node, rootNodes, functionLibraryUiObjectsFromNodes) {
getIncludedFileNames('Tutorials', onNamesArrived)
function onNamesArrived(fileNames) {
addIncludedFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
}
}
}
@@ -39,171 +39,91 @@ function newUiObjectsFromNodes() {
}
}
getIncludedNames()
function getIncludedNames() {
callServer(undefined, 'IncludedNames', onResponse)
function onResponse(err, data) {
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Failed to Fetch Inclided Names from the Backend')
return
}
let includedNames = JSON.parse(data)
addIncludedNodes(includedNames)
}
}
addIncludedNodes()
function addIncludedNodes(includedNames) {
let blobService = newFileStorage()
let includedDataMines = includedNames.includedDataMines
let includedTradingMines = includedNames.includedTradingMines
let includedTradingSystems = includedNames.includedTradingSystems
let includedSuperScripts = includedNames.includedSuperScripts
let includedTradingEngines = includedNames.includedTradingEngines
let totalIncluded = 0
let totalRead = 0
for (let i = 0; i < includedDataMines.length; i++) {
let name = includedDataMines[i]
blobService.getFileFromHost('DataMines' + '/' + name, onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Cannot load included Data Mine ' + name + '. The workspace can not be loaded.')
return
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.type === 'Includes') {
let includes = rootNode
if (includes.includedDataMines !== undefined) {
totalIncluded = totalIncluded + includes.includedDataMines.includedFiles.length
includeAllTheseFiles(includes.includedDataMines.includedFiles, 'Data-Mines')
}
let receivedNode = JSON.parse(text)
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.type === 'Data Mine') {
if (rootNode.config !== undefined) {
let config = JSON.parse(rootNode.config)
if (config.name === name) {
rootNodes.splice(i, 1)
}
}
}
if (includes.includedTradingMines !== undefined) {
totalIncluded = totalIncluded + includes.includedTradingMines.includedFiles.length
includeAllTheseFiles(includes.includedTradingMines.includedFiles, 'Trading-Mines')
}
receivedNode.isIncluded = true
node.rootNodes.unshift(receivedNode)
totalIncluded++
if (totalIncluded === includedDataMines.length + includedTradingSystems.length + includedSuperScripts.length + includedTradingEngines.length + includedTradingMines.length) {
addUserDefinedNodes()
if (includes.includedTradingSystems !== undefined) {
totalIncluded = totalIncluded + includes.includedTradingSystems.includedFiles.length
includeAllTheseFiles(includes.includedTradingSystems.includedFiles, 'Trading-Systems')
}
if (includes.includedTradingEngines !== undefined) {
totalIncluded = totalIncluded + includes.includedTradingEngines.includedFiles.length
includeAllTheseFiles(includes.includedTradingEngines.includedFiles, 'Trading-Engines')
}
if (includes.includedSuperScripts !== undefined) {
totalIncluded = totalIncluded + includes.includedSuperScripts.includedFiles.length
includeAllTheseFiles(includes.includedSuperScripts.includedFiles, 'Super-Scripts')
}
if (includes.includedTutorials !== undefined) {
totalIncluded = totalIncluded + includes.includedTutorials.includedFiles.length
includeAllTheseFiles(includes.includedTutorials.includedFiles, 'Tutorials')
}
}
}
for (let i = 0; i < includedTradingMines.length; i++) {
let name = includedTradingMines[i]
blobService.getFileFromHost('TradingMines' + '/' + name, onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Cannot load included Trading Mine ' + name + '. The workspace can not be loaded.')
return
}
let receivedNode = JSON.parse(text)
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.type === 'Trading Mine') {
if (rootNode.config !== undefined) {
let config = JSON.parse(rootNode.config)
if (config.name === name) {
rootNodes.splice(i, 1)
}
}
}
}
receivedNode.isIncluded = true
node.rootNodes.unshift(receivedNode)
totalIncluded++
if (totalIncluded === includedDataMines.length + includedTradingSystems.length + includedSuperScripts.length + includedTradingEngines.length + includedTradingMines.length) {
addUserDefinedNodes()
}
}
/*
If there is no Includes node at the workspace, we load it anyways here.
*/
if (totalIncluded === 0) {
addUserDefinedNodes()
}
for (let i = 0; i < includedTradingSystems.length; i++) {
let name = includedTradingSystems[i]
blobService.getFileFromHost('TradingSystems' + '/' + name, onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Cannot load included Trading System ' + name + '. The workspace can not be loaded.')
return
}
let receivedNode = JSON.parse(text)
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.type === 'Trading System') {
if (rootNode.config !== undefined) {
let config = JSON.parse(rootNode.config)
if (config.name === name) {
function includeAllTheseFiles(includedFiles, includedType) {
for (let i = 0; i < includedFiles.length; i++) {
let includedFile = includedFiles[i]
let name = includedFile.name
blobService.getFileFromHost(includedType + '/' + name + '.json', onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('[WARN] Cannot load included ' + includedType + ' ' + name + '. The workspace will be loaded with this included file missing.')
} else {
let receivedNode = JSON.parse(text)
/*
If the workspace already contains a root node with the id of the head of the hirierchy
we are loading, we remove it because the included file has precedende.
*/
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.id === receivedNode.id) {
rootNodes.splice(i, 1)
break
}
}
}
}
receivedNode.isIncluded = true
node.rootNodes.unshift(receivedNode)
totalIncluded++
if (totalIncluded === includedDataMines.length + includedTradingSystems.length + includedSuperScripts.length + includedTradingEngines.length + includedTradingMines.length) {
addUserDefinedNodes()
}
}
}
receivedNode.isIncluded = true
for (let i = 0; i < includedSuperScripts.length; i++) {
let name = includedSuperScripts[i]
blobService.getFileFromHost('SuperScripts' + '/' + name, onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Cannot load included Super Script ' + name + '. The workspace can not be loaded.')
return
}
let receivedNode = JSON.parse(text)
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.type === 'Super Scripts') {
if (rootNode.config !== undefined) {
let config = JSON.parse(rootNode.config)
if (config.name === name) {
rootNodes.splice(i, 1)
if (includedFile.includedFilePosition !== undefined) {
let positionOffset = {
x: includedFile.includedFilePosition.savedPayload.position.x - receivedNode.savedPayload.position.x,
y: includedFile.includedFilePosition.savedPayload.position.y - receivedNode.savedPayload.position.y
}
receivedNode.positionOffset = positionOffset
}
}
}
receivedNode.isIncluded = true
node.rootNodes.unshift(receivedNode)
totalIncluded++
if (totalIncluded === includedDataMines.length + includedTradingSystems.length + includedSuperScripts.length + includedTradingEngines.length + includedTradingMines.length) {
addUserDefinedNodes()
}
}
}
for (let i = 0; i < includedTradingEngines.length; i++) {
let name = includedTradingEngines[i]
blobService.getFileFromHost('TradingEngines' + '/' + name, onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
console.log('Cannot load included Trading Engine ' + name + '. The workspace can not be loaded.')
return
}
let receivedNode = JSON.parse(text)
for (let i = 0; i < node.rootNodes.length; i++) {
let rootNode = node.rootNodes[i]
if (rootNode.type === 'Trading Engine') {
if (rootNode.name === name) {
rootNodes.splice(i, 1)
}
node.rootNodes.unshift(receivedNode)
}
totalRead++
if (totalIncluded === totalRead) {
addUserDefinedNodes()
}
}
receivedNode.isIncluded = true
node.rootNodes.unshift(receivedNode)
totalIncluded++
if (totalIncluded === includedDataMines.length + includedTradingSystems.length + includedSuperScripts.length + includedTradingEngines.length + includedTradingMines.length) {
addUserDefinedNodes()
}
}
}
@@ -294,6 +214,17 @@ function newUiObjectsFromNodes() {
}
*/
/*
This function can be called with a positionOffset to change the node
saved position and all of its descendants positions as well with an
offset. It can also happen that the positionOffset is defined as a property
of the node, in which case it will produce exactly the same effect.
*/
if (node.positionOffset !== undefined) {
positionOffset = node.positionOffset
}
/* Get node definition */
let nodeDefinition = getNodeDefinition(node)
if (nodeDefinition !== undefined) {
+50 -2
View File
@@ -70,6 +70,7 @@ function newWorkspace() {
let functionLibraryDataStorageFunctions = newDataStorageFunctions()
let functionLibraryChartingSpaceFunctions = newChartingSpaceFunctions()
let functionLibraryTutorialFunctions = newTutorialFunctions()
let functionLibraryIncludesFunctions = newIncludesFunctions()
thisObject.nodeChildren = newNodeChildren()
@@ -185,6 +186,14 @@ function newWorkspace() {
/* Validation if it is too early to save. */
if (isInitialized === false) { return }
/* Validation of that the user changed the workspace name at least once. */
if (workspace.name === 'Default') {
canvas.cockpitSpace.setStatus(
'Could not save the Workspace. Please rename the Workspace so that it can be saved.'
, 150, canvas.cockpitSpace.statusTypes.WARNING)
return
}
/* Validation of 2 sessions opened at the same time. */
let savedSessionTimestamp = window.localStorage.getItem('Session Timestamp')
if (Number(savedSessionTimestamp) !== sessionTimestamp) {
@@ -402,8 +411,17 @@ function newWorkspace() {
}
function replaceWorkspaceByLoadingOne(name) {
let blobService = newFileStorage()
blobService.getFileFromHost('LoadWorkspace' + '/' + name, onFileReceived, true)
let webCommand
if (name.indexOf('Included -> ' >= 0)) {
name = name.replace('Included -> ', '')
webCommand = 'LoadIncludedWorkspace'
} else {
webCommand = 'LoadWorkspace'
}
let blobService = newFileStorage()
blobService.getFileFromHost(webCommand + '/' + name, onFileReceived, true)
function onFileReceived(err, text, response) {
if (err && err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
canvas.cockpitSpace.setStatus('Could not load the Workspace called "' + name + '". ', 500, canvas.cockpitSpace.statusTypes.WARNING)
@@ -879,6 +897,36 @@ function newWorkspace() {
}
}
break
case 'Include Missing Data Mines':
{
functionLibraryIncludesFunctions.includeMissingDataMines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes)
}
break
case 'Include Missing Trading Mines':
{
functionLibraryIncludesFunctions.includeMissingTradingMines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes)
}
break
case 'Include Missing Trading Systems':
{
functionLibraryIncludesFunctions.includeMissingTradingSystems(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes)
}
break
case 'Include Missing Trading Engines':
{
functionLibraryIncludesFunctions.includeMissingTradingEngines(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes)
}
break
case 'Include Missing Super Scripts':
{
functionLibraryIncludesFunctions.includeMissingSuperScripts(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes)
}
break
case 'Include Missing Tutorials':
{
functionLibraryIncludesFunctions.includeMissingTutorials(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes)
}
break
}
}
}
+8
View File
@@ -108,6 +108,14 @@ function newUiObjectTitle() {
for (let i = 0; i < nodeDefinition.title.length; i++) {
let titleReference = nodeDefinition.title[i]
switch (titleReference) {
case 'Use Parent': {
let nodeToUse = thisObject.payload.parentNode
if (nodeToUse !== undefined && nodeToUse.payload !== undefined) {
thisObject.payload.title = thisObject.payload.title + separator + nodeToUse.payload.title
thisObject.payload.node.name = thisObject.payload.node.name + separator + nodeToUse.payload.node.name
}
break
}
case 'Use Reference Parent': {
let nodeToUse = thisObject.payload.node.payload.referenceParent
if (nodeToUse !== undefined && nodeToUse.payload !== undefined) {
+41
View File
@@ -184,4 +184,45 @@ function findChildIndexAtParentNode(startingNode) {
}
}
}
}
function isMissingChildrenByName(startingNode, nodeName) {
/*
This functioin scan all the children of a node and returns true or false
depending if the node has a children with a certain name.
*/
if (startingNode === undefined) { return }
let nodeDefinition = APP_SCHEMA_MAP.get(startingNode.type)
if (nodeDefinition === undefined) { return }
/* We scan through this node children */
if (nodeDefinition.properties !== undefined) {
for (let i = 0; i < nodeDefinition.properties.length; i++) {
let property = nodeDefinition.properties[i]
switch (property.type) {
case 'node': {
let child = startingNode[property.name]
if (child.name === nodeName) {
return false
}
}
break
case 'array': {
let startingNodePropertyArray = startingNode[property.name]
if (startingNodePropertyArray !== undefined) {
for (let m = 0; m < startingNodePropertyArray.length; m++) {
let arrayItem = startingNodePropertyArray[m]
if (arrayItem.name === nodeName) {
return false
}
}
}
break
}
}
}
return true
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
View File
@@ -0,0 +1 @@
{"type":"Data Mine","name":"Samurai","config":"{\n\"codeName\": \"Samurai\"\n}","sensorBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"Candles Probabilities","config":"{\n\"codeName\": \"Candles-Probabilities\"\n}","processes":[{"type":"Process Definition","name":"Multi-Period-Market","config":"{\n \"codeName\": \"Multi-Period-Market\",\n \"description\": \"Calculates SMAs for Time Frames of 01-hs and above.\",\n \"startMode\": {\n \"allMonths\": {\n \"run\": \"false\",\n \"minYear\": \"\",\n \"maxYear\": \"\"\n },\n \"oneMonth\": {\n \"run\": \"false\",\n \"year\": \"\",\n \"month\": \"\"\n },\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Period-Market\",\n \"startDate\": {\n },\n \"endDate\": {\n }\n }\n}","processOutput":{"type":"Process Output","name":"New Process Output","outputDatasets":[{"type":"Output Dataset","name":"Multi-Period-Market Candles Probabilities","id":"ab027b2e-4e02-4c71-8da5-6b43c37de20b","savedPayload":{"position":{"x":24441.807558180073,"y":11178.172754360203},"targetPosition":{"x":24757.91289199851,"y":11360.695699284031},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"85c67513-347a-4948-9121-dee04543fcff"}}}],"outputDatasetFolders":[],"id":"1a087bb8-af2f-4384-85dd-c86d4b39aeff","savedPayload":{"position":{"x":24800.964539682667,"y":11431.938485002378},"targetPosition":{"x":25361.983974240396,"y":11756.06775330211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","statusDependencies":[{"type":"Status Dependency","name":"Candles Volumes Multi-Period-Market","config":"{\"mainUtility\": \"Market Ending Point\"}","id":"09588f6b-2193-4c9e-bc33-2ac075e8e4f4","savedPayload":{"position":{"x":25757.82661988232,"y":10782.55282705661},"targetPosition":{"x":25863.974750655703,"y":11140.122654848603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"Candles Probabilities Multi-Period-Market","config":"{ \n\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\"\n}","id":"83721123-d178-4ab3-8d6f-da06e8416eb8","savedPayload":{"position":{"x":25902.870176218516,"y":10769.51496828574},"targetPosition":{"x":25863.974750655703,"y":11140.122654848603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"24ca1130-0386-4088-9417-48eb5d8ac96a"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Period-Market","id":"2cfeb861-3ce6-4f63-b974-acc395f744cc","savedPayload":{"position":{"x":26042.027883264192,"y":10813.091690317255},"targetPosition":{"x":25863.974750655703,"y":11140.122654848603},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Period-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}}],"dataMineDataDependencies":[],"id":"08845d0d-a0a1-4d26-bb44-1072dfcf0b07","savedPayload":{"position":{"x":25038.41068159992,"y":11195.038413715822},"targetPosition":{"x":25361.983974240396,"y":11756.06775330211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","id":"24ca1130-0386-4088-9417-48eb5d8ac96a","savedPayload":{"position":{"x":25361.986645019617,"y":11431.680737402028},"targetPosition":{"x":25361.983974240396,"y":11756.06775330211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"Candles Volumes Multi-Period-Market","id":"82529746-2044-48f0-b1f6-d1454ba5682d","savedPayload":{"position":{"x":25524.18102556447,"y":11475.10355317791},"targetPosition":{"x":25361.983974240396,"y":11756.06775330211},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapseLine truncated
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1 @@
{"type":"Trading System","name":"Lightning Strike","config":"{ \n\"codeName\": \"Lightning Strike\"\n}","tradingStrategies":[{"type":"Trading Strategy","name":"My Trading Strategy","triggerStage":{"type":"Trigger Stage","triggerOn":{"type":"Trigger On Event","situations":[{"type":"Situation","name":"Inmediate Trigger On","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"e2ea7ded-2be1-43a3-a7fa-de3d9b8eeec4","savedPayload":{"position":{"x":12019.268384658983,"y":35411.959473169816},"targetPosition":{"x":12222.121489047899,"y":35515.23218696528},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"e693623c-e11f-49e3-99da-1897c7a47563","savedPayload":{"position":{"x":12222.121489047899,"y":35515.23218696528},"targetPosition":{"x":12627.344132578748,"y":35721.61076665467},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"9135663f-deeb-4b3f-8855-91750810a406","savedPayload":{"position":{"x":12627.344132578748,"y":35721.61076665467},"targetPosition":{"x":13033.042307101188,"y":35928.18264842314},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"05f2f6b7-15ab-4386-a299-91a949de634e","savedPayload":{"position":{"x":13033.042307101188,"y":35928.18264842314},"targetPosition":{"x":13438.652341750114,"y":36134.601050997866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"triggerOff":{"type":"Trigger Off Event","situations":[{"type":"Situation","name":"Never Trigger Off","conditions":[{"type":"Condition","name":"Close Above MA","javascriptCode":{"type":"Javascript Code","code":"false","id":"0eb59e3b-ccc8-4eab-a1f2-a7c8dea28949","savedPayload":{"position":{"x":12876.430835832924,"y":34403.82924666835},"targetPosition":{"x":13016.871455385857,"y":34836.206047588945},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"31ab47dd-fe2d-47ac-9a77-08ec8beee068","savedPayload":{"position":{"x":13016.871455385857,"y":34836.206047588945},"targetPosition":{"x":13157.384719466278,"y":35268.78009717322},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"fa93a965-e836-42b3-9784-79acda1468dd","savedPayload":{"position":{"x":13157.384719466278,"y":35268.78009717322},"targetPosition":{"x":13298.045075875125,"y":35701.7793840292},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"8a46ebed-4ed4-4b70-882b-416ffa1b37f6","savedPayload":{"position":{"x":13298.045075875125,"y":35701.7793840292},"targetPosition":{"x":13438.652341750114,"y":36134.601050997866},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"takePosition":{"type":"Take Position Event","situations":[{"type":"Situation","name":"Inmediate Take Position","conditions":[{"type":"Condition","name":"New Condition","javascriptCode":{"type":"Javascript Code","name":"New Javascript Code","code":"true","id":"90dda64b-17fd-469c-8066-3855596795ab","savedPayload":{"position":{"x":14161.263794884866,"y":34715.53097753575},"targetPosition":{"x":14058.079909413536,"y":34918.38086568177},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}},"id":"4054a522-7863-4ac2-9eab-26db2a6f037f","savedPayload":{"position":{"x":14058.079909413536,"y":34918.38086568177},"targetPosition":{"x":13851.793090531892,"y":35323.58132214364},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"id":"0b8d71ab-6430-4e3f-840a-162745ab8d22","savedPayload":{"position":{"x":13851.793090531892,"y":35323.58132214364},"targetPosition":{"x":13645.241730589853,"y":35729.1913719614},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"announcements":[],"id":"f8ca03db-0afa-4c98-abad-d9a5d17bdd36","savedPayload":{"position":{"x":13645.241730589853,"y":35729.1913719614},"targetPosition":{"x":13438.652341750114,"y":36134.601050997866},"floatingObject":{"isPinned":false,"Line truncated
+1
View File
@@ -0,0 +1 @@
{"type":"Workspace","name":"My Default Workspace","rootNodes":[{"type":"Network","name":"Develoment Network","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"8081\"\n}","dataMining":{"type":"Data Mining","name":"New Data Mining","exchangeDataTasks":[{"type":"Exchange Data Tasks","name":"Binance","marketDataTasks":[{"type":"Market Data Tasks","name":"Binance BTC/USDT","dataMineTasks":[{"type":"Data Mine Tasks","name":"Sparta","taskManagers":[{"type":"Task Manager","name":"Sparta","tasks":[{"type":"Task","name":"SMA","bot":{"type":"Indicator Bot Instance","name":"SMA","config":"{}","processes":[{"type":"Indicator Process Instance","name":"SMA Multi-Period-Market","id":"ee3ba497-dc1b-454d-8ed6-e45c4bfdb13d","savedPayload":{"position":{"x":23226.60177733104,"y":29738.14430203704},"targetPosition":{"x":23536.899756011815,"y":29459.19005941378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"456269f6-9849-4d5f-9c8c-7cd7d1eef297"}}},{"type":"Indicator Process Instance","name":"SMA Multi-Period-Daily","id":"cdd33812-5b8a-4921-9214-0894ca31b4e7","savedPayload":{"position":{"x":23139.752722422458,"y":29330.257336319642},"targetPosition":{"x":23536.899756011815,"y":29459.19005941378},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"333ae5d7-7ec1-4f08-b206-91e3b4f2c99f"}}}],"id":"66dd9467-0c57-48b6-88f2-f07181426ecc","savedPayload":{"position":{"x":23536.899756011815,"y":29459.19005941378},"targetPosition":{"x":23945.17236693493,"y":29372.321746386617},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"cf134303-e938-4f0c-b9d8-f9a1ff363821","savedPayload":{"position":{"x":23945.17236693493,"y":29372.321746386617},"targetPosition":{"x":24353.29969806294,"y":29284.85157127153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"EMA","bot":{"type":"Indicator Bot Instance","name":"EMA","config":"{}","processes":[{"type":"Indicator Process Instance","name":"EMA Multi-Period-Market","id":"6ad014ba-06a5-4b97-a2ef-091532c489ea","savedPayload":{"position":{"x":23175.18964819871,"y":28989.155493231876},"targetPosition":{"x":23590.500609546707,"y":28946.058693385694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"278c34a7-199d-400e-8a06-087149e3d391"}}},{"type":"Indicator Process Instance","name":"EMA Multi-Period-Daily","id":"b137191e-f484-4791-8f3b-7d3aaf5dcf30","savedPayload":{"position":{"x":23344.79195133523,"y":28608.24877749644},"targetPosition":{"x":23590.500609546707,"y":28946.058693385694},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Daily","id":"943ea24f-ee24-4eae-9b4b-e8a73122b1c2"}}}],"id":"50098ed4-bf26-4cbb-8890-6646bce0a875","savedPayload":{"position":{"x":23590.500609546707,"y":28946.058693385694},"targetPosition":{"x":23971.97432652794,"y":29115.686030416433},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"id":"1265f3f0-548f-4145-aa79-a68c7cde4d60","savedPayload":{"position":{"x":23971.97432652794,"y":29115.686030416433},"targetPosition":{"x":24353.29969806294,"y":29284.85157127153},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Task","name":"MACD","bot":{"type":"Indicator Bot Instance","name":"MACD","config":"{}","processes":[{"type":"Indicator Process Instance","name":"MACD Multi-Period-Market","id":"9ee07470-5521-4168-ac5c-2e0e1e4aaa4c","savedPayload":{"position":{"x":23573.831727053424,"y":28353.44161739856},"targetPosition":{"x":23935.51279777453,"y":28562.57080283105},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Process Definition","name":"Multi-Period-Market","id":"44019efe-950a-4eec-a546-cd2ee26818b9"}}Line truncated
@@ -0,0 +1 @@
{"type":"Workspace","name":"Simple Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":23356.151545791756,"y":29738.98747213911},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":23289.9634168229,"y":29661.78881099821},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":23230.726477172728,"y":29579.136981834145},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":23178.792376750385,"y":29491.41855346877},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":23134.820126282055,"y":29399.731870197298},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":23098.94227036551,"y":29304.396880399865},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":23071.52275176024,"y":29206.288390341324},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":23052.75926008704,"y":29106.03719846947},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}},{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":23042.814830135056,"y":29004.579368724586},"targetPosition":{"x":24208.282416169728,"y":28942.5921453813},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"anglLine truncated
@@ -0,0 +1 @@
{"type":"Workspace","name":"Binance - WHB - BBTB","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":39655.39345377463,"y":28084.121285348076},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":39619.08803001109,"y":27971.34006849996},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":39594.11393185164,"y":27855.840877332517},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":39580.59887306321,"y":27738.507421368748},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":39578.655464896365,"y":27620.63069875915},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":39588.297198778826,"y":27502.946480135615},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":39609.428887621216,"y":27386.77785099828},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":39641.84608404141,"y":27273.24280350331},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}},{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":39685.2360649887,"y":27163.433854438405},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToPareLine truncated
+1
View File
@@ -0,0 +1 @@
{"type":"Workspace","name":"Binance - WHB - BBTB","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","dataMinesData":{"type":"Data Mines Data","name":"New Data Mines Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","marketDataProducts":[{"type":"Market Data Products","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":39655.39345377463,"y":28084.121285348076},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":39619.08803001109,"y":27971.34006849996},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":39594.11393185164,"y":27855.840877332517},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":39580.59887306321,"y":27738.507421368748},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":39578.655464896365,"y":27620.63069875915},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":39588.297198778826,"y":27502.946480135615},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":39609.428887621216,"y":27386.77785099828},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":39641.84608404141,"y":27273.24280350331},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}},{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":39685.2360649887,"y":27163.433854438405},"targetPosition":{"x":40780.996436099675,"y":27659.843516028},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToPareLine truncated
-1
View File
@@ -1 +0,0 @@
{"type":"Workspace","name":"Simple Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","code":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34247\", \n\"webSocketsPort\": \"8080\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","singleMarketData":[{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[{"type":"Data Product","name":"Candles","id":"dd7c8795-bb24-4438-9d77-b37a9000ad7f","savedPayload":{"position":{"x":23371.06171982374,"y":29755.463402452675},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles","id":"fe6065ec-4d2d-47a0-bae0-8647f0e195d7"}}},{"type":"Data Product","name":"Volumes","id":"98e6c917-f4b7-4b71-9215-de3ccaf3dc0c","savedPayload":{"position":{"x":23309.87200716484,"y":29688.22822148878},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Volumes","id":"1a366aef-efef-470e-88e0-2a6fbe4dd91f"}}},{"type":"Data Product","name":"Candles Channels","id":"1d7dd537-5f6f-4eb2-8e56-ddba0aef720f","savedPayload":{"position":{"x":23255.334304082426,"y":29617.63717135938},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels","id":"8c81d378-0947-4e9d-be25-58e69120152e"}}},{"type":"Data Product","name":"Candles Channels Objects","id":"221c8d22-8a7f-4014-a7ed-0bafc886b123","savedPayload":{"position":{"x":23206.887565649668,"y":29543.756335083526},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Candles Channels Objects","id":"ba5dbb67-2030-42a0-9ff8-1ee80874f047"}}},{"type":"Data Product","name":"Bollinger Bands","id":"6929ebe7-6486-4299-add5-ed0282500d91","savedPayload":{"position":{"x":23164.409635478434,"y":29466.781583461365},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Bands","id":"29088877-8d63-4217-8d34-8742afc262f4"}}},{"type":"Data Product","name":"Percentage Bandwidth","id":"4a3ed8eb-a73e-4fb4-835a-681cf47d7373","savedPayload":{"position":{"x":23127.954272621846,"y":29387.01865408159},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Percentage Bandwidth","id":"3b7885a0-cd72-4a3f-a38b-3dc8c47bd068"}}},{"type":"Data Product","name":"Bollinger Channels Objects","id":"5ffc6a67-e33b-422b-8e36-f9711f93c723","savedPayload":{"position":{"x":23097.639192435097,"y":29304.845223939745},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Channels Objects","id":"1f111f72-624f-4166-9f99-ab8d785d5267"}}},{"type":"Data Product","name":"Bollinger Sub-Channels Objects","id":"48f7953c-f62d-4292-b042-d1ac05f8f80f","savedPayload":{"position":{"x":23073.59312544535,"y":29220.684709168152},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Bollinger Sub-Channels Objects","id":"080c87fc-4546-4482-ab11-180a33f6d9ab"}}},{"type":"Data Product","name":"Popular SMAs","id":"3b9a3c93-6d41-440e-89a2-2fd1b2dde603","savedPayload":{"position":{"x":23055.93092946497,"y":29134.989347999064},"targetPosition":{"x":24208.266379798588,"y":28943.066572350555},"floatingObject":{"isPinned":falseLine truncated
+7 -3
View File
@@ -28,6 +28,13 @@
callBackFunction(global.DEFAULT_OK_RESPONSE)
return
}
/*
We will filter ourt declared dependencies that are not present in the workspace.
This will allow the user to have less Data Mines loaded at the workspace
that the ones that a Trading Mine depends on.
*/
thisObject.nodeArray = global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY(thisObject.nodeArray)
} else {
logger.write(MODULE_NAME, "[ERROR] initialize -> onInitilized -> It is not possible to not have process dependencies, which means not data dependencies.");
callBackFunction(global.DEFAULT_OK_RESPONSE)
@@ -57,9 +64,7 @@
let addCount = 0;
for (let i = 0; i < thisObject.nodeArray.length; i++) {
let dataSetModule = DATA_SET.newDataSet(BOT, logger);
dataSetModule.initialize(thisObject.nodeArray[i], onInitilized);
function onInitilized(err) {
@@ -71,7 +76,6 @@
callBackFunction(err);
return;
}
addDataSet();
}
@@ -505,6 +505,12 @@
/* The first phase here is about checking that we have everything we need at the definition level. */
let dataDependencies = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processDependencies, 'Data Dependency')
/*
We will filter ourt declared dependencies that are not present in the workspace.
This will allow the user to have less Data Mines loaded at the workspace
that the ones that a Trading Mine depends on.
*/
dataDependencies = global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY(dataDependencies)
if (commons.validateDataDependencies(dataDependencies, callBackFunction) !== true) { return }
@@ -317,6 +317,7 @@ exports.newTradingSimulation = function newTradingSimulation(bot, logger, tradin
For that reason we do the following processing, to have at the chart data structure the current objects of each indicator / time frame.
*/
let dataDependencies = global.NODE_BRANCH_TO_ARRAY(bot.processNode.referenceParent.processDependencies, 'Data Dependency')
dataDependencies = global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY(dataDependencies)
/* Finding the Current Element on Market Files */
if (bot.processingDailyFiles) {
+13
View File
@@ -272,6 +272,19 @@ global.FIND_NODE_IN_NODE_ARRAY = function (nodeArray, nodeType) {
}
}
global.FILTER_OUT_NODES_WITHOUT_REFERENCE_PARENT_FROM_NODE_ARRAY = function (nodeArray) {
let filteredNodeArray = []
for (let i = 0; i < nodeArray.length; i++) {
let arrayItem = nodeArray[i]
if (arrayItem.referenceParent === undefined) {
continue
} else {
filteredNodeArray.push(arrayItem)
}
}
return filteredNodeArray
}
process.on('uncaughtException', function (err) {
console.log('[ERROR] Task Server -> server -> uncaughtException -> err.message = ' + err.message)
-1
View File
@@ -1 +0,0 @@
{"type":"Workspace","name":"Workspace","rootNodes":[{"type":"Network","name":"Superalgos","networkNodes":[{"type":"Network Node","name":"My Computer","config":"{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"8081\"\n}","dataStorage":{"type":"Data Storage","name":"New Data Storage","sessionIndependentData":{"type":"Session Independent Data","name":"New Session Independent Data","exchangeDataProducts":[{"type":"Exchange Data Products","name":"Binance","singleMarketData":[{"type":"Single Market Data","name":"Binance BTC/USDT","dataProducts":[],"dataMineProducts":[{"type":"Data Mine Products","name":"Sparta","botProducts":[{"type":"Bot Products","name":"SMA","dataProducts":[{"type":"Data Product","name":"Popular SMAs","id":"665a435e-da9d-4ac2-a58e-f29d08980254","savedPayload":{"position":{"x":23842.002189998704,"y":30503.25853971839},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Popular SMAs","id":"4029d5bf-a8ad-4d80-b874-2af506e0ab34"}}},{"type":"Data Product","name":"Base7 SMAs","id":"ad7946d9-dd6d-4222-a297-9cc5436eb999","savedPayload":{"position":{"x":23677.417306275674,"y":30607.108265465},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base7 SMAs","id":"a03ef0ea-5be9-4d40-952e-24789e77dbb6"}}},{"type":"Data Product","name":"Base11 SMAs","id":"49992ff9-7300-4116-bd9f-214585ab4710","savedPayload":{"position":{"x":23486.2291676661,"y":30640.351946585783},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base11 SMAs","id":"05fabbf9-7798-4a53-995e-53ae74bef3de"}}},{"type":"Data Product","name":"Base5 SMAs","id":"e9777247-4125-4c69-a7cd-2f4813d162b3","savedPayload":{"position":{"x":23296.890531354402,"y":30597.757559284357},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base5 SMAs","id":"2dcb55de-1673-409e-aa52-f51e7c7f8fa3"}}},{"type":"Data Product","name":"Base6 SMAs","id":"d05bf956-0ce1-4fd5-9cc9-fff68d749445","savedPayload":{"position":{"x":23138.299978902218,"y":30485.63671828675},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base6 SMAs","id":"4ae22e54-cd02-4e2e-b638-1c5ea9a171ac"}}},{"type":"Data Product","name":"Base12 SMAs","id":"b9fcb674-45bc-4e83-ab68-bd6e34d33b4e","savedPayload":{"position":{"x":23034.56871165706,"y":30320.88814943639},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base12 SMAs","id":"723d28e9-a010-48c5-bda0-43a4c2343ddf"}}},{"type":"Data Product","name":"Base30 SMAs","id":"b302598d-ac97-47be-9cb1-f7cb403aeac5","savedPayload":{"position":{"x":23001.10627390992,"y":30129.23689802784},"targetPosition":{"x":23499.424378385633,"y":30142.50245050346},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false},"referenceParent":{"type":"Product Definition","name":"Base30 SMAs","id":"607ebabd-9602-4e5c-803d-d4207dbd6794"}}}],"dataProductFolders":[],"id":"998d5d41-61cd-4c4c-a161-1c21a3e3e950","savedPayload":{"position":{"x":23499.78396127104,"y":30142.386246533944},"targetPosition":{"x":23702.341250211557,"y":29687.768475200504},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Bot Products","name":"EMA","dataProducts":[{"type":"Data Product","name":"Popular EMAs","id":"3ce1006d-04f5-4611-b231-5b8a86ddf4fc","savedPayload":{"position":{"x":23658.99123740034,"y":29665.82080289544},"targetPosition":{"x":23721.99123740034,"y":29724.82080289544},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"Line truncated