Merge branch 'plugins-docs' of https://github.com/Superalgos/Superalgos into plugins-docs

This commit is contained in:
thaissmolina75 committed 2021-07-25 12:38:59 -04:00
commit 1ec02ea8c6
421 files changed
+850009 -6845

No files matched your search

+1
View File
@@ -11,3 +11,4 @@ Projects/Foundations/Icons/Thumbs.db
!uninstall-shortcut-windows.bat
*.exe
node_modules
launch.json
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

+85 -6
View File
@@ -833,9 +833,6 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE
} catch (err) {
console.log('[ERROR] httpInterface -> App -> Update -> Method call produced an error.')
console.log('[ERROR] httpInterface -> App -> Update -> err.stack = ' + err.stack)
console.log('[ERROR] httpInterface -> App -> Update -> commitMessage = ' + commitMessage)
console.log('[ERROR] httpInterface -> App -> Update -> username = ' + username)
console.log('[ERROR] httpInterface -> App -> Update -> token = ' + token)
let error = {
result: 'Fail Because',
@@ -892,9 +889,62 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE
} catch (err) {
console.log('[ERROR] httpInterface -> App -> Update -> Method call produced an error.')
console.log('[ERROR] httpInterface -> App -> Update -> err.stack = ' + err.stack)
console.log('[ERROR] httpInterface -> App -> Update -> commitMessage = ' + commitMessage)
console.log('[ERROR] httpInterface -> App -> Update -> username = ' + username)
console.log('[ERROR] httpInterface -> App -> Update -> token = ' + token)
let error = {
result: 'Fail Because',
message: err.message,
stack: err.stack
}
respondWithContent(JSON.stringify(error), httpResponse)
}
break
}
case 'Branch': {
try {
branch()
async function branch() {
let result = await doGit()
if (result.error === undefined) {
let customResponse = {
result: global.CUSTOM_OK_RESPONSE.result,
message: result
}
respondWithContent(JSON.stringify(customResponse), httpResponse)
} else {
let docs = {
project: 'Foundations',
category: 'Topic',
type: 'App Error - Could Not Get Current Branch',
anchor: undefined,
placeholder: {}
}
respondWithDocsObject(docs, error)
}
}
async function doGit() {
const simpleGit = require('simple-git');
const options = {
baseDir: process.cwd(),
binary: 'git',
maxConcurrentProcesses: 6,
}
const git = simpleGit(options)
try {
return await git.branch()
} catch (err) {
console.log('[ERROR] Error reading current branch.')
console.log(err.stack)
}
}
} catch (err) {
console.log('[ERROR] httpInterface -> App -> Update -> Method call produced an error.')
console.log('[ERROR] httpInterface -> App -> Update -> err.stack = ' + err.stack)
let error = {
result: 'Fail Because',
@@ -1183,6 +1233,35 @@ exports.newHttpInterface = function newHttpInterface(WEB_SERVER, DATA_FILE_SERVE
}
break
case 'SavePlugin':
getBody(processRequest)
async function processRequest(body) {
try {
let plugin = JSON.parse(body)
let project = requestParameters[2]
let folder = requestParameters[3]
let fileName = requestParameters[4]
let filePath = global.env.PATH_TO_PROJECTS + '/' + project + '/Plugins/' + folder
let fileContent = JSON.stringify(plugin, undefined, 4)
const fs = require('fs')
fs.writeFileSync(filePath + '/' + fileName + '.json', fileContent)
respondWithContent(JSON.stringify(global.DEFAULT_OK_RESPONSE), httpResponse)
} catch (err) {
console.log('[ERROR] httpInterface -> SavePlugin -> Method call produced an error.')
console.log('[ERROR] httpInterface -> SavePlugin -> err.stack = ' + err.stack)
console.log('[ERROR] httpInterface -> SavePlugin -> Params Received = ' + body)
let error = {
result: 'Fail Because',
message: err.message,
stack: err.stack
}
respondWithContent(JSON.stringify(error), httpResponse)
}
}
break
case 'Workspace.js':
{
let fs = require('fs')
+3 -3
View File
@@ -915,9 +915,9 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"ccxt": {
"version": "1.51.91",
"resolved": "https://registry.npmjs.org/ccxt/-/ccxt-1.51.91.tgz",
"integrity": "sha512-pomtW3aDy7oSOm+Y9XP4WAkPPx9oZNGjhzwPEXyMrNKsVrc7+deVq07rIS+m5UHUkRel6a4U2hUwnWHOxAQMuQ=="
"version": "1.51.98",
"resolved": "https://registry.npmjs.org/ccxt/-/ccxt-1.51.98.tgz",
"integrity": "sha512-3sgRDrOnD6IE06yGr+F0YcQh22eNyKiZ3nQP+QdZt8W/zUUsl4CaHT5I7Zqqz7ObKdv4YcdMCv8j9khTpBNz4w=="
},
"child_process": {
"version": "1.0.2",
+1 -1
View File
@@ -8,7 +8,7 @@
},
"dependencies": {
"@octokit/rest": "^18.0.12",
"ccxt": "^1.51.91",
"ccxt": "^1.51.98",
"child_process": "^1.0.2",
"open": "^6.4.0",
"rimraf": "^3.0.2",
@@ -56,100 +56,154 @@ function newEducationDocSpace() {
return thisObject
function initialize() {
thisObject.menuLabelsMap = new Map()
async function initialize() {
let promise = new Promise((resolve, reject) => {
setupSidePanelTab()
setUpMenuItemsMap()
setupUserLanguage()
setupActiveBranch()
setupContributionsBranch()
thisObject.menuLabelsMap = new Map()
thisObject.searchEngine = newFoundationsDocsSearchEngine()
thisObject.mainSearchPage = newFoundationsDocsMainSearchPage()
thisObject.searchResultsPage = newFoundationsDocsSearchResultsPage()
thisObject.documentPage = newFoundationsDocsDocumentPage()
thisObject.footer = newFoundationsDocsFooter()
thisObject.commandInterface = newFoundationsDocsCommmandInterface()
thisObject.contextMenu = newFoundationsDocsContextMenu()
setupSidePanelTab()
setUpMenuItemsMap()
setupUserLanguage()
thisObject.searchEngine.initialize()
thisObject.mainSearchPage.initialize()
thisObject.searchResultsPage.initialize()
thisObject.documentPage.initialize()
thisObject.footer.initialize()
thisObject.commandInterface.initialize()
thisObject.contextMenu.initialize()
thisObject.searchEngine = newFoundationsDocsSearchEngine()
thisObject.mainSearchPage = newFoundationsDocsMainSearchPage()
thisObject.searchResultsPage = newFoundationsDocsSearchResultsPage()
thisObject.documentPage = newFoundationsDocsDocumentPage()
thisObject.footer = newFoundationsDocsFooter()
thisObject.commandInterface = newFoundationsDocsCommmandInterface()
thisObject.contextMenu = newFoundationsDocsContextMenu()
isInitialized = true
thisObject.searchEngine.initialize()
thisObject.mainSearchPage.initialize()
thisObject.searchResultsPage.initialize()
thisObject.documentPage.initialize()
thisObject.footer.initialize()
thisObject.commandInterface.initialize()
thisObject.contextMenu.initialize()
function setupActiveBranch() {
/*
Getting the used preferred languague
*/
if (window.localStorage.getItem('Current Branch') !== null && window.localStorage.getItem('Current Branch') !== undefined && window.localStorage.getItem('Current Branch') !== 'undefined') {
UI.projects.education.spaces.docsSpace.currentBranch = window.localStorage.getItem('Current Branch')
} else {
window.localStorage.setItem('Current Branch', UI.projects.education.globals.docs.DEFAULT_CURRENT_BRANCH)
UI.projects.education.spaces.docsSpace.currentBranch = UI.projects.education.globals.docs.DEFAULT_CURRENT_BRANCH
setupCurrentBranch()
setupContributionsBranch()
isInitialized = true
UI.projects.foundations.utilities.statusBar.changeStatus("Setting up Docs Search Engine...")
setTimeout(setUpSearchEngine, 100)
function setUpSearchEngine() {
thisObject.searchEngine.setUpSearchEngine(whenFinished)
function whenFinished() {
resolve()
}
}
}
function setupContributionsBranch() {
/*
Getting the used preferred languague
*/
if (window.localStorage.getItem('Contributions Branch') !== null && window.localStorage.getItem('Contributions Branch') !== undefined && window.localStorage.getItem('Contributions Branch') !== 'undefined') {
UI.projects.education.spaces.docsSpace.contributionsBranch = window.localStorage.getItem('Contributions Branch')
} else {
window.localStorage.setItem('Contributions Branch', UI.projects.education.globals.docs.DEFAULT_CONTRIBUTIONS_BRANCH)
UI.projects.education.spaces.docsSpace.contributionsBranch = UI.projects.education.globals.docs.DEFAULT_CONTRIBUTIONS_BRANCH
}
}
function setupCurrentBranch() {
/*
Getting the currentBranch
*/
let workspace = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode
function setupUserLanguage() {
/*
Getting the used preferred languague
*/
if (window.localStorage.getItem('Docs Language') !== null && window.localStorage.getItem('Docs Language') !== undefined && window.localStorage.getItem('Docs Language') !== 'undefined') {
UI.projects.education.spaces.docsSpace.language = window.localStorage.getItem('Docs Language')
} else {
window.localStorage.setItem('Docs Language', UI.projects.education.globals.docs.DEFAULT_LANGUAGE)
UI.projects.education.spaces.docsSpace.language = UI.projects.education.globals.docs.DEFAULT_LANGUAGE
}
}
httpRequest(undefined, 'App/Branch', onResponse)
/*
Deleting what was is here because is not longer used...
*/
window.localStorage.removeItem('Current Branch')
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(workspace.payload, 'currentBranch', undefined)
function setupSidePanelTab() {
thisObject.sidePanelTab = newSidePanelTab()
thisObject.sidePanelTab.container.connectToParent(thisObject.container, false, false)
thisObject.sidePanelTab.initialize('right')
openingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('opening', onOpening)
closingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('closing', onClosing)
browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize)
}
function setUpMenuItemsMap() {
/*
Here we will put put all the menu item labels of all nodes at all
app schemas into a single map, that will allow us to know when a phrase
is a label of a menu and then change its style.
*/
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let project = PROJECTS_SCHEMA[i].name
let appSchemaArray = SCHEMAS_BY_PROJECT.get(project).array.appSchema
for (let j = 0; j < appSchemaArray.length; j++) {
let docsSchemaDocument = appSchemaArray[j]
if (docsSchemaDocument.menuItems === undefined) { continue }
for (let k = 0; k < docsSchemaDocument.menuItems.length; k++) {
let menuItem = docsSchemaDocument.menuItems[k]
thisObject.menuLabelsMap.set(menuItem.label, true)
function onResponse(err, data) {
/* Lets check the result of the call through the http interface */
data = JSON.parse(data)
if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.CUSTOM_OK_RESPONSE.result) {
let currentBranch = data.message.current
UI.projects.education.spaces.docsSpace.currentBranch = currentBranch
} else {
UI.projects.education.spaces.docsSpace.navigateTo(
data.docs.project,
data.docs.category,
data.docs.type,
data.docs.anchor,
undefined,
data.docs.placeholder
)
}
}
}
}
function setupContributionsBranch() {
/*
Getting the contributionsBranch
*/
let workspace = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode
let contributionsBranch = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(workspace.payload, 'contributionsBranch')
if (contributionsBranch === undefined) {
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(workspace.payload, 'contributionsBranch', UI.projects.education.globals.docs.DEFAULT_CONTRIBUTIONS_BRANCH)
UI.projects.education.spaces.docsSpace.contributionsBranch = UI.projects.education.globals.docs.DEFAULT_CONTRIBUTIONS_BRANCH
} else {
UI.projects.education.spaces.docsSpace.contributionsBranch = contributionsBranch
}
/*
Every time this setup occurs, we will automatically change to the contributionsBranch of the workspace.
*/
changeContributionsBranch(UI.projects.education.spaces.docsSpace.contributionsBranch, true)
/*
Deleting what was is here because is not longer used...
*/
window.localStorage.removeItem('Contributions Branch')
}
function setupUserLanguage() {
/*
Getting the used preferred languague
*/
let workspace = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode
let docsLanguage = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(workspace.payload, 'docsLanguage')
if (docsLanguage === undefined) {
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(workspace.payload, 'docsLanguage', UI.projects.education.globals.docs.DEFAULT_LANGUAGE)
UI.projects.education.spaces.docsSpace.language = UI.projects.education.globals.docs.DEFAULT_LANGUAGE
} else {
UI.projects.education.spaces.docsSpace.language = docsLanguage
}
/*
Deleting what was is here because is not longer used...
*/
window.localStorage.removeItem('Docs Language')
}
function setupSidePanelTab() {
thisObject.sidePanelTab = newSidePanelTab()
thisObject.sidePanelTab.container.connectToParent(thisObject.container, false, false)
thisObject.sidePanelTab.initialize('right')
openingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('opening', onOpening)
closingEventSubscriptionId = thisObject.sidePanelTab.container.eventHandler.listenToEvent('closing', onClosing)
browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize)
}
function setUpMenuItemsMap() {
/*
Here we will put put all the menu item labels of all nodes at all
app schemas into a single map, that will allow us to know when a phrase
is a label of a menu and then change its style.
*/
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let project = PROJECTS_SCHEMA[i].name
let appSchemaArray = SCHEMAS_BY_PROJECT.get(project).array.appSchema
for (let j = 0; j < appSchemaArray.length; j++) {
let docsSchemaDocument = appSchemaArray[j]
if (docsSchemaDocument.menuItems === undefined) { continue }
for (let k = 0; k < docsSchemaDocument.menuItems.length; k++) {
let menuItem = docsSchemaDocument.menuItems[k]
thisObject.menuLabelsMap.set(menuItem.label, true)
}
}
}
}
})
return promise
}
function finalize() {
@@ -180,21 +234,26 @@ function newEducationDocSpace() {
isInitialized = false
}
function reset() {
async function reset() {
finalize()
initialize()
await initialize()
}
function changeCurrentBranch(branch) {
function changeCurrentBranch(branch, doNotNavigate) {
httpRequest(undefined, 'App/Checkout/' + branch, onResponse)
UI.projects.education.spaces.docsSpace.navigateTo('Foundations', 'Topic', 'Switching Branches - Changing Current Branch')
if (doNotNavigate !== true) {
UI.projects.education.spaces.docsSpace.navigateTo('Foundations', 'Topic', 'Switching Branches - Changing Current Branch')
}
function onResponse(err, data) {
/* Lets check the result of the call through the http interface */
data = JSON.parse(data)
if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.DEFAULT_OK_RESPONSE.result) {
UI.projects.education.spaces.docsSpace.currentBranch = branch
window.localStorage.setItem('Current Branch', branch)
let workspace = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(workspace.payload, 'currentBranch', branch)
if (doNotNavigate === true) { return }
UI.projects.education.spaces.docsSpace.navigateTo('Foundations', 'Topic', 'Switching Branches - Current Branch Changed')
} else {
UI.projects.education.spaces.docsSpace.navigateTo(
@@ -209,17 +268,23 @@ function newEducationDocSpace() {
}
}
function changeContributionsBranch(branch) {
function changeContributionsBranch(branch, doNotNavigate) {
UI.projects.education.spaces.docsSpace.contributionsBranch = branch
window.localStorage.setItem('Contributions Branch', UI.projects.education.spaces.docsSpace.contributionsBranch)
UI.projects.education.spaces.docsSpace.navigateTo('Foundations', 'Topic', 'Switching Branches - Contributions Branch Changed')
let workspace = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(workspace.payload, 'contributionsBranch', branch)
if (doNotNavigate !== true) {
UI.projects.education.spaces.docsSpace.navigateTo('Foundations', 'Topic', 'Switching Branches - Contributions Branch Changed')
}
}
function changeLanguage(pLanguage) {
UI.projects.education.spaces.docsSpace.language = pLanguage
window.localStorage.setItem('Docs Language', UI.projects.education.spaces.docsSpace.language)
let languageLabel = UI.projects.education.utilities.languages.getLaguageLabel(UI.projects.education.spaces.docsSpace.language)
UI.projects.education.spaces.docsSpace.navigateTo('Foundations', 'Topic', 'Docs In ' + languageLabel)
let workspace = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(workspace.payload, 'docsLanguage', UI.projects.education.spaces.docsSpace.language)
}
function sharePage() {
@@ -356,6 +421,7 @@ function newEducationDocSpace() {
}
function getContainer(point, purpose) {
if (thisObject.sidePanelTab === undefined) { return }
let container
container = thisObject.sidePanelTab.getContainer(point, purpose)
@@ -17,7 +17,8 @@ function newEducationTutorialSpace() {
draw: draw,
getContainer: getContainer,
initialize: initialize,
finalize: finalize
finalize: finalize,
reset: reset
}
let TUTORIAL_NAME
@@ -45,37 +46,67 @@ function newEducationTutorialSpace() {
let tutorialDiv = document.getElementById('tutorialDiv')
let tutorialFormDiv = document.getElementById('tutorialFormDiv')
let htmlGif = document.createElement("IMG")
let currentGifName = 'Never Set'
let newGifName = 'Never Set'
let htmlImage = document.createElement("IMG")
let currentImageName = 'Never Set'
let newImageName = 'Never Set'
let newImageProject = 'Never Set'
let currentGifName
let newGifName
let currentImageName
let newImageName
let newImageProject
let currentConfig
let newConfig
let currentDocument
let newDocument
let resumeModeActivated // In this mode, we skip all the node which status is 'Done'
let lastExecutedAction = ''
let actionCounter = 0
let forcingFocus = false
let currentZoomStep = 0
let viewportCentered = false
let repositionAtTimeMachineCounter = 0
let positionAtNodeCounter = 0
let timeMachineKeyPressedCounter = 0
let keyPressedCounter = 0
let sliderCounter = 0
let changeNodeConfigCounter = 0
let changeNodeConfigCounterWithEval = 0
let documentationCounter = 0
let batchConfigChangesCounter = 0
let workspacesCounter = 0
let resumeModeActivated
let lastExecutedAction
let actionCounter
let forcingFocus
let currentZoomStep
let viewportCentered
let repositionAtTimeMachineCounter
let positionAtNodeCounter
let timeMachineKeyPressedCounter
let keyPressedCounter
let sliderCounter
let changeNodeConfigCounter
let changeNodeConfigCounterWithEval
let documentationCounter
let batchConfigChangesCounter
let workspacesCounter
return thisObject
function initialize() {
currentGifName = 'Never Set'
newGifName = 'Never Set'
currentImageName = 'Never Set'
newImageName = 'Never Set'
newImageProject = 'Never Set'
currentConfig
newConfig
currentDocument
newDocument
resumeModeActivated // In this mode, we skip all the node which status is 'Done'
lastExecutedAction = ''
actionCounter = 0
forcingFocus = false
currentZoomStep = 0
viewportCentered = false
repositionAtTimeMachineCounter = 0
positionAtNodeCounter = 0
timeMachineKeyPressedCounter = 0
keyPressedCounter = 0
sliderCounter = 0
changeNodeConfigCounter = 0
changeNodeConfigCounterWithEval = 0
documentationCounter = 0
batchConfigChangesCounter = 0
workspacesCounter = 0
browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize)
let workspace = UI.projects.foundations.spaces.designSpace.workspace
workspace.executeAction({ name: 'Play Tutorials', project: 'Foundations' })
isInitialized = true
}
@@ -86,10 +117,11 @@ function newEducationTutorialSpace() {
currentNode = undefined
navigationStack = undefined
tutorialDiv = undefined
tutorialFormDiv = undefined
image = undefined
gif = undefined
}
async function reset() {
finalize()
initialize()
}
function resize() {
@@ -1177,7 +1209,7 @@ function newEducationTutorialSpace() {
/* The current node is not referencing any page at the Docs */
return
}
let schemaDocument = SCHEMAS_BY_PROJECT.get(nodeConfig.docs.project).map.docsTutorialSchema.get(nodeConfig.docs.type)
if (schemaDocument === undefined) {
@@ -0,0 +1 @@
{"type":"Data Mine","name":"Barcelona","config":"{\n \"codeName\": \"Barcelona\"\n}","project":"Superalgos","sensorBots":[],"apiDataFetcherBots":[],"indicatorBots":[{"type":"Indicator Bot","name":"Koncorde","config":"{\n \"codeName\": \"Koncorde\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Multi-Time-Frame-Market","config":"{\n \"codeName\": \"Multi-Time-Frame-Market\",\n \"description\": \"Produces the Positives Volume Index\",\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"sleepWaitTime\": 3600000,\n \"comaWaitTime\": 86400000,\n \"framework\": {\n \"name\": \"Multi-Time-Frame-Market\"\n }\n}","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[{"type":"Output Dataset","name":"Multi-Time-Frame-Market Koncorde","project":"Superalgos","id":"ab0f392d-6026-43e9-8b61-4e92e88524c4","savedPayload":{"position":{"x":16599.51846545005,"y":17934.337475957647},"targetPosition":{"x":16788.314582765004,"y":18167.481264394737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Time-Frame-Market","id":"7efa0604-7f1c-49f1-86e8-0c9daed5a9a8"}}},{"type":"Output Dataset","name":"Multi-Time-Frame-Market Koncorde patterns","project":"Superalgos","id":"67eca77a-409c-400f-ba7b-2a5863f51698","savedPayload":{"position":{"x":16741.384243252935,"y":17871.174762216197},"targetPosition":{"x":16788.314582765004,"y":18167.481264394737},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Time-Frame-Market","id":"0a0bf5f9-f974-4954-bb86-a562e52ea6be"}}}],"outputDatasetFolders":[],"id":"25147868-75ac-4e91-9ac6-603e4c927339","savedPayload":{"position":{"x":16788.314582765004,"y":18167.481264394737},"targetPosition":{"x":16910.335575687743,"y":18441.544901687517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","project":"Superalgos","statusDependencies":[{"type":"Status Dependency","name":"","config":"{\n \"mainUtility\": \"Market Ending Point\"\n}","project":"Superalgos","id":"daf1efc3-abc3-466d-9e57-f61c97795e90","savedPayload":{"position":{"x":16830.22239084643,"y":18042.818742123207},"targetPosition":{"x":16941.69411466804,"y":18143.188333077036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"a0a61ba9-91cb-4ec7-92fe-134ff079de2d"}}},{"type":"Status Dependency","name":"","config":"{\n \"mainUtility\": \"Self Reference\"\n}","project":"Superalgos","id":"6ed24b0b-2357-4d08-aad5-4ab35c386869","savedPayload":{"position":{"x":16910.507361045376,"y":17996.466192966964},"targetPosition":{"x":16941.69411466804,"y":18143.188333077036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"77232d10-26e4-407e-9d71-c2e65e2b0adb"}}}],"dataDependencies":[{"type":"Data Dependency","name":"Candles Multi-Time-Frame-Market","project":"Superalgos","id":"b56e3866-b8be-4595-830c-9f10941fd8c3","savedPayload":{"position":{"x":17002.70461112941,"y":18006.156514430644},"targetPosition":{"x":16941.69411466804,"y":18143.188333077036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Time-Frame-Market","id":"2b03494a-67d6-47f1-89b6-53fc4c9116a8"}}},{"type":"Data Dependency","name":"Volumes Multi-Time-Frame-Market","project":"Superalgos","id":"2008bb63-8ba5-403e-b8be-92ced1ee6580","savedPayload":{"position":{"x":17071.597925235706,"y":18068.188333077036},"targetPosition":{"x":16941.69411466804,"y":18143.188333077036},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":2,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Dataset Definition","name":"Multi-Time-Frame-Market","id":"9bf0483c-4825-4a46-9cf4-1b5262579fc1"}}}],"dataMineDataDependencies":[],"id":"2db19ce5-b28f-4d91-9b9e-05861e3408f2","savedPayload":{"position":{"x":16941.69411466804,"y":18143.188333077036},"targetPosition":{"x":16910.335575687743,"y":18441.544901687517},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":true,"angleToParenLine truncated
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -1,6 +1,7 @@
{
"type": "Workspace",
"name": "API-Data-Fetcher-Bot-Demo",
"config": "{\n \"docsLanguage\": \"EN\",\n \"contributionsBranch\": \"develop\"\n}",
"rootNodes": [
{
"type": "Network",
@@ -929,7 +930,7 @@
"arrangementStyle": 0
},
"uiObject": {
"isRunning": true
"isRunning": false
},
"referenceParent": {
"type": "Data Mine",
@@ -2083,7 +2084,7 @@
"arrangementStyle": 0
},
"uiObject": {
"isRunning": true
"isRunning": false
},
"referenceParent": {
"type": "Market",
@@ -2112,7 +2113,7 @@
"arrangementStyle": 0
},
"uiObject": {
"isRunning": true
"isRunning": false
},
"referenceParent": {
"type": "Crypto Exchange",
@@ -2141,7 +2142,7 @@
"arrangementStyle": 0
},
"uiObject": {
"isRunning": true
"isRunning": false
},
"referenceParent": {
"type": "Project Definition",
@@ -2170,7 +2171,7 @@
"arrangementStyle": 0
},
"uiObject": {
"isRunning": true
"isRunning": false
}
}
},
@@ -9792,85 +9793,30 @@
"name": "New Plugin Data Mines",
"project": "Foundations",
"pluginFiles": [
{
"type": "Plugin File",
"name": "Masters",
"config": "{\n\"codeName\": \"\"\n}",
"project": "Foundations",
"pluginFilePosition": {
"type": "Plugin File Position",
"name": "Masters",
"project": "Foundations",
"id": "d5234bd2-ef4e-4856-a6a0-ce7659653a48",
"savedPayload": {
"position": {
"x": 18879.35218735615,
"y": 18688.55301821844
},
"targetPosition": {
"x": 30986.371225686038,
"y": 18236.288271084537
},
"floatingObject": {
"isPinned": true,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "ecc1a524-de9b-4e73-8874-b99a7ea0402b",
"savedPayload": {
"position": {
"x": 31374.357288332292,
"y": 18123.931117466833
},
"targetPosition": {
"x": 31496.37828125503,
"y": 18397.994754759613
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": true,
"angleToParent": 2,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
{
"type": "Plugin File",
"name": "Bollinger",
"config": "{\n\"codeName\": \"\"\n}",
"config": "{\"project\":\"Foundations\",\"fileName\":\"Bollinger\",\"folderName\":\"Data-Mines\",\"nodeType\":\"Data Mine\"}",
"project": "Foundations",
"pluginFilePosition": {
"type": "Plugin File Position",
"name": "Bollinger",
"project": "Foundations",
"id": "77c437a7-0ac2-40c1-aa84-6d48e46b287b",
"id": "75c333db-28b1-4c35-8a18-f1fad8d2b1f1",
"savedPayload": {
"position": {
"x": 34406.26298631758,
"y": 18688.60151122931
"x": 34398.489720814745,
"y": 18699.74774026896
},
"targetPosition": {
"x": 31558.751788500358,
"y": 18104.550474539472
"x": 31202.93400103489,
"y": 18335.621247514286
},
"floatingObject": {
"isPinned": true,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
@@ -9879,11 +9825,11 @@
}
}
},
"id": "cb988ae0-94c5-4afa-8425-0c64149613ce",
"id": "84c68fba-0d63-4064-a414-d951fec775e3",
"savedPayload": {
"position": {
"x": 31558.751788500358,
"y": 18104.550474539472
"x": 31202.93400103489,
"y": 18335.621247514286
},
"targetPosition": {
"x": 31496.37828125503,
@@ -9893,7 +9839,7 @@
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
@@ -9905,27 +9851,27 @@
{
"type": "Plugin File",
"name": "Candles",
"config": "{\n\"codeName\": \"\"\n}",
"config": "{\"project\":\"Foundations\",\"fileName\":\"Candles\",\"folderName\":\"Data-Mines\",\"nodeType\":\"Data Mine\"}",
"project": "Foundations",
"pluginFilePosition": {
"type": "Plugin File Position",
"name": "Candles",
"project": "Foundations",
"id": "433d2a13-18d4-4e92-b830-c93dfa571c11",
"id": "d905708f-d130-48e6-83b8-893d0949240c",
"savedPayload": {
"position": {
"x": 37747.067482786275,
"y": 18702.38150649338
"x": 37744.16120329444,
"y": 18702.53161753865
},
"targetPosition": {
"x": 31719.32172889825,
"y": 18197.255572851955
"x": 31465.019742274733,
"y": 18099.63818614913
},
"floatingObject": {
"isPinned": true,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
@@ -9934,11 +9880,11 @@
}
}
},
"id": "b9e0a7a6-35c0-4b5a-b07c-2cf97a252283",
"id": "c6e8a721-4e08-4a61-9a8f-bb2ea4733a55",
"savedPayload": {
"position": {
"x": 31719.32172889825,
"y": 18197.255572851955
"x": 31465.019742274733,
"y": 18099.63818614913
},
"targetPosition": {
"x": 31496.37828125503,
@@ -9948,7 +9894,62 @@
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
{
"type": "Plugin File",
"name": "Masters",
"config": "{\"project\":\"Foundations\",\"fileName\":\"Masters\",\"folderName\":\"Data-Mines\",\"nodeType\":\"Data Mine\"}",
"project": "Foundations",
"pluginFilePosition": {
"type": "Plugin File Position",
"name": "Masters",
"project": "Foundations",
"id": "06324e94-a092-4fb1-8811-e4d23b140776",
"savedPayload": {
"position": {
"x": 18872.50555584059,
"y": 18697.702768914136
},
"targetPosition": {
"x": 31770.44191854781,
"y": 18275.973761836874
},
"floatingObject": {
"isPinned": true,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "005d766a-e9dd-4812-bdd6-5abb58702c0c",
"savedPayload": {
"position": {
"x": 31770.44191854781,
"y": 18275.973761836874
},
"targetPosition": {
"x": 31496.37828125503,
"y": 18397.994754759613
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
@@ -9960,27 +9961,27 @@
{
"type": "Plugin File",
"name": "Messari",
"config": "{\n\"codeName\": \"\"\n}",
"config": "{\"project\":\"Foundations\",\"fileName\":\"Messari\",\"folderName\":\"Data-Mines\",\"nodeType\":\"Data Mine\"}",
"project": "Foundations",
"pluginFilePosition": {
"type": "Plugin File Position",
"name": "Messari",
"project": "Foundations",
"id": "0f932f30-69f3-453a-89ca-638cd74027a6",
"id": "ee208a33-8b70-49b5-ba65-3aabf048f402",
"savedPayload": {
"position": {
"x": 14004.091418475993,
"y": 18772.527676799018
"x": 13990.856645070347,
"y": 18779.88165004605
},
"targetPosition": {
"x": 31794.734849865512,
"y": 18366.636215779316
"x": 31697.11746316269,
"y": 18620.93820240283
},
"floatingObject": {
"isPinned": true,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
@@ -9989,11 +9990,11 @@
}
}
},
"id": "20f5e091-1f43-4947-9657-7655caf87a68",
"id": "44374a6e-682a-4ad5-97d5-46e4ae005c7e",
"savedPayload": {
"position": {
"x": 31794.734849865512,
"y": 18366.636215779316
"x": 31697.11746316269,
"y": 18620.93820240283
},
"targetPosition": {
"x": 31496.37828125503,
@@ -10003,7 +10004,7 @@
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
@@ -10026,7 +10027,7 @@
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"isCollapsed": true,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
@@ -10044,17 +10045,17 @@
{
"type": "Plugin File",
"name": "Messari",
"config": "{\n\"codeName\": \"\"\n}",
"config": "{\n \"project\": \"Foundations\",\n \"fileName\": \"Messari\",\n \"folderName\": \"API-Maps\",\n \"nodeType\": \"API Map\"\n}",
"project": "Foundations",
"pluginFilePosition": {
"type": "Plugin File Position",
"name": "Messari",
"project": "Foundations",
"id": "da790e41-0b29-41af-b5a0-f582fea8375d",
"id": "f096906c-1652-40ff-be83-c4cc3002ff91",
"savedPayload": {
"position": {
"x": 14002.262986317575,
"y": 10768.059102958174
"x": 13996.87828125503,
"y": 10769.475239300944
},
"targetPosition": {
"x": 31646.37828125503,
@@ -10073,7 +10074,7 @@
}
}
},
"id": "272f2cfc-7440-4da4-bb2b-6466aeff6582",
"id": "72c44c87-355e-4012-95e5-229ef5fada58",
"savedPayload": {
"position": {
"x": 31646.37828125503,
@@ -10110,7 +10111,7 @@
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"isCollapsed": true,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -5,6 +5,8 @@
"action": "Add UI Object",
"label": "Add Github API",
"relatedUiObject": "Github API",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "githubAPI",
"actionFunction": "payload.executeAction"
},
{
@@ -1,148 +1,148 @@
{
"type": "Crypto Exchange",
"menuItems": [
{
"action": "Configure Thise",
"actionFunction": "uiObject.configEditor.activate",
"label": "Configure",
"iconPathOn": "configuration",
"iconPathOff": "configuration"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "exchangeAssets",
"label": "Add Exchange Assets",
"relatedUiObject": "Exchange Assets",
"actionFunction": "payload.executeAction"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "exchangeMarkets",
"label": "Add Exchange Markets",
"relatedUiObject": "Exchange Markets",
"actionFunction": "payload.executeAction"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "exchangeAccounts",
"label": "Add Exchange Accounts",
"relatedUiObject": "Exchange Accounts",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"isTitleAllwaysVisible": true,
"addLeftIcons": true,
"level": 2,
"editors": {
"config": true
"type": "Crypto Exchange",
"menuItems": [
{
"action": "Configure Thise",
"actionFunction": "uiObject.configEditor.activate",
"label": "Configure",
"iconPathOn": "configuration",
"iconPathOff": "configuration"
},
"initialValues": {
"config": "{ \n\"codeName\": \"Type the name of the exchange\"\n}"
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "exchangeAssets",
"label": "Add Exchange Assets",
"relatedUiObject": "Exchange Assets",
"actionFunction": "payload.executeAction"
},
"attachingRules": {
"compatibleTypes": "->Crypto Exchanges->"
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "exchangeMarkets",
"label": "Add Exchange Markets",
"relatedUiObject": "Exchange Markets",
"actionFunction": "payload.executeAction"
},
"propertyNameAtParent": "exchanges",
"childrenNodesProperties": [
{
"name": "exchangeAssets",
"type": "node",
"childType": "Exchange Assets",
"autoAdd": true
},
{
"name": "exchangeMarkets",
"type": "node",
"childType": "Exchange Markets",
"autoAdd": true
},
{
"name": "exchangeAccounts",
"type": "node",
"childType": "Exchange Accounts",
"autoAdd": true
}
],
"alternativeIcons": [
{
"codeName": "binance",
"iconName": "binance"
},
{
"codeName": "binanceus",
"iconName": "binanceus"
},
{
"codeName": "bitfinex",
"iconName": "bitfinex"
},
{
"codeName": "bitmex",
"iconName": "bitmex"
},
{
"codeName": "bittrex",
"iconName": "bittrex"
},
{
"codeName": "coinbasepro",
"iconName": "coinbasepro"
},
{
"codeName": "ftx",
"iconName": "ftx"
},
{
"codeName": "hitbtc",
"iconName": "hitbtc"
},
{
"codeName": "kraken",
"iconName": "kraken"
},
{
"codeName": "kucoin",
"iconName": "kucoin"
},
{
"codeName": "liquid",
"iconName": "liquid"
},
{
"codeName": "luno",
"iconName": "luno"
},
{
"codeName": "lykke",
"iconName": "lykke"
},
{
"codeName": "okex",
"iconName": "okex"
},
{
"codeName": "okex5",
"iconName": "okex"
},
{
"codeName": "poloniex",
"iconName": "poloniex"
},
{
"codeName": "upbit",
"iconName": "upbit"
}
]
}
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "exchangeAccounts",
"label": "Add Exchange Accounts",
"relatedUiObject": "Exchange Accounts",
"actionFunction": "payload.executeAction"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"isTitleAllwaysVisible": true,
"addLeftIcons": true,
"level": 2,
"editors": {
"config": true
},
"initialValues": {
"config": "{ \n\"codeName\": \"Type the name of the exchange\",\n \n\"sandBox\": \"false\"\n}"
},
"attachingRules": {
"compatibleTypes": "->Crypto Exchanges->"
},
"propertyNameAtParent": "exchanges",
"childrenNodesProperties": [
{
"name": "exchangeAssets",
"type": "node",
"childType": "Exchange Assets",
"autoAdd": true
},
{
"name": "exchangeMarkets",
"type": "node",
"childType": "Exchange Markets",
"autoAdd": true
},
{
"name": "exchangeAccounts",
"type": "node",
"childType": "Exchange Accounts",
"autoAdd": true
}
],
"alternativeIcons": [
{
"codeName": "binance",
"iconName": "binance"
},
{
"codeName": "binanceus",
"iconName": "binanceus"
},
{
"codeName": "bitfinex",
"iconName": "bitfinex"
},
{
"codeName": "bitmex",
"iconName": "bitmex"
},
{
"codeName": "bittrex",
"iconName": "bittrex"
},
{
"codeName": "coinbasepro",
"iconName": "coinbasepro"
},
{
"codeName": "ftx",
"iconName": "ftx"
},
{
"codeName": "hitbtc",
"iconName": "hitbtc"
},
{
"codeName": "kraken",
"iconName": "kraken"
},
{
"codeName": "kucoin",
"iconName": "kucoin"
},
{
"codeName": "liquid",
"iconName": "liquid"
},
{
"codeName": "luno",
"iconName": "luno"
},
{
"codeName": "lykke",
"iconName": "lykke"
},
{
"codeName": "okex",
"iconName": "okex"
},
{
"codeName": "okex5",
"iconName": "okex"
},
{
"codeName": "poloniex",
"iconName": "poloniex"
},
{
"codeName": "upbit",
"iconName": "upbit"
}
]
}
@@ -16,6 +16,24 @@
"label": "Add Plugin File Position",
"relatedUiObject": "Plugin File Position"
},
{
"action": "Enable Saving With Workspace",
"actionFunction": "payload.executeAction",
"label": "Enable Saving With Workspace",
"relatedUiObject": "Plugin File"
},
{
"action": "Disable Saving With Workspace",
"actionFunction": "payload.executeAction",
"label": "Disable Saving With Workspace",
"relatedUiObject": "Plugin File"
},
{
"action": "Save Plugin",
"actionFunction": "payload.executeAction",
"label": "Save Plugin",
"relatedUiObject": "Plugin File"
},
{
"action": "Delete UI Object",
"askConfirmation": true,
@@ -9,7 +9,7 @@
"config": true
},
"initialValues": {
"config": "{\"node\":{\"distancePercentage\":60,\"radiusPercentage\":85,\"massPercentage\":100,\"animationSteps\":2,\"menuItem\":{\"widthPercentage\":100,\"heightPercentage\":60,\"radiusPercentage\":90}},\"physics\":false,\"detachUsingMouse\":false }"
"config": "{\"node\":{\"distancePercentage\":60,\"radiusPercentage\":85,\"massPercentage\":100,\"animationSteps\":2,\"menuItem\":{\"widthPercentage\":100,\"heightPercentage\":60,\"radiusPercentage\":90}},\"physics\":false,\"shortcuts\":{\"toggleMapMode\":\"M\",\"toggleDrawRelationshipLines\":\"R\",\"toggleDrawParentLines\":\"C\",\"saveWorkspace\":\"S\",\"adjustAspectRatio\":\"A\"}}"
},
"menuItems": [
{
@@ -21,6 +21,14 @@
"actionFunction": "UI.projects.foundations.spaces.designSpace.workspace.backup",
"ring": 1
},
{
"action": "Configure",
"label": "Configure",
"iconPathOn": "configuration",
"iconPathOff": "configuration",
"dontShowAtFullscreen": true,
"actionFunction": "uiObject.configEditor.activate"
},
{
"action": "Add Missing Workspace Projects",
"label": "Add Missing Projects",
@@ -31,6 +39,12 @@
"actionFunction": "payload.executeAction"
}
],
"initialValues": {
"config": "{\"docsLanguage\": \"EN\"}"
},
"editors": {
"config": true
},
"isTitleAllwaysVisible": true,
"addLeftIcons": false,
"isPinned": true,
@@ -52,7 +52,7 @@
},
{
"style": "Success",
"text": "Learn more about the Superalgos (SA) Token on the website."
"text": "Learn more about the Superalgos SA Token on the website."
}
]
}
@@ -1,83 +1,87 @@
{
"type": "Crypto Exchange",
"definition": {
"text": "A crypto exchange node holds the definitions of assets and markets in a specific exchange."
"type": "Crypto Exchange",
"definition": {
"text": "A crypto exchange node holds the definitions of assets and markets in a specific exchange."
},
"paragraphs": [
{
"style": "Block",
"text": "Configuring"
},
"paragraphs": [
{
"style": "Block",
"text": "Configuring"
},
{
"style": "Title",
"text": "Tested Exchanges",
"updated": 1615200855230
},
{
"style": "Text",
"text": "In theory, Superalgos supports dozens of exchanges. However, each exchange must go through a testing process, as not all of them conform to the standard proposed by the CCXT library.",
"updated": 1615201479524
},
{
"style": "List",
"text": "Binance Test Status",
"updated": 1615203667257
},
{
"style": "List",
"text": "Binance-US Test Status"
},
{
"style": "List",
"text": "Bitfinex Test Status"
},
{
"style": "List",
"text": "Bittrex Test Status"
},
{
"style": "List",
"text": "CoinbasePro Test Status"
},
{
"style": "List",
"text": "FTX Test Status",
"updated": 1615203669878
},
{
"style": "List",
"text": "Kraken Test Status",
"updated": 1615453046113
},
{
"style": "List",
"text": "Kucoin Test Status"
},
{
"style": "List",
"text": "Luno Test Status"
},
{
"style": "Title",
"text": "Crypto Exchange Configuration"
},
{
"style": "Text",
"text": "Each exchange may require a very specific configuration. This is determined during the exchange testing process. Consult the page of each exchange as listed above. If you are interested in testing a new exchange, go to the How to Test New Exchanges page.",
"updated": 1615201685376
},
{
"style": "Subtitle",
"text": "Properties",
"updated": 1609771684679
},
{
"style": "List",
"text": "codeName is the name of the exchange as handled in the code of the system."
},
{
"style": "List",
"text": "API holds a series of definitions used only in the case in which the sensor bot fetches trades (using the Historic-Trades process) instead of the OHLCV process that fetches one-minute candles and is the current default. In such a case, finding the right set of parameters to work with a specific exchange may be challenging, nd involves understanding how the exchanges API and the CCXT Library API work. In other words, there is no hard rule as of what each of the values should be. Determining each of this values requires exploring the exchange's API documentation, as well as the documentation of the CCXT Library."
}
]
}
{
"style": "Title",
"text": "Tested Exchanges",
"updated": 1615200855230
},
{
"style": "Text",
"text": "In theory, Superalgos supports dozens of exchanges. However, each exchange must go through a testing process, as not all of them conform to the standard proposed by the CCXT library.",
"updated": 1615201479524
},
{
"style": "List",
"text": "Binance Test Status",
"updated": 1615203667257
},
{
"style": "List",
"text": "Binance-US Test Status"
},
{
"style": "List",
"text": "Bitfinex Test Status"
},
{
"style": "List",
"text": "Bittrex Test Status"
},
{
"style": "List",
"text": "CoinbasePro Test Status"
},
{
"style": "List",
"text": "FTX Test Status",
"updated": 1615203669878
},
{
"style": "List",
"text": "Kraken Test Status",
"updated": 1615453046113
},
{
"style": "List",
"text": "Kucoin Test Status"
},
{
"style": "List",
"text": "Luno Test Status"
},
{
"style": "Title",
"text": "Crypto Exchange Configuration"
},
{
"style": "Text",
"text": "Each exchange may require a very specific configuration. This is determined during the exchange testing process. Consult the page of each exchange as listed above. If you are interested in testing a new exchange, go to the How to Test New Exchanges page.",
"updated": 1615201685376
},
{
"style": "Subtitle",
"text": "Properties",
"updated": 1609771684679
},
{
"style": "List",
"text": "codeName is the name of the exchange as handled in the code of the system."
},
{
"style": "List",
"text": "sandBox setting this parameter to true allows SuperAlgos to perform live trading on the exchanges sandbox or testnet if one is available."
},
{
"style": "List",
"text": "API holds a series of definitions used only in the case in which the sensor bot fetches trades (using the Historic-Trades process) instead of the OHLCV process that fetches one-minute candles and is the current default. In such a case, finding the right set of parameters to work with a specific exchange may be challenging, nd involves understanding how the exchanges API and the CCXT Library API work. In other words, there is no hard rule as of what each of the values should be. Determining each of this values requires exploring the exchange's API documentation, as well as the documentation of the CCXT Library."
}
]
}
@@ -17,7 +17,7 @@
},
{
"style": "Text",
"text": "The indicator bot node holds all definitions required for an indicator bot to function. Definitions are split between the definition of processes and products. Processes are algorithms that go through an input dataset, perform certain calculations, and produce an output. Products are the outcome of the work produced by these algorithms, in the form of ellaborate data sets."
"text": "The indicator bot node holds all definitions required for an indicator bot to function. Definitions are split between the definition of processes and products. Processes are algorithms that go through an input dataset, perform certain calculations, and produce an output. Products are the outcome of the work produced by these algorithms, in the form of elaborate data sets."
},
{
"style": "Text",
@@ -42,4 +42,4 @@
"text": "codeName is the name of the bot as used within the code of the system."
}
]
}
}
@@ -59,6 +59,45 @@
{
"style": "List",
"text": "detachUsingMouse defines if you can detach nodes from it's parent or reference parents only using the mouse (when true) or if you can not use the mouse for that and can only do it using the detach buttons on the icon's menu (when false)."
},
{
"style": "Subtitle",
"text": "Shorcut Properties"
},
{
"style": "Text",
"text": "Shorcuts are key stroke combinations that helps users execute certain actions very quickly. To execute a shorcut users need to simultaniously press CTRL + SHIFT + a pre-defined key.",
"updated": 1625419324367
},
{
"style": "Success",
"text": "Shorcuts default values can be seen below. You can modify those values by changing the Config Properties listed below.",
"updated": 1625419754545
},
{
"style": "List",
"text": "toggleMapMode defines which key will be used as a Shorcut for entering and leaving the Map Mode.",
"updated": 1625419803171
},
{
"style": "List",
"text": "toggleDrawRelationshipLines defines which key will be used as a Shorcut for turning on and off the drawing of Reference Lines.",
"updated": 1625419810253
},
{
"style": "List",
"text": "toggleDrawParentLines defines which key will be used as a Shorcut for turning on and off the drawing of Parent Lines.",
"updated": 1625419816654
},
{
"style": "List",
"text": "saveWorkspace defines which key will be used as a Shorcut for saving the Workspace.",
"updated": 1625419822252
},
{
"style": "List",
"text": "adjustAspectRation defines which key will be used as a Shorcut for forcing a Time Machine to adjust it's aspect ratio according to the size of the screen a user currently have.",
"updated": 1625419830418
}
]
}
@@ -80,7 +80,7 @@
},
{
"style": "Text",
"text": "You may choose to apply a similar reasoning as with the open stage target rate for limit orders, but there is some nouance to consider if you are using market orders."
"text": "You may choose to apply a similar reasoning as with the open stage target rate for limit orders, but there is some nuance to consider if you are using market orders."
},
{
"style": "Callout",
@@ -109,7 +109,7 @@
},
{
"style": "Text",
"text": "To solve the above issue, you may use a more ellaborate formula for the target rate in the close stage:"
"text": "To solve the above issue, you may use a more elaborate formula for the target rate in the close stage:"
},
{
"style": "Javascript",
@@ -143,4 +143,4 @@
"text": "As you see, flexibility is a key design feature in Superalgos."
}
]
}
}
@@ -0,0 +1,85 @@
{
"topic": "App Commands Errors",
"pageNumber": "3",
"type": "App Error - Could Not Get Current Branch",
"definition": {
"text": "There was a problem trying to get the Current Branch. Check the console for errors.",
"updated": 1611129344277
},
"paragraphs": [
{
"style": "Success",
"text": "Check for the following section for details on what may have happened. After you fix the issue, you may try again.",
"updated": 1611152967185
},
{
"style": "Title",
"text": "Error Info",
"updated": 1611154641024
},
{
"style": "Text",
"text": "In the following section, you will find the information recorded when the error occurred."
},
{
"style": "Note",
"text": "You will only see the information if you opened this page as a result of the error actually occurring.",
"updated": 1611151375974
},
{
"style": "Subtitle",
"text": "Error Message"
},
{
"style": "Text",
"text": "The following is the Error Message of the Exception that occured at the Client:",
"updated": 1611151299633
},
{
"style": "Placeholder",
"text": "errorMessage"
},
{
"style": "Subtitle",
"text": "Error Stack"
},
{
"style": "Text",
"text": "The following is the Error Stack of the Exception that occured at the Client:",
"updated": 1611151427220
},
{
"style": "Placeholder",
"text": "errorStack"
},
{
"style": "Subtitle",
"text": "Error Code"
},
{
"style": "Text",
"text": "The following is the Error Code of the Exception that occured at the Client:",
"updated": 1611151443562
},
{
"style": "Placeholder",
"text": "errorCode"
},
{
"style": "Subtitle",
"text": "Error Details"
},
{
"style": "Text",
"text": "The following are all the Error details of the Exception that occured at the Client:"
},
{
"style": "Placeholder",
"text": "errorDetails"
},
{
"style": "Text",
"text": ""
}
]
}
@@ -9,7 +9,7 @@
"paragraphs": [
{
"style": "Success",
"text": "Also remeber that if you have tasks running at the same machine where the Superalgos Client is, they are still running the previous branch code. You need to restart them too after you restart the client.",
"text": "Also remember that if you have tasks running at the same machine where the Superalgos Client is, they are still running the previous branch code. You need to restart them too after you restart the client.",
"updated": 1610543634663
},
{
@@ -22,4 +22,4 @@
"updated": 1621288204638
}
]
}
}
@@ -104,7 +104,41 @@
},
{
"style": "Javascript",
"text": "candle.close = candle.open (neutral candle)"
"text": "candle.close = candle.open (neutral candle)",
"updated": 1625193523044
},
{
"style": "Text",
"text": "Full example:",
"updated": 1625193592583
},
{
"style": "Javascript",
"text": "chart.at01hs.candle.close",
"updated": 1625193572334
},
{
"style": "Table",
"text": "| Product Name | Product Variable | Property Variables |\n| Candles | candles | |",
"updated": 1625193681925
},
{
"style": "Text",
"text": "The candles property returns an array of all candles that have been loaded into memory. You can access specific candles using it's index. ",
"updated": 1625193832157
},
{
"style": "Text",
"text": "For example:"
},
{
"style": "Javascript",
"text": "chart.at01hs.candles[1]"
},
{
"style": "Text",
"text": "From there you may access the specific data held within each candle.",
"updated": 1625193896081
},
{
"style": "Subtitle",
@@ -114,6 +114,50 @@
"style": "Text",
"text": "The final step is turning the object-formatted records back into a minimized array format, and saving the corresponding files in the dataset."
},
{
"style": "Title",
"text": "Appendix: Building 2 Interdependent Indicators"
},
{
"style": "Text",
"text": "Let's say you built indicator1 with product A that depends on Indicator Candles Volumens, product Candles, and you are building indicator2, product B that depends on indicator1 product A."
},
{
"style": "Text",
"text": "When you wrote the code for Indicator 1 Product A, you were using the syntax:"
},
{
"style": "Text",
"text": "variable property1 = record.current.open"
},
{
"style": "Text",
"text": "Why? Because Indicator 1 depends on Candles Volumens, produc Candles, and each candle has a property called open, and since product Candles is the only data dependency, it is then also the main dependency and then it will be served to you inside the record object for your convenience."
},
{
"style": "Text",
"text": "You could also have done"
},
{
"style": "Text",
"text": "variable property1 = products.candles[index] but that is more difficult because you don't really know which index you are at at any given moment in time. It is best and easier to use the record object. The array is for very advanced users."
},
{
"style": "Text",
"text": "Then you want to write the code for indicator 2, product B, you already declared Indicator 1, Product A as the only data dependency. "
},
{
"style": "Text",
"text": "Since Indicator1 product A is the only data dependency of indicator 2, then it is also the main dependency, which means that for building indicator 2, the Data Building Process will iterate over every element of Indicator 1 in this case (not candles because that is not a dependency at all)."
},
{
"style": "Text",
"text": "In the same way that you did before, you will write code like this:"
},
{
"style": "Text",
"text": "variable propertyX = record.current.property1 (that means the property 1 of Product A of Indicator 1) "
},
{
"style": "Text",
"text": ""
@@ -42,7 +42,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/0_download-visual-studio.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/0_download-visual-studio.png",
"updated": 1623414213827
},
{
@@ -51,7 +51,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/1_open-explorer.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/1_open-explorer.png",
"updated": 1623407107099
},
{
@@ -65,12 +65,12 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/2_open-folder.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/2_open-folder.png",
"updated": 1623407112534
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/3_taskserver-folder.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/3_taskserver-folder.png",
"updated": 1623407118113
},
{
@@ -84,12 +84,12 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/4_add-folder.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/4_add-folder.png",
"updated": 1623407412773
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/5_projects-folder.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/5_projects-folder.png",
"updated": 1623407419399
},
{
@@ -99,7 +99,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/6_explorer-folders.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/6_explorer-folders.png",
"updated": 1623408036777
},
{
@@ -109,7 +109,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/7_save-workspace.png"
"text": "PNGs/Foundations/Docs/debugging-your-indicator/7_save-workspace.png"
},
{
"style": "Text",
@@ -28,7 +28,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/8_locate-singlemarket-in-tree.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/8_locate-singlemarket-in-tree.png",
"updated": 1623409023676
},
{
@@ -43,7 +43,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/9_find-line-for-breakpoint.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/9_find-line-for-breakpoint.png",
"updated": 1623409045497
},
{
@@ -36,7 +36,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/10_node-run.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/10_node-run.png",
"updated": 1623409808656
},
{
@@ -51,7 +51,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/11_start-debugging.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/11_start-debugging.png",
"updated": 1623409861513
},
{
@@ -61,7 +61,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/12_run-and-debug.png"
"text": "PNGs/Foundations/Docs/debugging-your-indicator/12_run-and-debug.png"
},
{
"style": "Text",
@@ -74,7 +74,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/13_network.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/13_network.png",
"updated": 1623410476464
},
{
@@ -89,12 +89,12 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/14_expand-data-tasks.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/14_expand-data-tasks.png",
"updated": 1623410569919
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/15_debug-your-indicator-task.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/15_debug-your-indicator-task.png",
"updated": 1623410589000
},
{
@@ -104,12 +104,12 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/16_run-ohlcvs.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/16_run-ohlcvs.png",
"updated": 1623411034335
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/17_run-dependencies.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/17_run-dependencies.png",
"updated": 1623411039717
},
{
@@ -119,7 +119,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/18_check-debug-terminal.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/18_check-debug-terminal.png",
"updated": 1623411066811
},
{
@@ -40,12 +40,12 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/19_breaking-point-indication.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/19_breaking-point-indication.png",
"updated": 1623411413725
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/20_stopped-at-breaking-point.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/20_stopped-at-breaking-point.png",
"updated": 1623411419203
},
{
@@ -62,7 +62,7 @@
},
{
"style": "Png",
"text": "PNGs/Superalgos/Docs/debugging-your-indicator/21_zoomed-in-getting-values.png",
"text": "PNGs/Foundations/Docs/debugging-your-indicator/21_zoomed-in-getting-values.png",
"updated": 1623411423507
},
{
@@ -160,8 +160,8 @@
},
{
"style": "Javascript",
"text": "productName.[tradingEngine.tradingCurrent.tradingEpisode.candle.index.value-n].propertyName",
"updated": 1616079715540
"text": "productPluralVariable[tradingEngine.tradingCurrent.tradingEpisode.candle.index.value-n].propertyName",
"updated": 1624868076284
},
{
"style": "Text",
@@ -175,8 +175,8 @@
},
{
"style": "Javascript",
"text": "chart.at01hs.candle.[tradingEngine.tradingCurrent.tradingEpisode.candle.index.value-5].max",
"updated": 1616079725136
"text": "chart.at01hs.candles[tradingEngine.tradingCurrent.tradingEpisode.candle.index.value-5].max",
"updated": 1624868093927
},
{
"style": "Text",
@@ -220,7 +220,7 @@
},
{
"style": "Important",
"text": "If you backup a plugin structure and the throw it again into the workspace it will not be considered a plugin, bacuase it was not loaded as part of the mechanism defined by the Pluigins hierarchy, which means that it will be considered a non-plugin and become part of your workspace. The same happens when you drag and drop any file backed up, being a plugin or not. It will become part of your workspace and saved together with the workspace. Only plugin files loaded by the system when the workspace is loaded are considered plugins. Remeber you tell the system which plugins to load at the Plugins Hiererchy."
"text": "If you backup a plugin structure and the throw it again into the workspace it will not be considered a plugin, bacuase it was not loaded as part of the mechanism defined by the Pluigins hierarchy, which means that it will be considered a non-plugin and become part of your workspace. The same happens when you drag and drop any file backed up, being a plugin or not. It will become part of your workspace and saved together with the workspace. Only plugin files loaded by the system when the workspace is loaded are considered plugins. Remember you tell the system which plugins to load at the Plugins Hiererchy."
},
{
"style": "Text",
@@ -231,4 +231,4 @@
"text": ""
}
]
}
}
@@ -5,7 +5,7 @@
"definition": {
"text": "A typical case is when you wish to introduce changes to a strategy shipping with the system to start with a proven setup!",
"icon": {
"name": "trading-system",
"name": "Trading/trading-system",
"project": "Foundations"
},
"updated": 1615995229226,
@@ -6,7 +6,7 @@
"text": "By default, nodes are locked to a rotational symmetry around their parent node. The symmetry may span 360 degrees or less, depending on the setting!",
"updated": 1615316869620,
"icon": {
"name": "set-angle-to-parent-node-to-360-degrees",
"name": "Set/set-angle-to-parent-node-to-360-degrees",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "When all offspring nodes are set to 180 degrees angle, each node takes a slot in a fraction of a circumference spanning 180 degrees, normal to the parent.",
"updated": 1615319473489,
"icon": {
"name": "set-angle-to-parent-node-to-180-degrees",
"name": "Set/set-angle-to-parent-node-to-180-degrees",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "Notice how you changed the Angle to Parent setting on different siblings and each of them reacted to the new setting independently from the rest!",
"updated": 1615319889017,
"icon": {
"name": "set-angle-to-parent-node-to-90-degrees",
"name": "Set/set-angle-to-parent-node-to-90-degrees",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "The next option in the menu controls the distance from the node to its parent. Clicking on the button cycles through options.",
"icon": {
"name": "set-distance-to-parent-node-to-one",
"name": "Set/set-distance-to-parent-node-to-one",
"project": "Foundations"
},
"updated": 1615474588252,
@@ -5,7 +5,7 @@
"definition": {
"text": "Try the different distance settings of the Lightning Strike Trading System Reference node! Go ahead! Click the tape button!",
"icon": {
"name": "trading-system-reference",
"name": "Trading/trading-system-reference",
"project": "Foundations"
},
"updated": 1615476811627,
@@ -6,7 +6,7 @@
"text": "The reason why the distance to the parent node is relative to the distance of the parent to its parent is so that you may affect long structures of nodes!",
"updated": 1615477794893,
"icon": {
"name": "set-distance-to-parent-node-to-one-and-a-half",
"name": "Set/set-distance-to-parent-node-to-one-and-a-half",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "The button cycles through several arrangement options that affect where a node is placed in relation to its parent.",
"icon": {
"name": "set-node-arrangement-to-concave",
"name": "Set/set-node-arrangement-to-concave",
"project": "Foundations"
},
"updated": 1615491939732,
@@ -6,7 +6,7 @@
"text": "If you experiment with this feature, you will notice that the behavior of each of the settings is not clear or predictable.",
"updated": 1615492937986,
"icon": {
"name": "set-node-arrangement-to-concave",
"name": "Set/set-node-arrangement-to-concave",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "Let's say you want to test a strategy with different sets of parameters, so you take a backup of the Trading Parameters node!",
"updated": 1615571330616,
"icon": {
"name": "hand-drag",
"name": "Mouse/hand-drag",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "Now we need to attach the backup of the Trading Parameters node to the Backtesting Session. How do we do that?",
"icon": {
"name": "mouse-right-click",
"name": "Mouse/mouse-right-click",
"project": "Foundations"
},
"updated": 1615573035743,
@@ -6,7 +6,7 @@
"text": "Notice the two nodes under the Backtesting Session: Trading System Reference and Trading Engine Reference. Why do we need these nodes?",
"updated": 1615798435799,
"icon": {
"name": "trading-system-reference",
"name": "Trading/trading-system-reference",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "When you hover the mouse pointer over a node with an outgoing reference, the reference becomes visible.",
"icon": {
"name": "key-r",
"name": "Key/key-r",
"project": "Foundations"
},
"updated": 1615804514428,
@@ -6,7 +6,7 @@
"text": "What if the nodes are far away from each other, maybe even in different hierarchies? Watch the video to learn a few tricks!",
"updated": 1616098998366,
"icon": {
"name": "mouse-right-click",
"name": "Mouse/mouse-right-click",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "If you haven't yet, go ahead and establish a reference from the Trading System Reference to the Lightning Strike Trading System!",
"updated": 1615808208398,
"icon": {
"name": "trading-system",
"name": "Trading/trading-system",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "Pretty much like with Node Attaching Rules, nodes that may establish references also have rules in that regard.",
"icon": {
"name": "trading-system-reference",
"name": "Trading/trading-system-reference",
"project": "Foundations"
},
"updated": 1615809225061,
@@ -6,7 +6,7 @@
"text": "I hope you got to grasp the intricacies of backups and how references are affected in each particular restoration case!",
"updated": 1615831565379,
"icon": {
"name": "docs-warning-style",
"name": "Docs/docs-warning-style",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "Go to your File Explorer app and look for the following paths relative to the root Superalgos folder...",
"icon": {
"name": "plugins",
"name": "Plugins/plugins",
"project": "Foundations"
},
"updated": 1615906049600,
@@ -6,7 +6,7 @@
"text": "Plugins are data structures that ship with the system and that you may call into any workspace using the Plugins hierarchy.",
"updated": 1615914003358,
"icon": {
"name": "plugins",
"name": "Plugins/plugins",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "Here's the crazy bit... the Plugin File Position node determines where in the workspace the plugin is placed!",
"updated": 1615921131447,
"icon": {
"name": "plugin-file-position",
"name": "Plugins/plugin-file-position",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "To place a plugin in a workspace you must select the option to add the missing plugins on the node of the matching type!",
"icon": {
"name": "plugin-trading-systems",
"name": "Plugins/plugin-trading-systems",
"project": "Foundations"
},
"updated": 1615925984822,
@@ -5,7 +5,7 @@
"definition": {
"text": "Remember I said that the plugin file is loaded every time the workspace is loaded? This feature has an immediate consequence...",
"icon": {
"name": "bullet-error",
"name": "Bullet/bullet-error",
"project": "Foundations"
},
"updated": 1615978752612,
@@ -5,7 +5,7 @@
"definition": {
"text": "The data you download from exchanges and process with indicators is available across the board, accessible from any workspace and strategy.",
"icon": {
"name": "dataset-definition",
"name": "Data/dataset-definition",
"project": "Foundations"
},
"updated": 1616174427620,
@@ -5,7 +5,7 @@
"definition": {
"text": "You may work with any of the markets listed at the exchange! Take a look at the setup in the Exchange Markets node!",
"icon": {
"name": "market",
"name": "Market/market",
"project": "Foundations"
},
"updated": 1616176775093,
@@ -6,7 +6,7 @@
"text": "Indicators are built by the Community! Usually, a developer will build a few indicators he or she needs, and contribute them to the project in a new Data Mine!",
"updated": 1616235133472,
"icon": {
"name": "data-mine",
"name": "Data/data-mine",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "Are you wondering how to get data from sources other than exchanges in CCXT? Messari? Twitter? We've got you covered!",
"updated": 1622645027378,
"icon": {
"name": "api-map",
"name": "Api/api-map",
"project": "Foundations"
}
},
@@ -5,7 +5,7 @@
"definition": {
"text": "The Community may also contribute Trading Systems! At this point, there're only a few, but we hope more will emerge soon!",
"icon": {
"name": "trading-system",
"name": "Trading/trading-system",
"project": "Foundations"
},
"updated": 1616235875824,
@@ -6,7 +6,7 @@
"text": "Congratulations! You've graduated from your Basic Education and are ready to move on to more advanced stuff!",
"updated": 1616262672256,
"icon": {
"name": "trading-strategy",
"name": "Trading/trading-strategy",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "Let's talk about my friend, the search box in the Docs. She has a bit of a double life: she searches, but also commands!",
"updated": 1616756994691,
"icon": {
"name": "strategy-manage-stage",
"name": "Strategy/strategy-manage-stage",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "Superalgos is free for everyone because we want your help! We want the best minds in the space to help us build the ultimate trading automation platform!",
"icon": {
"name": "nodes-highlights",
"name": "Nodes/nodes-highlights",
"project": "Foundations"
},
"updated": 1610719931963,
@@ -6,7 +6,7 @@
"text": "Free-riding is not cool! We know that once you start contributing, you will inspire more people to follow your lead!",
"updated": 1619786483852,
"icon": {
"name": "bullet-error",
"name": "Bullet/bullet-error",
"project": "Foundations"
},
"translations": [
@@ -26,7 +26,7 @@
"translations": [
{
"language": "IT",
"text": "Il progetto ha implementato un buon incentivo per promuovere il contributo, verso una collaborazione globale. Stiamo distribuendo il Superalgos (SA) Token, in esclusiva, a chi contribuisce al progetto!",
"text": "Il progetto ha implementato un buon incentivo per promuovere il contributo, verso una collaborazione globale. Stiamo distribuendo il Superalgos SA Token, in esclusiva, a chi contribuisce al progetto!",
"updated": 1619633002722,
"style": "Text"
}
@@ -34,7 +34,7 @@
},
{
"style": "Link",
"text": "Learn more about the Superalgos (SA) Token!->superalgos.org/token-overview.shtml"
"text": "Learn more about the Superalgos SA Token!->superalgos.org/token-overview.shtml"
},
{
"style": "Success",
@@ -5,7 +5,7 @@
"definition": {
"text": "There are a few things you should consider every time you switch branches! Let's go through a quick list before you proceed!",
"icon": {
"name": "bullet-warning",
"name": "Bullet/bullet-warning",
"project": "Foundations"
},
"updated": 1618147991903,
@@ -5,7 +5,7 @@
"definition": {
"text": "Now that everything's clear, let's do the switch and get ready for what comes next!",
"icon": {
"name": "docs-success-style",
"name": "Docs/docs-success-style",
"project": "Foundations"
},
"updated": 1617019411568,
@@ -34,8 +34,8 @@
},
{
"style": "Javascript",
"text": "docs.add Review to Superalgos: Superalgos Project Review->Superalgos Review - Your Review Title",
"updated": 1616878234259
"text": "docs.add Review to Foundations: Superalgos Project Review->Superalgos Review - Your Review Title",
"updated": 1625193020331
},
{
"style": "List",
@@ -5,7 +5,7 @@
"definition": {
"text": "If you didn't mess up the command, you should get a new page with the title you set, an invitation to write a summary, and more instructions below!",
"icon": {
"name": "docs-action-edit-paragraph",
"name": "Docs/docs-action-edit-paragraph",
"project": "Foundations"
},
"updated": 1616875304376,
@@ -5,7 +5,7 @@
"definition": {
"text": "I'll give you a few pointers on how to edit the page! Right-click on a paragraph to get the styles menu. The pencil starts edit mode...",
"icon": {
"name": "docs-action-edit-paragraph",
"name": "Docs/docs-action-edit-paragraph",
"project": "Foundations"
},
"updated": 1616880288897,
@@ -6,7 +6,7 @@
"text": "These comments about your first impressions on Superalgos are your first contribution, and for that we thank you!",
"updated": 1610735268141,
"icon": {
"name": "bullet-warning",
"name": "Bullet/bullet-warning",
"project": "Foundations"
},
"translations": [
@@ -34,7 +34,7 @@
},
{
"style": "Note",
"text": "Contributions earn you <a href=\"https://superalgos.org/token-overview.shtml\" target=\"_blank\" style=\"color:blue;\">Superalgos (SA) Tokens</a> and are subject to the terms of the <a href=\"https://github.com/Superalgos/Superalgos/blob/master/LICENSE\" target=\"_blank\" style=\"color:blue;\">Apache Licence 2.0</a>. In short, Contributors provide an express grant of copyright/patent rights.",
"text": "Contributions earn you <a href=\"https://superalgos.org/token-overview.shtml\" target=\"_blank\" style=\"color:blue;\">Superalgos SA Tokens</a> and are subject to the terms of the <a href=\"https://github.com/Superalgos/Superalgos/blob/master/LICENSE\" target=\"_blank\" style=\"color:blue;\">Apache Licence 2.0</a>. In short, Contributors provide an express grant of copyright/patent rights.",
"updated": 1610963383947,
"translations": [
{
@@ -38,7 +38,7 @@
},
{
"style": "Success",
"text": "If for any reason you loose sight of the page, run the docs.reindex command and search for the title you gave it while adding it! You may also use the BACK button on the footer of the page!",
"text": "If for any reason you lose sight of the page, run the docs.reindex command and search for the title you gave it while adding it! You may also use the BACK button on the footer of the page!",
"updated": 1610983878542,
"translations": [
{
@@ -5,7 +5,7 @@
"definition": {
"text": "Let me make a quick pause to point out something important regarding the safety of your keys and tokens...",
"icon": {
"name": "exchange-account-key",
"name": "Exchange/exchange-account-key",
"project": "Foundations"
},
"updated": 1610818135402,
@@ -5,7 +5,7 @@
"definition": {
"text": "Most files within the Superalgos folder are subject to be modified and contributed to the project! That includes code, images, documentation, etc.",
"icon": {
"name": "dataset",
"name": "Data/dataset",
"project": "Foundations"
},
"updated": 1610823292611,
@@ -6,7 +6,7 @@
"text": "Let's get on with the task at hand! Copy the command below, paste it on the search/command box, and hit Enter!",
"updated": 1610912478164,
"icon": {
"name": "docs-json-code-style",
"name": "Docs/docs-json-code-style",
"project": "Foundations"
},
"translations": [
@@ -6,7 +6,7 @@
"text": "This is awesome! You are already helping the project! We are grateful for your first contribution and hope there's more to come!",
"updated": 1617031656299,
"icon": {
"name": "docs-success-style",
"name": "Docs/docs-success-style",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "Let’s build the mother of all trading strategies: The Moving Average Cross!",
"icon": {
"name": "tutorial",
"name": "Tutorial/tutorial",
"project": "Foundations"
},
"updated": 1614275495850,
@@ -6,7 +6,7 @@
"text": "Workspaces can be changed!",
"updated": 1614241100778,
"icon": {
"name": "layer",
"name": "Layer/layer",
"project": "Foundations"
},
"translations": [
@@ -5,7 +5,7 @@
"definition": {
"text": "Not only Workspaces can be modified",
"icon": {
"name": "data-mine",
"name": "Data/data-mine",
"project": "Foundations"
},
"updated": 1614241455319,
@@ -5,7 +5,7 @@
"definition": {
"text": "Let's build the mother of all strategies!",
"icon": {
"name": "strategy",
"name": "Strategy/strategy",
"project": "Foundations"
},
"updated": 1614241902261,
@@ -5,7 +5,7 @@
"definition": {
"text": "Trading System is already set up. Let's have a look!",
"icon": {
"name": "trading-system-reference",
"name": "Trading/trading-system-reference",
"project": "Foundations"
},
"updated": 1614242955916,
@@ -5,7 +5,7 @@
"definition": {
"text": "The Open Stage is where bot take position!",
"icon": {
"name": "open-stage",
"name": "Open/open-stage",
"project": "Foundations"
},
"updated": 1614260398081,
@@ -5,7 +5,7 @@
"definition": {
"text": "The Close Stage is in charge of closing the trade",
"icon": {
"name": "close-stage",
"name": "Close/close-stage",
"project": "Foundations"
},
"updated": 1614261551174,
@@ -5,7 +5,7 @@
"definition": {
"text": "Strategy is defined!",
"icon": {
"name": "announcement",
"name": "Announcement/announcement",
"project": "Foundations"
},
"updated": 1614262144926,
@@ -5,7 +5,7 @@
"definition": {
"text": "Chances are you already have some data mined!",
"icon": {
"name": "data-tasks",
"name": "Data/data-tasks",
"project": "Foundations"
},
"updated": 1614267263084,
@@ -5,7 +5,7 @@
"definition": {
"text": "Enjoy your backtest!",
"icon": {
"name": "charting-space",
"name": "Charting-space/charting-space",
"project": "Foundations"
},
"updated": 1614269880685,
@@ -5,7 +5,7 @@
"definition": {
"icon": {
"project": "Foundations",
"name": "market"
"name": "Market/market"
},
"text": "This tutorial walks you through the process of setting up a new Market on which to run data mining and trading operations."
},
Loaded 100 of 421 files, more files were not shown because too many files have changed in this diff. Show more