Merge remote-tracking branch 'superalgos/develop' into develop

This commit is contained in:
Loui Molina committed 2021-11-30 19:53:35 -03:00
commit d2c15d88d7
277 files changed
+240296 -19153

No files matched your search

+12 -4
View File
@@ -58,13 +58,21 @@ exports.newDesktopRoot = function newDesktopRoot() {
/*
Setting up Secrets.
*/
SA.secrets = {
array: require('./My-Secrets/Secrets.json').secrets,
map: new Map()
try {
SA.secrets = {
array: require('./My-Secrets/Secrets.json').secrets,
map: new Map()
}
} catch (err) {
SA.secrets = {
array: [],
map: new Map()
}
}
for (let i = 0; i < SA.secrets.array.length; i++) {
let secret = SA.secrets.array[i]
SA.secrets.map.set (secret.nodeCodeName, secret)
SA.secrets.map.set(secret.nodeCodeName, secret)
}
run()
+12 -4
View File
@@ -47,7 +47,7 @@ exports.newNetworkRoot = function newNetworkRoot() {
fs: require('fs'),
path: require('path'),
util: require('util'),
http: require('http'),
http: require('http'),
nodeFetch: require('node-fetch'),
web3: require('web3'),
ws: require('ws'),
@@ -56,10 +56,18 @@ exports.newNetworkRoot = function newNetworkRoot() {
/*
Setting up Secrets.
*/
SA.secrets = {
array: require('./My-Secrets/Secrets.json').secrets,
map: new Map()
try {
SA.secrets = {
array: require('./My-Secrets/Secrets.json').secrets,
map: new Map()
}
} catch (err) {
SA.secrets = {
array: [],
map: new Map()
}
}
for (let i = 0; i < SA.secrets.array.length; i++) {
let secret = SA.secrets.array[i]
SA.secrets.map.set(secret.nodeCodeName, secret)
+105
View File
@@ -0,0 +1,105 @@
----- Changes made outside of /Projects/Portfolio-Management/ -----
Projects/ProjectsSchema.json:
cp Algorithmic-Trading Portfolio-Management - Some stuff definitely unneded here
Projects/Community-Plugins/UI/Function-Libraries/
ActionSwitch.js:
cp case 'Add Missing Plugin Trading Mines' case 'Add Missing Plugin Portfolio Mines'
cp case 'Add Missing Plugin Trading Systems' case 'Add Missing Plugin Portfolio Systems'
cp case 'Add Missing Plugin Trading Engines' case 'Add Missing Plugin Portfolio Engines'
PluginsFunctions.js:
cp addMissingPluginTradingMines addMissingPluginPortfolioMines
cp addMissingPluginTradingSystems addMissingPluginPortfolioSystems
cp addMissingPluginTradingEngines addMissingPluginPortfolioEngines
../Utilities/Plugins.js:
function getPluginFolderNamesByNodeType(nodeType):
add case 'Portfolio Engine'
add case 'Portfolio Mine'
add case 'Portfolio System'
Projects/Data-Mining/UI/Function-Libraries/
MineFunctions.js:
cp scanBotArray(dataMine.tradingBots) scanBotArray(dataMine.portfolioBots)
Skipping:
Projects/Foundations/TS/Function-Libraries/OutputManagementFunctions.js:
tradingProcessDate, VARS...INDEX_MAP->TRADING_PROCESSING_DAILY_FILES, ...
Projects/Foundations/TS/Function-Libraries/
SingleMarketFunctions.js:
cp findNodeInNodeMesh(outputDatasetNode, 'Trading Bot') ...'Portfolio Bot')
Line 117 if...else add portfolioMineNode
Projects/Foundations/TS/Process-Modules/
Dataset.js:
cp startingNode.type === 'Market Trading Products'
ProcessOutput.js:
cp line 27-29, 124-126
StatusReport.js:
Lines 102, 116, cp 172-222 dealing with finding process definitions the report depends on has been cloned from Trading -> Portfolio
Projects/Foundations/UI/Function-Libraries/
ActionSwitch.js:
cp case statements run-all, stop-all, add-missing, references, products, etc.
Line 506 && 512 may not need to have been cloned but I did for now - regarding live and paper trading.
ChartingSpaceFunctions.js: Needs Completion to include Portfolio at Charting Space.
'Market Trading|Portfolio Tasks' -> 'nodeType' as param. <= If error arises note that it was not configured this way by Luis when adding the Learning Mine. This is a File that could be heavily re-factored && optimized.
ProductFunctions.js:
Skipping:
Projects/Foundations/UI/Function-Libraries/ChartingSpaceFunctions.js: Needs Completion
Projects/Foundations/UI/Function-Libraries/CryptoEcosystemFunctions.js
Projects/Foundations/UI/Function-Libraries/
DataStorageFunctions.js:
Many things cloned. But on line 156 only did 'addMissingSession(livePortfolioSessionArray) not back|forward|paper
TaskFunctions.js:
run/stop | addMissing - Portfolio Tasks. Project|Exchange|Market|Mine
Line 148 - Only cloned 'Live Portfolio Session->'
Line 198 - Only cloned 'Production Portfolio Tasks->'
Skipping:
Projects/Foundations/UI/Function-Libraries/DependenciesFilter.js:
Appears 'tradingSystem' var here is just a parameter so no need change.
Projects/Foundations/UI/Spaces/
/Charting-Space/PlottersManager.js:
/Plotting/RecordValues.js:
/Design-Space/Workspace.js:
/Floating-Space/FloatingSpace.js:
/Panel-Space/Layer.js: Line 173 Only 'Live Portfolio Session'
Projects/Visual-Scripting/UI/Function-Libraries/
<<<<<<< Updated upstream
ActionsSwitch.js: *** NOTE: Not sure how to handle line 14 at the current moment. ***
UiObjectsFromNodes.js: only if(uiObjectType === 'Live Portfolio Session')
=======
ActionsSwitch.js:
NodePath.js*** NOTE: Not sure how to handle line 14 at the current moment. ***
UIObjectsFromNodes.js: Line 977 'Live Portfolio Session' only.
>>>>>>> Stashed changes
Skipping:
Projects/Foundations/UI/Spaces/Floating-Space/ConditionEditor.js
Skipping:
Projects/Governance/UI/Function-Libraries/ActionSwitch.js:
Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/LearningSession.js:
Projects/Machine-Learning/TS/Bot-Modules/Learning-Bot/Low-Frequency-Learning/LearningOutput.js:
Projects/Machine-Learning/*
Projects/Network/*
node_modules, */My-Workspaces, */My-Log-Files, *.json, .gitignore, desktop.js, Environment.js, README.md, run.js, setup.js, Tested-Exchanges, CODEOWNERS, DesktopApp.js, WebApp.js, Projects/Social-Bots/*, Projects/Social-Trading/*, Projects/Governance/*
----- Changes made inside Portfolio-Management (Clone of Algorithmic-Trading) -----
References to trading changed to portfolio regardless of capitalization:
Examples:
find ./ -type f -exec sed -i 's/trading/portfolio/g' {} \;
find ./ -type f -exec sed -i 's/Trading/Portfolio/g' {} \;
find ./ -type f -exec sed -i 's/TRADING/PORTFOLIO/g' {} \;
+1
View File
@@ -331,6 +331,7 @@ exports.newGithubServer = function newGithubServer() {
let lastPage = false
while (lastPage === false) {
page++
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
let listResponse = await octokit.rest.pulls.listFiles({
owner: owner,
@@ -25,6 +25,8 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
let tradingPositionModuleObject = TS.projects.algorithmicTrading.botModules.tradingPosition.newAlgorithmicTradingBotModulesTradingPosition(processIndex)
let tradingExecutionModuleObject = TS.projects.algorithmicTrading.botModules.tradingExecution.newAlgorithmicTradingBotModulesTradingExecution(processIndex)
let announcementsModuleObject = TS.projects.socialBots.botModules.announcements.newSocialBotsBotModulesAnnouncements(processIndex)
let outgoingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.outgoingTradingSignals.newTradingSignalsModulesOutgoingTradingSignals(processIndex)
let portfolioManagerClient = TS.projects.portfolioManagement.modules.portfolioManagerClient.newPortfolioManagementModulesPortfolioManagerClient(processIndex)
let snapshotsModuleObject = TS.projects.algorithmicTrading.botModules.snapshots.newAlgorithmicTradingBotModulesSnapshots(processIndex)
let tradingEpisodeModuleObject = TS.projects.algorithmicTrading.botModules.tradingEpisode.newAlgorithmicTradingBotModulesTradingEpisode(processIndex)
@@ -97,15 +99,15 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
tradingPositionModuleObject.cycleBasedStatistics()
}
function runTriggerStage() {
async function runTriggerStage() {
/*
We check if we will be triggering on, off or taking position.
*/
checkTriggerOn()
checkTriggerOff()
checkTakePosition()
await checkTriggerOn()
await checkTriggerOff()
await checkTakePosition()
function checkTriggerOn() {
async function checkTriggerOn() {
if (
tradingEngine.tradingCurrent.strategy.index.value === tradingEngine.tradingCurrent.strategy.index.config.initialValue
) {
@@ -137,7 +139,12 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
passed = tradingSystem.checkConditions(situation, passed)
tradingSystem.values.push([situation.id, passed])
let response = await portfolioManagerClient.askPortfolioEventsManager(triggerStage.triggerOn, passed)
passed = response.raiseEvent
if (passed) {
tradingSystem.highlights.push(situation.id)
tradingSystem.highlights.push(triggerStage.triggerOn.id)
tradingSystem.highlights.push(triggerStage.id)
@@ -147,6 +154,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* Initialize this */
tradingEngine.tradingCurrent.tradingEpisode.distanceToTradingEvent.triggerOn.value = 1
outgoingTradingSignalsModuleObject.broadcastSignal(triggerStage.triggerOn)
announcementsModuleObject.makeAnnouncements(triggerStage.triggerOn)
if (TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.type === 'Backtesting Session') {
@@ -156,9 +164,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
}
}
}
changeStageStatus('Trigger Stage', 'Open')
}
}
}
@@ -167,7 +173,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
}
}
function checkTriggerOff() {
async function checkTriggerOff() {
if (tradingEngine.tradingCurrent.strategyTriggerStage.status.value === 'Open') {
checkUserDefinedCode('Trigger Stage', 'Running', 'first');
@@ -188,12 +194,18 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
passed = tradingSystem.checkConditions(situation, passed)
tradingSystem.values.push([situation.id, passed])
let response = await portfolioManagerClient.askPortfolioEventsManager(triggerStage.triggerOff, passed)
passed = response.raiseEvent
if (passed) {
tradingSystem.highlights.push(situation.id)
tradingSystem.highlights.push(triggerStage.triggerOff.id)
tradingSystem.highlights.push(triggerStage.id)
tradingEngine.tradingCurrent.tradingEpisode.distanceToTradingEvent.triggerOff.value = 1
outgoingTradingSignalsModuleObject.broadcastSignal(triggerStage.triggerOff)
announcementsModuleObject.makeAnnouncements(triggerStage.triggerOff)
changeStageStatus('Trigger Stage', 'Closed', 'Trigger Off Event')
tradingStrategyModuleObject.closeStrategy('Trigger Off')
@@ -204,7 +216,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
}
}
function checkTakePosition() {
async function checkTakePosition() {
if (
tradingEngine.tradingCurrent.strategyTriggerStage.status.value === 'Open'
) {
@@ -212,7 +224,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
let triggerStage = strategy.triggerStage
tradingSystem.evalConditions(strategy, 'Take Position Event')
tradingSystem.evalFormulas(strategy, 'Take Position Event')
await tradingSystem.evalFormulas(strategy, 'Take Position Event')
if (triggerStage !== undefined) {
if (triggerStage.takePosition !== undefined) {
@@ -226,6 +238,10 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
passed = tradingSystem.checkConditions(situation, passed)
tradingSystem.values.push([situation.id, passed])
let response = await portfolioManagerClient.askPortfolioEventsManager(triggerStage.takePosition, passed)
passed = response.raiseEvent
if (passed) {
tradingSystem.highlights.push(situation.id)
tradingSystem.highlights.push(triggerStage.takePosition.id)
@@ -233,6 +249,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
tradingPositionModuleObject.openPosition(situation.name)
outgoingTradingSignalsModuleObject.broadcastSignal(triggerStage.takePosition)
announcementsModuleObject.makeAnnouncements(triggerStage.takePosition)
if (TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.type === 'Backtesting Session') {
@@ -259,14 +276,14 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
async function runOpenStage() {
checkIfWeNeedToAbortTheStage()
runWhenStatusIsOpening()
await runWhenStatusIsOpening()
await runWhenStatusIsOpen()
await runWhenStatusIsClosing()
function checkIfWeNeedToAbortTheStage() {
/* Abort Open Stage Check */
if (tradingEngine.tradingCurrent.strategyOpenStage.status.value === 'Open' &&
(tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Opening' || tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Open') ){
(tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Opening' || tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Open')) {
/*
if the Close stage is opened while the open stage is still open that means that
we need to stop placing orders, check what happened to the orders already placed,
@@ -276,7 +293,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
}
}
function runWhenStatusIsOpening() {
async function runWhenStatusIsOpening() {
/* Opening Status Procedure */
if (tradingEngine.tradingCurrent.strategyOpenStage.status.value === 'Opening') {
/*
@@ -298,7 +315,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
TS.projects.foundations.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).TRADING_ENGINE_MODULE_OBJECT.initializeNode(tradingEngine.exchangeOrders)
/* Entry Position size and rate */
tradingSystem.evalFormulas(tradingSystemStage, 'Initial Targets')
await tradingSystem.evalFormulas(tradingSystemStage, 'Initial Targets')
tradingPositionModuleObject.initialTargets(tradingSystemStage, tradingEngineStage)
initializeStageTargetSize()
@@ -321,7 +338,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* Evaluate conditions and formulas so they are ready during the execution run */
tradingSystem.evalConditions(executionNode, 'Open Execution')
tradingSystem.evalFormulas(executionNode, 'Open Execution')
await tradingSystem.evalFormulas(executionNode, 'Open Execution')
await tradingExecutionModuleObject.runExecution(
executionNode,
@@ -331,7 +348,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* User Defined Code if runWhileAtStage==true */
if (tradingEngine.tradingCurrent.strategyOpenStage.status.value === 'Open') {
checkUserDefinedCode('Open Stage', 'Running', 'last');
checkUserDefinedCode('Open Stage', 'Running', 'last');
}
}
}
@@ -351,7 +368,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
and cancel the ones that were not.
*/
tradingSystem.evalConditions(tradingSystemStage, 'Open Execution')
tradingSystem.evalFormulas(tradingSystemStage, 'Open Execution')
await tradingSystem.evalFormulas(tradingSystemStage, 'Open Execution')
await tradingExecutionModuleObject.runExecution(
executionNode,
@@ -407,12 +424,12 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
}
}
function runManageStage() {
async function runManageStage() {
if (tradingEngine.tradingCurrent.tradingEpisode.cycle.value !== 'First') { return }
runWhenStatusIsOpening()
runWhenStatusIsOpen()
await runWhenStatusIsOpen()
function runWhenStatusIsOpening() {
/* Opening Status Procedure */
@@ -438,7 +455,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
}
}
function runWhenStatusIsOpen() {
async function runWhenStatusIsOpen() {
/* Open Status Procedure */
if (tradingEngine.tradingCurrent.strategyManageStage.status.value === 'Open') {
checkUserDefinedCode('Manage Stage', 'Running', 'first');
@@ -447,7 +464,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* Evaluate all the stage conditions and formulas to have them ready */
tradingSystem.evalConditions(manageStage, 'Manage Stage')
tradingSystem.evalFormulas(manageStage, 'Manage Stage')
await tradingSystem.evalFormulas(manageStage, 'Manage Stage')
/* Stop Loss Management */
checkStopPhasesEvents()
@@ -464,7 +481,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* If User Defined Code exists check for runWhileAtStage */
if (tradingEngine.tradingCurrent.strategyManageStage.status.value === 'Open') {
checkUserDefinedCode('Manage Stage', 'Running', 'last');
checkUserDefinedCode('Manage Stage', 'Running', 'last');
}
}
@@ -696,6 +713,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
tradingPositionModuleObject.updateTakeProfit(tradingEngine.tradingCurrent.position.takeProfit.takeProfitPhase.value + 1)
outgoingTradingSignalsModuleObject.broadcastSignal(nextPhaseEvent)
announcementsModuleObject.makeAnnouncements(nextPhaseEvent)
/* Reset this counter */
@@ -747,6 +765,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
continue
}
outgoingTradingSignalsModuleObject.broadcastSignal(moveToPhaseEvent)
announcementsModuleObject.makeAnnouncements(moveToPhaseEvent)
/* Reset this counter */
@@ -810,11 +829,11 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
async function runCloseStage() {
runWhenStatusIsOpening()
await runWhenStatusIsOpening()
await runWhenStatusIsOpen()
await runWhenStatusIsClosing()
function runWhenStatusIsOpening() {
async function runWhenStatusIsOpening() {
/* Opening Status Procedure */
if (tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Opening') {
@@ -834,7 +853,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].closeStage
/* Exit Position size and rate */
tradingSystem.evalFormulas(tradingSystemStage, 'Initial Targets')
await tradingSystem.evalFormulas(tradingSystemStage, 'Initial Targets')
if (tradingPositionModuleObject.initialTargets(tradingSystemStage, tradingEngine.tradingCurrent.strategyCloseStage, 'Close Stage') === false) {
//console.log("No Close-Stage Target Asset to Trade: Strategy Closing.");
}
@@ -866,7 +885,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
let executionNode = tradingSystemStage.closeExecution
tradingSystem.evalConditions(tradingSystemStage, 'Close Execution')
tradingSystem.evalFormulas(tradingSystemStage, 'Close Execution')
await tradingSystem.evalFormulas(tradingSystemStage, 'Close Execution')
await tradingExecutionModuleObject.runExecution(
executionNode,
@@ -876,7 +895,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
checkIfStageNeedsToBeClosed(tradingEngineStage, tradingSystemStage, 'Close Stage')
/* If User Defined Code exists check for runWhileAtStage */
if (tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Open') {
checkUserDefinedCode('Close Stage', 'Running', 'last');
checkUserDefinedCode('Close Stage', 'Running', 'last');
}
}
}
@@ -896,7 +915,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
and cancel the ones that were not.
*/
tradingSystem.evalConditions(tradingSystemStage, 'Close Execution')
tradingSystem.evalFormulas(tradingSystemStage, 'Close Execution')
await tradingSystem.evalFormulas(tradingSystemStage, 'Close Execution')
await tradingExecutionModuleObject.runExecution(
executionNode,
@@ -1108,6 +1127,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
tradingSystem.highlights.push(closeStageEvent.id)
tradingSystem.highlights.push(stage.id)
outgoingTradingSignalsModuleObject.broadcastSignal(closeStageEvent)
announcementsModuleObject.makeAnnouncements(closeStageEvent)
return true
}
@@ -1172,7 +1192,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* Recording the closing at the Trading Engine Data Structure */
stage.end.value = tradingEngine.tradingCurrent.tradingEpisode.cycle.lastEnd.value
stage.endRate.value = tradingEngine.tradingCurrent.tradingEpisode.candle.close.value
if (stageName === 'Open Stage') {
if (tradingEngine.tradingCurrent.strategyCloseStage.status.value !== 'Opening' && tradingEngine.tradingCurrent.strategyCloseStage.status.value !== 'Open' &&
tradingEngine.tradingCurrent.strategyManageStage.status.value !== 'Opening' && tradingEngine.tradingCurrent.strategyManageStage.status.value !== 'Open') {
@@ -1272,20 +1292,20 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
tradingSystemStage.userDefinedCode !== undefined) {
if (status === 'Running' && when !== tradingSystemStage.userDefinedCode.config.whileAtStageWhenToRun) { return; }
switch(status) {
case 'Open' : {
switch (status) {
case 'Open': {
if (tradingSystemStage.userDefinedCode.config.runWhenEnteringStage) {
tradingSystem.evalUserCode(tradingSystemStage, 'User Defined Code');
}
break;
}
case 'Running' : {
case 'Running': {
if (tradingSystemStage.userDefinedCode.config.runWhileAtStage) {
tradingSystem.evalUserCode(tradingSystemStage, 'User Defined Code');
}
break;
}
case 'Closed' : {
case 'Closed': {
if (tradingSystemStage.userDefinedCode.config.runWhenExitingStage) {
tradingSystem.evalUserCode(tradingSystemStage, 'User Defined Code');
}
@@ -1305,23 +1325,23 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
/* getTradingSystemStage(): takes stage name returns stage object. */
function getTradingSystemStage(stage) {
switch(stage) {
case 'Trigger Stage' : {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].triggerStage;
break;
switch (stage) {
case 'Trigger Stage': {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].triggerStage;
break;
}
case 'Open Stage': {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].openStage;
break;
}
case 'Manage Stage': {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].manageStage;
break
}
case 'Close Stage': {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].closeStage;
break;
}
}
case 'Open Stage' : {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].openStage;
break;
}
case 'Manage Stage' : {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].manageStage;
break
}
case 'Close Stage' : {
return tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].closeStage;
break;
}
}
}
}
@@ -27,6 +27,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
let dynamicIndicators
let tradingStagesModuleObject = TS.projects.algorithmicTrading.botModules.tradingStages.newAlgorithmicTradingBotModulesTradingStages(processIndex)
let portfolioManagerClient = TS.projects.portfolioManagement.modules.portfolioManagerClient.newPortfolioManagementModulesPortfolioManagerClient(processIndex)
let taskParameters = {
market: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName +
@@ -70,12 +71,12 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
evalNode(startingNode, 'Conditions', descendentOfNodeType)
}
tradingSystem.evalFormulas = function (startingNode, descendentOfNodeType) {
evalNode(startingNode, 'Formulas', descendentOfNodeType)
tradingSystem.evalFormulas = async function (startingNode, descendentOfNodeType) {
await evalNode(startingNode, 'Formulas', descendentOfNodeType)
}
tradingSystem.evalUserCode = function (startingNode, descendentOfNodeType) {
evalNode(startingNode, 'User Codes', descendentOfNodeType);
evalNode(startingNode, 'User Codes', descendentOfNodeType);
}
tradingSystem.addError = function (errorDataArray) {
@@ -203,13 +204,13 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
buildDynamicIndicators()
/* Run the Trigger Stage */
tradingStagesModuleObject.runTriggerStage()
await tradingStagesModuleObject.runTriggerStage()
/* Run the Open Stage */
await tradingStagesModuleObject.runOpenStage()
/* Run the Manage Stage */
tradingStagesModuleObject.runManageStage()
await tradingStagesModuleObject.runManageStage()
/* Run the Close Stage */
await tradingStagesModuleObject.runCloseStage()
@@ -234,7 +235,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
}
}
function evalNode(node, evaluating, descendentOfNodeType, isDescendent) {
async function evalNode(node, evaluating, descendentOfNodeType, isDescendent, parentNode) {
if (node === undefined) { return }
/* Verify if this node is descendent of the specified node type */
@@ -257,18 +258,18 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
if (node.code !== undefined) {
/* We will eval this formula */
if (isDescendent === true) {
evalFormula(node)
await evalFormula(node, parentNode)
}
}
}
/* Here we check if there is a User Defined-Javascript Code to be evaluated: */
if (node.type === 'Javascript Code' && evaluating === 'User Codes') {
if (node.code !== undefined) {
if (isDescendent === true) {
evalJSCode(node);
if (node.code !== undefined) {
if (isDescendent === true) {
evalJSCode(node);
}
}
}
}
/* Now we go down through all this node children */
@@ -284,7 +285,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
case 'node': {
if (property.name !== previousPropertyName) {
if (node[property.name] !== undefined) {
evalNode(node[property.name], evaluating, descendentOfNodeType, isDescendent)
await evalNode(node[property.name], evaluating, descendentOfNodeType, isDescendent, node)
}
previousPropertyName = property.name
}
@@ -294,7 +295,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
if (node[property.name] !== undefined) {
let nodePropertyArray = node[property.name]
for (let m = 0; m < nodePropertyArray.length; m++) {
evalNode(nodePropertyArray[m], evaluating, descendentOfNodeType, isDescendent)
await evalNode(nodePropertyArray[m], evaluating, descendentOfNodeType, isDescendent, node)
}
}
break
@@ -357,7 +358,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[INFO] evalCondition -> value = ' + value)
}
function evalFormula(node) {
async function evalFormula(node, parentNode) {
let value
let errorMessage
let docs
@@ -365,6 +366,10 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
try {
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[INFO] evalFormula -> ' + node.name + ' -> code = ' + node.code)
value = eval(node.code)
let response = await portfolioManagerClient.askPortfolioFormulaManager(parentNode, value)
value = response.value
} catch (err) {
/*
One possible error is that the formula references a .previous that is undefined. This
@@ -423,29 +428,29 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
}
function evalJSCode(node) {
let value
let errorMessage
let docs
let value
let errorMessage
let docs
try {
value = eval(node.code);
try {
value = eval(node.code);
} catch (err) {
value = 0
errorMessage = err.message
docs = {
project: 'Foundations',
category: 'Topic',
type: 'TS LF Trading Bot Error - Evaluating User Code Error',
placeholder: {}
} catch (err) {
value = 0
errorMessage = err.message
docs = {
project: 'Foundations',
category: 'Topic',
type: 'TS LF Trading Bot Error - Evaluating User Code Error',
placeholder: {}
}
TS.projects.education.utilities.docsFunctions.buildPlaceholder(docs, err, node.name, node.code, undefined)
}
TS.projects.education.utilities.docsFunctions.buildPlaceholder(docs, err, node.name, node.code, undefined)
}
if (errorMessage !== undefined) {
tradingSystem.addError([node.id, errorMessage, docs])
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[INFO] evalFormula -> errorMessage = ' + errorMessage)
return
}
if (errorMessage !== undefined) {
tradingSystem.addError([node.id, errorMessage, docs])
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[INFO] evalFormula -> errorMessage = ' + errorMessage)
return
}
}
}
@@ -0,0 +1,45 @@
/* PMCommunicationModule - Trading Bot's Version.
* Fascilitates communications between the Portfolio Manager and its managed sessions.
* Session Key naming convention: name + type + id
*/
exports.newPMCommunicationModule_Trading = function (callerId) {
const MODULE_NAME = 'PM Communication Module - Trading';
moduleObj = {
beginListening: beginListening,
getQuoteAssetBalance: getQuoteAssetBalance
}
const SESSION_ID = callerId;
return moduleObj;
/* Listeners Section: */
function beginListening() {
TS.projects.foundations.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT.listenToEvent(
SESSION_ID,
'Quote Asset Balance Reply',
undefined,
SESSION_ID,
undefined,
gotQuoteAssetBalance)
}
/* eventsCallBack Section: */
function getQuoteAssetBalance() {
TS.projects.foundations.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT.raiseEvent(
SESSION_ID,
'Quote Asset Balance',
undefined
)
}
function gotQuoteAssetBalance() {
let ret = arguments[0].event;
console.log("Quote Asset Balance=>" + ret);
}
}
@@ -47,6 +47,9 @@
TS.projects.foundations.globals.taskVariables.SESSION_MAP.set(
TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_KEY,
TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_KEY)
/* We will store the PMCommunicationModule Object: */
TS.projects.foundations.globals.processVariables.PM_COMMUNICATION_MODULE = TS.projects.algorithmicTrading.botModules.PMCommunicationModule_Trading.newPMCommunicationModule_Trading(VARIABLES_BY_PROCESS_INDEX.SESSION_KEY);
/* Listen to event to start or stop the session. */
TS.projects.foundations.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT.listenToEvent(
@@ -512,6 +515,7 @@
}
function startBackTesting(message) {
return true
}
@@ -580,6 +584,9 @@
}
function startLiveTrading() {
// Testing:
TS.projects.foundations.globals.processVariables.PM_COMMUNICATION_MODULE.beginListening();
TS.projects.foundations.globals.processVariables.PM_COMMUNICATION_MODULE.getQuoteAssetBalance();
return checkKey()
}
@@ -33,7 +33,6 @@ function newAlgorithmicTradingActionSwitch() {
UI.projects.algorithmicTrading.functionLibraries.tradingSessionFunctions.stopSession(action.node, action.callBackFunction)
}
break
default: {
console.log("[WARN] Action sent to Algorithmic-Trading Action Switch does not belong here. Verify at the App Schema file of the node that triggered this action that the actionProject is pointing to the right project. -> Action = " + action.name + " -> Action Node Name = " + action.node.name)
}
@@ -1,13 +1,13 @@
function newAlgorithmicTradingFunctionLibraryTradingSessionFunctions() {
let thisObject = {
syncronizeSessionWithBackEnd: syncronizeSessionWithBackEnd,
synchronizeSessionWithBackEnd: synchronizeSessionWithBackEnd,
runSession: runSession,
stopSession: stopSession
}
return thisObject
function syncronizeSessionWithBackEnd(node) {
function synchronizeSessionWithBackEnd(node) {
let validationsResult = validations(node)
if (validationsResult === undefined) {
/* If something fails at validations we just quit. */
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,41 @@
{
"type": "Plugin Portfolio Engines",
"menuItems": [
{
"action": "Add Missing Plugin Portfolio Engines",
"label": "Add Missing Portfolio Engines",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"iconPathOn": "portfolio-engine",
"iconPathOff": "portfolio-engine",
"iconProject": "Portfolio-Management",
"actionFunction": "payload.executeAction",
"actionProject": "Community-Plugins"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "pluginPortfolioEngines",
"attachingRules": {
"compatibleTypes": "->Plugin Project->"
},
"childrenNodesProperties": [
{
"name": "pluginFiles",
"type": "array",
"childType": "Plugin File",
"autoAdd": false
}
]
}
@@ -0,0 +1,41 @@
{
"type": "Plugin Portfolio Mines",
"menuItems": [
{
"action": "Add Missing Plugin Portfolio Mines",
"label": "Add Missing Portfolio Mines",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"iconPathOn": "portfolio-mine",
"iconPathOff": "portfolio-mine",
"iconProject": "Portfolio-Management",
"actionFunction": "payload.executeAction",
"actionProject": "Community-Plugins"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "pluginPortfolioMines",
"attachingRules": {
"compatibleTypes": "->Plugin Project->"
},
"childrenNodesProperties": [
{
"name": "pluginFiles",
"type": "array",
"childType": "Plugin File",
"autoAdd": false
}
]
}
@@ -0,0 +1,41 @@
{
"type": "Plugin Portfolio Systems",
"menuItems": [
{
"action": "Add Missing Plugin Portfolio Systems",
"label": "Add Missing Portfolio Systems",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"iconPathOn": "portfolio-system",
"iconPathOff": "portfolio-system",
"iconProject": "Portfolio-Management",
"actionFunction": "payload.executeAction",
"actionProject": "Community-Plugins"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 1,
"propertyNameAtParent": "pluginPortfolioSystems",
"attachingRules": {
"compatibleTypes": "->Plugin Project->"
},
"childrenNodesProperties": [
{
"name": "pluginFiles",
"type": "array",
"childType": "Plugin File",
"autoAdd": false
}
]
}
@@ -53,6 +53,12 @@
"childType": "Plugin Trading Mines",
"autoAdd": false
},
{
"name": "pluginPortfolioMines",
"type": "node",
"childType": "Plugin Portfolio Mines",
"autoAdd": false
},
{
"name": "pluginLearningMines",
"type": "node",
@@ -65,6 +71,12 @@
"childType": "Plugin Trading Systems",
"autoAdd": false
},
{
"name": "pluginPortfolioSystems",
"type": "node",
"childType": "Plugin Portfolio Systems",
"autoAdd": false
},
{
"name": "pluginLearningSystems",
"type": "node",
@@ -77,6 +89,12 @@
"childType": "Plugin Trading Engines",
"autoAdd": false
},
{
"name": "pluginPortfolioEngines",
"type": "node",
"childType": "Plugin Portfolio Engines",
"autoAdd": false
},
{
"name": "pluginLearningEngines",
"type": "node",
@@ -58,6 +58,21 @@ function newCommunityPluginsActionSwitch() {
UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginTradingEngines(action.node, action.rootNodes)
}
break
case 'Add Missing Plugin Portfolio Mines':
{
UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginPortfolioMines(action.node, action.rootNodes)
}
break
case 'Add Missing Plugin Portfolio Systems':
{
UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginPortfolioSystems(action.node, action.rootNodes)
}
break
case 'Add Missing Plugin Portfolio Engines':
{
UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginPortfolioEngines(action.node, action.rootNodes)
}
break
case 'Add Missing Plugin Learning Mines':
{
UI.projects.communityPlugins.functionLibraries.pluginsFunctions.addMissingPluginLearningMines(action.node, action.rootNodes)
@@ -7,6 +7,9 @@ function newPluginsFunctionLibraryPluginsFunctions() {
addMissingPluginTradingMines: addMissingPluginTradingMines,
addMissingPluginTradingSystems: addMissingPluginTradingSystems,
addMissingPluginTradingEngines: addMissingPluginTradingEngines,
addMissingPluginPortfolioMines: addMissingPluginPortfolioMines,
addMissingPluginPortfolioSystems: addMissingPluginPortfolioSystems,
addMissingPluginPortfolioEngines: addMissingPluginPortfolioEngines,
addMissingPluginLearningMines: addMissingPluginLearningMines,
addMissingPluginLearningSystems: addMissingPluginLearningSystems,
addMissingPluginLearningEngines: addMissingPluginLearningEngines,
@@ -140,6 +143,54 @@ function newPluginsFunctionLibraryPluginsFunctions() {
}
}
function addMissingPluginPortfolioMines(node, rootNodes) {
let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node)
if (projectName === "" || projectName === undefined) {
if (node.payload.parentNode !== undefined) {
node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.")
return
}
}
UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Portfolio-Mines', onNamesArrived)
function onNamesArrived(fileNames) {
UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Portfolio-Mines', 'Portfolio Mine', 'Portfolio-Management')
}
}
function addMissingPluginPortfolioSystems(node, rootNodes) {
let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node)
if (projectName === "" || projectName === undefined) {
if (node.payload.parentNode !== undefined) {
node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.")
return
}
}
UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Portfolio-Systems', onNamesArrived)
function onNamesArrived(fileNames) {
UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Portfolio-Systems', 'Portfolio System', 'Portfolio-Management')
}
}
function addMissingPluginPortfolioEngines(node, rootNodes) {
let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node)
if (projectName === "" || projectName === undefined) {
if (node.payload.parentNode !== undefined) {
node.payload.parentNode.payload.uiObject.setErrorMessage("Config codeName must have the name of the project.")
return
}
}
UI.projects.communityPlugins.utilities.plugins.getPluginFileNames(projectName, 'Portfolio-Engines', onNamesArrived)
function onNamesArrived(fileNames) {
UI.projects.communityPlugins.utilities.plugins.addMissingPluginFiles(node, fileNames, 'Portfolio-Engines', 'Portfolio Engine', 'Portfolio-Management')
}
}
function addMissingPluginLearningMines(node, rootNodes) {
let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node)
if (projectName === "" || projectName === undefined) {
@@ -73,6 +73,15 @@ function newPluginsUtilitiesPlugins() {
case 'Trading System': {
return 'Trading-Systems'
}
case 'Portfolio Engine': {
return 'Portfolio-Engines'
}
case 'Portfolio Mine': {
return 'Portfolio-Mines'
}
case 'Portfolio System': {
return 'Portfolio-Systems'
}
case 'Assets': {
return 'Assets'
}
@@ -23,11 +23,25 @@
},
{
"style": "Text",
"text": "In a way, data mines are catalogs of bots that anyone may create. This hierarchy provides all the tools required to create sensors, indicators, and plotters, with minimal coding required."
"text": "In a way, data mines are catalogs of bots that anyone may create. This hierarchy provides all the tools required to create sensors, indicators, and plotters, with minimal coding required.",
"translations": [
{
"language": "ES",
"text": "En cierto modo, los Data Mines son listas de bots que pueden ser creados por cualquier usuario. Esta jerarquía provee todas las herramientas necesarias para crear sensores, indicadores y gráficos, con un mínimo requerimiento de código.",
"updated": 1638150280351
}
]
},
{
"style": "Text",
"text": "Because the hierarchy provides definitions, it does not intervene in the execution of bots. Instead, the definitions in data mines are instantiated from the network hierarchy by bot instances. Bot instances and process instances are the ones running the code according to the definitions in the corresponding data mine."
"text": "Because the hierarchy provides definitions, it does not intervene in the execution of bots. Instead, the definitions in data mines are instantiated from the network hierarchy by bot instances. Bot instances and process instances are the ones running the code according to the definitions in the corresponding data mine.",
"translations": [
{
"language": "ES",
"text": "Debido a que la jerarquía solo proporciona definiciones, no interfiere en la ejecución de Bots. Sino que las definiciones en los Data Mines son instanciados desde la jerarquía Network por las instancias de los Bots. Las instancias de los Bots y las instancias de procesos son las encargadas de ejecutar el código acorde a las definiciones del Data Mine correspondiente.",
"updated": 1638150294294
}
]
},
{
"style": "Block",
@@ -68,6 +68,7 @@ function newDataMiningFunctionLibraryMineFunctions() {
scanBotArray(dataMine.apiDataFetcherBots)
scanBotArray(dataMine.indicatorBots)
scanBotArray(dataMine.tradingBots)
scanBotArray(dataMine.portfolioBots)
scanBotArray(dataMine.learningBots)
function scanBotArray(botArray) {
@@ -0,0 +1,34 @@
{
"type": "Current projects",
"definition": {
"text": "The table below contains all current projects to which you can add new docs-articles. Feel free to add projects if they are missing.",
"updated": 1638112235073
},
"paragraphs": [
{
"style": "Table",
"text": "|Project|Project Explanation|\n|Algorithmic-Trading|Project Explanation|\n|Community-Plugins|Project Explanation|\n|Data-Mining|Project Explanation|\n|Education|This Project is about building up and maintaining the Docs (-Articles)|\n|Ethereum|Project Explanation|\n|Foundations|Project Explanation|\n|Governance|Manages and organizes the Superalgos Project (All of us, the community)|\n|Machine-Learning|Project Explanation|\n|Network|Project Explanation|\n|Social-Bots|Project Explanation|\n|Social-Trading|Project Explanation|\n|TensorFlow|Project Explanation|\n|Visual-Scripting|Project Explanation|",
"updated": 1638116155258,
"translations": [
{
"language": "DE",
"text": "|Project|Project Explanation|\n|Algorithmic-Trading|Project Explanation|\n|Community-Plugins|Project Explanation|\n|Data-Mining|Project Explanation|\n|Education|This Project is about building up and maintaining the Docs (-Articles)|\n|Ethereum|Project Explanation|\n|Foundations|Project Explanation|\n|Governance|Manages and organizes the Superalgos Project (All of us, the community)|\n|Machine-Learning|Project Explanation|\n|Network|Project Explanation|\n|Social-Bots|Project Explanation|\n|Social-Trading|Project Explanation|\n|TensorFlow|Project Explanation|\n|Visual-Scripting|Project Explanation|",
"updated": 1638115499301
}
]
},
{
"style": "Text",
"text": "Created and maintained by gitforkgit.",
"updated": 1638112659687
},
{
"style": "Text",
"text": ""
},
{
"style": "Text",
"text": ""
}
]
}
@@ -0,0 +1,50 @@
{
"type": "Technical term overview",
"definition": {
"text": "This article was created to show you which terms you should not translate because they are a fixed term. An example is the word Node. Created and maintained by gitforkgit.",
"updated": 1638052921801,
"translations": [
{
"language": "DE",
"text": "This article was created to show you which terms you should not translate because they are a fixed term. An example is the word Node. Created and maintained by gitforkgit ",
"updated": 1638052964966
}
]
},
"paragraphs": [
{
"style": "Text",
"text": "One of our goals is to make Superalgos available for everyone for free and open source forever. For this, translations are extremely important and essential. However, there are some technical terms that should not be translated. Because otherwise it could be difficult when describing problems to others, start contributing, understanding superalgos...",
"updated": 1638052177612
},
{
"style": "Text",
"text": "\"Below here is a table in which the terms are listed. Here the translators can orient themselves and each Superalgos user add terms of which he thinks that they should not be translated. If you translate articles please look here from time to time to see which terms you should leave as they are in the original. Translations in brackets behind the terms themselves are of course legitimate and welcome by readers of the articles.",
"updated": 1638052195441
},
{
"style": "Success",
"text": "Feel free to add Terms in the table!",
"updated": 1638052209974
},
{
"style": "Note",
"text": "Terms that should remain original in the translations of articles:",
"updated": 1638052228369
},
{
"style": "Table",
"text": "|Workspace Terms|Node Terms|Other Technical Terms|Workspace Terms translation|Node Terms translation|Other Technical Terms translation|\n|Pin/Unpin|Node|add terms here|add Term translation here|add Term translation here|add Term translation here|\n|add terms here|Parent Node|add terms here|add Term translation here|add Term translation here|add Term translation here|\n|add terms here|Child Node|add terms here|add Term translation here|add Term translation here|add Term translation here|\n|add terms here|add terms here|add terms here|add Term translation here|add Term translation here|add Term translation here|",
"updated": 1638052333924
},
{
"style": "Note",
"text": "In the columns with translation as their header you can add the translation into your language, if your language is selected in the footer, otherwise the translations would be globally in the table what isn`t the Goal.",
"updated": 1638052343422
},
{
"style": "Text",
"text": ""
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode Statistics->Episode Base Asset->Episode Quoted Asset->"
"compatibleTypes": "->Trading Episode Statistics->Portfolio Episode Statistics->Position Statistics->Episode Base Asset->Episode Quoted Asset->"
},
"propertyNameAtParent": "annualizedRateOfReturn"
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->Strategy->Position->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->"
},
"propertyNameAtParent": "beginRate"
}
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->Prediction->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->Prediction->"
},
"propertyNameAtParent": "begin"
}
}
@@ -31,7 +31,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Data Mine Products->Trading Mine Products->Learning Mine Products->"
"compatibleTypes": "->Data Mine Products->Trading Mine Products->Portfolio Mine Products->Learning Mine Products->"
},
"propertyNameAtParent": "botProducts",
"childrenNodesProperties": [
@@ -9,6 +9,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"label": "Add Cancel Order Portfolio Event",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "cancelOrderPMEvent",
"relatedUiObject": "Cancel Order PM Event",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations",
"actionProject": "Visual-Scripting"
},
{
"action": "Add UI Object",
"label": "Add Announcement",
@@ -40,6 +50,11 @@
"childType": "Situation",
"autoAdd": true
},
{
"name": "cancelOrderPMEvent",
"type": "node",
"childType": "Cancel Order PM Event"
},
{
"name": "announcements",
"type": "array",
@@ -0,0 +1,29 @@
{
"type": "Cancel Order PM Event",
"menuItems": [
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"initialValues": {
"config": "{}"
},
"editors": {
"config": true
},
"level": 4,
"attachingRules": {
"compatibleTypes": "->Cancel Order Event->"
},
"childrenNodesProperties": [
],
"propertyNameAtParent": "cancelOrderPMEvent"
}
@@ -9,6 +9,14 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Missing Children",
"label": "Add Missing Children",
"relatedUiObject": "Portfolio Parameters",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
@@ -23,7 +31,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->"
},
"propertyNameAtParent": "candle",
"childrenNodesProperties": [
@@ -9,6 +9,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"label": "Add Close Stage Portfolio Event",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "closeStagePMEvent",
"relatedUiObject": "Close Stage PM Event",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations",
"actionProject": "Visual-Scripting"
},
{
"action": "Add UI Object",
"label": "Add Announcement",
@@ -40,6 +50,11 @@
"childType": "Situation",
"autoAdd": true
},
{
"name": "closeStagePMEvent",
"type": "node",
"childType": "Close Stage PM Event"
},
{
"name": "announcements",
"type": "array",
@@ -0,0 +1,29 @@
{
"type": "Close Stage PM Event",
"menuItems": [
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"initialValues": {
"config": "{}"
},
"editors": {
"config": true
},
"level": 2,
"attachingRules": {
"compatibleTypes": "->Close Stage Event->"
},
"childrenNodesProperties": [
],
"propertyNameAtParent": "closeStagePMEvent"
}
@@ -44,7 +44,7 @@
"addLeftIcons": true,
"level": 2,
"attachingRules": {
"compatibleTypes": "->Trading Strategy->"
"compatibleTypes": "->Trading Strategy->Portfolio Strategy->"
},
"childrenNodesProperties": [
{
@@ -9,6 +9,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"label": "Add Create Order Portfolio Event",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "createOrderPMEvent",
"relatedUiObject": "Create Order PM Event",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations",
"actionProject": "Visual-Scripting"
},
{
"action": "Add UI Object",
"label": "Add Announcement",
@@ -40,6 +50,11 @@
"childType": "Situation",
"autoAdd": true
},
{
"name": "createOrderPMEvent",
"type": "node",
"childType": "Create Order PM Event"
},
{
"name": "announcements",
"type": "array",
@@ -0,0 +1,29 @@
{
"type": "Create Order PM Event",
"menuItems": [
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"initialValues": {
"config": "{}"
},
"editors": {
"config": true
},
"level": 2,
"attachingRules": {
"compatibleTypes": "->Create Order Event->"
},
"childrenNodesProperties": [
],
"propertyNameAtParent": "createOrderPMEvent"
}
@@ -22,7 +22,7 @@
"compatibleTypes": "->Product Definition->"
},
"attachingRules": {
"compatibleTypes": "->Market Data Products->Data Product Folder->Bot Products->Trading Session Reference->"
"compatibleTypes": "->Market Data Products->Data Product Folder->Bot Products->Trading Session Reference->Portfolio Session Reference->"
},
"propertyNameAtParent": "dataProducts",
"childrenNodesProperties": []
@@ -21,6 +21,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "portfolioMinesData",
"label": "Add Portfolio Mines Data",
"relatedUiObject": "Portfolio Mines Data",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
@@ -61,6 +71,12 @@
"childType": "Trading Mines Data",
"autoAdd": true
},
{
"name": "portfolioMinesData",
"type": "node",
"childType": "Portfolio Mines Data",
"autoAdd": true
},
{
"name": "learningMinesData",
"type": "node",
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode Statistics->Learning Episode Statistics->Position Statistics->Order Statistics->"
"compatibleTypes": "->Trading Episode Statistics->Portfolio Episode Statistics->Position Statistics->Learning Episode Statistics->Position Statistics->Order Statistics->"
},
"propertyNameAtParent": "days"
}
@@ -0,0 +1,85 @@
{
"type": "Distance To Portfolio Event",
"menuItems": [
{
"action": "Add Missing Children",
"label": "Add Missing Children",
"relatedUiObject": "Portfolio Parameters",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Portfolio Episode->"
},
"propertyNameAtParent": "distanceToPortfolioEvent",
"childrenNodesProperties": [
{
"name": "triggerOn",
"type": "node",
"childType": "Trigger On",
"autoAdd": true
},
{
"name": "triggerOff",
"type": "node",
"childType": "Trigger Off",
"autoAdd": true
},
{
"name": "takePosition",
"type": "node",
"childType": "Take Position",
"autoAdd": true
},
{
"name": "closePosition",
"type": "node",
"childType": "Close Position",
"autoAdd": true
},
{
"name": "nextPhase",
"type": "node",
"childType": "Next Phase",
"autoAdd": true
},
{
"name": "moveToPhase",
"type": "node",
"childType": "Move To Phase",
"autoAdd": true
},
{
"name": "createOrder",
"type": "node",
"childType": "Create Order",
"autoAdd": true
},
{
"name": "cancelOrder",
"type": "node",
"childType": "Cancel Order",
"autoAdd": true
},
{
"name": "closeOrder",
"type": "node",
"childType": "Close Order",
"autoAdd": true
}
]
}
@@ -23,7 +23,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading System->"
"compatibleTypes": "->Trading System->Portfolio System->"
},
"propertyNameAtParent": "dynamicIndicators",
"childrenNodesProperties": [
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->Strategy->Position->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->"
},
"propertyNameAtParent": "endRate"
}
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->Prediction->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->Strategy->Position->Candle->Cycle->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->Stop Loss->Take Profit->Prediction->"
},
"propertyNameAtParent": "end"
}
}
@@ -9,6 +9,14 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Missing Children",
"label": "Add Missing Children",
"relatedUiObject": "Portfolio Parameters",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
@@ -23,7 +31,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->"
},
"propertyNameAtParent": "episodeBaseAsset",
"childrenNodesProperties": [
@@ -88,4 +96,4 @@
"autoAdd": true
}
]
}
}
@@ -9,6 +9,14 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Missing Children",
"label": "Add Missing Children",
"relatedUiObject": "Portfolio Parameters",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
@@ -23,7 +31,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->"
},
"propertyNameAtParent": "episodeQuotedAsset",
"childrenNodesProperties": [
@@ -88,4 +96,4 @@
"autoAdd": true
}
]
}
}
@@ -55,7 +55,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Engine->"
"compatibleTypes": "->Trading Engine->Portfolio Engine->"
},
"propertyNameAtParent": "exchangeOrders",
"childrenNodesProperties": [
@@ -0,0 +1,55 @@
{
"type": "Exchange Portfolio Products",
"menuItems": [
{
"action": "Add UI Object",
"label": "Add Market Portfolio Products",
"relatedUiObject": "Market Portfolio Products",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Missing Market Portfolio Products",
"label": "Add Missing Markets",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Market Portfolio Products",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"alternativeIcons": "Use Reference Parent",
"title": [
"Use Reference Parent"
],
"isTitleAllwaysVisible": true,
"addLeftIcons": true,
"level": 3,
"referencingRules": {
"compatibleTypes": "->Crypto Exchange->"
},
"attachingRules": {
"compatibleTypes": "->Project Portfolio Products->"
},
"propertyNameAtParent": "exchangePortfolioProducts",
"childrenNodesProperties": [
{
"name": "marketPortfolioProducts",
"type": "array",
"childType": "Market Portfolio Products",
"autoAdd": false
}
]
}
@@ -0,0 +1,75 @@
{
"type": "Exchange Portfolio Tasks",
"menuItems": [
{
"action": "Run All Market Portfolio Tasks",
"label": "Run All Market Portfolio Tasks",
"askConfirmation": true,
"confirmationLabel": "Confirm to Run",
"workDoneLabel": "Run Request Sent",
"iconPathOn": "run",
"iconPathOff": "run",
"actionFunction": "payload.executeAction"
},
{
"action": "Stop All Market Portfolio Tasks",
"label": "Stop All Market Portfolio Tasks",
"askConfirmation": true,
"confirmationLabel": "Confirm to Stop",
"workDoneLabel": "Stop Request Sent",
"iconPathOn": "stop",
"iconPathOff": "stop",
"actionFunction": "payload.executeAction"
},
{
"action": "Add UI Object",
"label": "Add Market Portfolio Tasks",
"relatedUiObject": "Market Portfolio Tasks",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Missing Market Portfolio Tasks",
"label": "Add Missing Markets",
"askConfirmation": true,
"confirmationLabel": "Confirm to Proceed",
"workDoneLabel": "Done",
"relatedUiObject": "Market Portfolio Tasks",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 2,
"referencingRules": {
"compatibleTypes": "->Crypto Exchange->"
},
"attachingRules": {
"compatibleTypes": "->Project Portfolio Tasks->"
},
"alternativeIcons": "Use Reference Parent",
"title": [
"Use Reference Parent"
],
"isTitleAllwaysVisible": true,
"propertyNameAtParent": "exchangePortfolioTasks",
"childrenNodesProperties": [
{
"name": "marketPortfolioTasks",
"type": "array",
"childType": "Market Portfolio Tasks",
"monitorChildrenRunning": true
}
]
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->->Position->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->Strategy->->Position->Market Order->Limit Order->Strategy Trigger Stage->Strategy Open Stage->Strategy Manage Stage->Strategy Close Stage->"
},
"propertyNameAtParent": "exitType"
}
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode Counters->Learning Episode Counters->Episode Base Asset->Episode Quoted Asset->"
"compatibleTypes": "->Trading Episode Counters->Portfolio Episode Counters->Learning Episode Counters->Episode Base Asset->Episode Quoted Asset->"
},
"propertyNameAtParent": "fails"
}
@@ -28,7 +28,7 @@
},
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Parameters->"
"compatibleTypes": "->Trading Parameters->Portfolio Parameters->"
},
"propertyNameAtParent": "feeStructure"
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->"
},
"propertyNameAtParent": "headOfTheMarket"
}
}
@@ -28,7 +28,7 @@
},
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Parameters->Learning Parameters->"
"compatibleTypes": "->Trading Parameters->Portfolio Parameters->Learning Parameters->"
},
"propertyNameAtParent": "heartbeats"
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode Statistics->Learning Episode Statistics->Position Statistics->Position Base Asset->Position Quoted Asset->Episode Base Asset->Episode Quoted Asset->"
"compatibleTypes": "->Trading Episode Statistics->Portfolio Episode Statistics->Position Statistics->Learning Episode Statistics->Position Statistics->Position Base Asset->Position Quoted Asset->Episode Base Asset->Episode Quoted Asset->"
},
"propertyNameAtParent": "hitFail"
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode Counters->Learning Episode Counters->Episode Base Asset->Episode Quoted Asset->"
"compatibleTypes": "->Trading Episode Counters->Portfolio Episode Counters->Learning Episode Counters->Episode Base Asset->Episode Quoted Asset->"
},
"propertyNameAtParent": "hits"
}
@@ -52,7 +52,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Trading Episode->Learning Episode->Strategy->Position->Market Order->Limit Order->"
"compatibleTypes": "->Trading Episode->Portfolio Episode->Learning Episode->Strategy->Position->Market Order->Limit Order->"
},
"propertyNameAtParent": "identifier"
}
}
@@ -18,7 +18,7 @@
"addLeftIcons": true,
"level": 4,
"attachingRules": {
"compatibleTypes": "->Task->"
"compatibleTypes": "->Task->Portfolio Task->"
},
"referencingRules": {
"compatibleTypes": "->Exchange Account Key->"
@@ -49,6 +49,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "productionPortfolioTasks",
"label": "Add Production Portfolio Tasks",
"relatedUiObject": "Production Portfolio Tasks",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
@@ -107,6 +117,12 @@
"childType": "Production Trading Tasks",
"autoAdd": true
},
{
"name": "productionPortfolioTasks",
"type": "node",
"childType": "Production Portfolio Tasks",
"autoAdd": true
},
{
"name": "dataStorage",
"type": "node",
@@ -23,7 +23,7 @@
"addLeftIcons": true,
"level": 3,
"attachingRules": {
"compatibleTypes": "->Limit Buy Orders->Limit Sell Orders->Trading Last->"
"compatibleTypes": "->Limit Buy Orders->Limit Sell Orders->Trading Last->Portfolio Last->"
},
"propertyNameAtParent": "limitOrders",
"childrenNodesProperties": [
@@ -0,0 +1,130 @@
{
"type": "Live Portfolio Session",
"menuItems": [
{
"action": "Run Portfolio Session",
"label": "Run",
"workingLabel": "Run Request Sent",
"workDoneLabel": "Session Running",
"workFailedLabel": "Session Cannot be Run",
"secondaryAction": "Stop Portfolio Session",
"secondaryLabel": "Stop",
"secondaryWorkingLabel": "Stopping...",
"secondaryWorkDoneLabel": "Session Stopped",
"secondaryWorkFailedLabel": "Session Cannot be Stopped",
"secondaryIcon": "stop",
"iconPathOn": "run",
"iconPathOff": "run",
"actionFunction": "payload.executeAction",
"actionProject": "Portfolio-Management"
},
{
"action": "Resume Portfolio Session",
"label": "Resume",
"workingLabel": "Resume Request Sent",
"workDoneLabel": "Session Running",
"workFailedLabel": "Session Cannot be Resumed",
"secondaryAction": "Stop Portfolio Session",
"secondaryLabel": "Stop",
"secondaryWorkingLabel": "Stopping...",
"secondaryWorkDoneLabel": "Session Stopped",
"secondaryWorkFailedLabel": "Session Cannot be Stopped",
"secondaryIcon": "stop",
"iconPathOn": "resume",
"iconPathOff": "resume",
"actionFunction": "payload.executeAction",
"actionProject": "Portfolio-Management"
},
{
"action": "Configure",
"label": "Configure",
"iconPathOn": "configuration",
"iconPathOff": "configuration",
"dontShowAtFullscreen": true,
"actionFunction": "uiObject.configEditor.activate"
},
{
"action": "Add UI Object",
"label": "Add Social Bots",
"relatedUiObject": "Social Bots",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Social-Bots",
"actionProject": "Visual-Scripting"
},
{
"action": "Add UI Object",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "managedSessions",
"label": "Add Managed Sessions",
"relatedUiObject": "Managed Sessions",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Missing Children",
"label": "Add Missing Children",
"relatedUiObject": "Portfolio Parameters",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"isTitleAllwaysVisible": true,
"addLeftIcons": true,
"editors": {
"config": true
},
"initialValues": {
"config": "{ \n\"folderName\": \"Your-Session-Folder-Name\"\n}"
},
"level": 2,
"referencingRules": {
"compatibleTypes": "->Portfolio System->"
},
"attachingRules": {
"compatibleTypes": "->Portfolio Process Instance->"
},
"childrenNodesProperties": [
{
"name": "portfolioParameters",
"type": "node",
"childType": "Portfolio Parameters",
"autoAdd": true
},
{
"name": "portfolioSystemReference",
"type": "node",
"childType": "Portfolio System Reference",
"autoAdd": true
},
{
"name": "portfolioEngineReference",
"type": "node",
"childType": "Portfolio Engine Reference",
"autoAdd": true
},
{
"name": "socialBots",
"type": "node",
"childType": "Social Bots",
"project": "Social-Bots"
},
{
"name": "managedSessions",
"type": "node",
"childType": "Managed Sessions"
}
],
"propertyNameAtParent": "session"
}
@@ -31,7 +31,7 @@
"addLeftIcons": true,
"level": 1,
"attachingRules": {
"compatibleTypes": "->Trading Strategy->"
"compatibleTypes": "->Trading Strategy->Portfolio Strategy->"
},
"childrenNodesProperties": [
{
@@ -0,0 +1,60 @@
{
"type": "Managed Sessions",
"menuItems": [
{
"action": "Run Managed Sessions",
"label": "Run Managed Sessions",
"askConfirmation": true,
"confirmationLabel": "Confirm to Run",
"workDoneLabel": "Run Request Sent",
"iconPathOn": "run",
"iconPathOff": "run",
"actionFunction": "payload.executeAction",
"actionProject": "Portfolio-Management"
},
{
"action": "Stop Managed Sessions",
"label": "Stop Managed Sessions",
"askConfirmation": true,
"confirmationLabel": "Confirm to Stop",
"workDoneLabel": "Stop Request Sent",
"iconPathOn": "stop",
"iconPathOff": "stop",
"actionFunction": "payload.executeAction",
"actionProject": "Portfolio-Management"
},
{
"action": "Add UI Object",
"label": "Add Session Reference",
"relatedUiObject": "Session Reference",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 2,
"attachingRules": {
"compatibleTypes": "->Live Portfolio Session->"
},
"childrenNodesProperties": [
{
"name": "sessionReference",
"type": "array",
"childType": "Session Reference",
"autoAdd": false,
"monitorChildrenRunning": true
}
],
"propertyNameAtParent": "managedSessions"
}
@@ -0,0 +1,29 @@
{
"type": "Managed Stop Loss PM Formula",
"menuItems": [
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"initialValues": {
"config": "{}"
},
"editors": {
"config": true
},
"level": 4,
"attachingRules": {
"compatibleTypes": "->Managed Stop Loss->"
},
"childrenNodesProperties": [
],
"propertyNameAtParent": "managedStopLossPMFormula"
}
@@ -9,6 +9,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"label": "Add Manged SL Portfolio Formula",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "managedStopLossPMFormula",
"relatedUiObject": "Managed Stop Loss PM Formula",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations",
"actionProject": "Visual-Scripting"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
@@ -31,6 +41,11 @@
"type": "array",
"childType": "Phase",
"autoAdd": true
},
{
"name": "managedStopLossPMFormula",
"type": "node",
"childType": "Managed Stop Loss PM Formula"
}
],
"propertyNameAtParent": "managedStopLoss"
@@ -0,0 +1,29 @@
{
"type": "Managed Take Profit PM Formula",
"menuItems": [
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"initialValues": {
"config": "{}"
},
"editors": {
"config": true
},
"level": 4,
"attachingRules": {
"compatibleTypes": "->Managed Take Profit->"
},
"childrenNodesProperties": [
],
"propertyNameAtParent": "managedTakeProfitPMFormula"
}
@@ -9,6 +9,16 @@
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add UI Object",
"label": "Add Manged TP Portfolio Formula",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "managedTakeProfitPMFormula",
"relatedUiObject": "Managed Take Profit PM Formula",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations",
"actionProject": "Visual-Scripting"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
@@ -31,6 +41,11 @@
"type": "array",
"childType": "Phase",
"autoAdd": true
},
{
"name": "managedTakeProfitPMFormula",
"type": "node",
"childType": "Managed Take Profit PM Formula"
}
],
"propertyNameAtParent": "managedTakeProfit"
@@ -0,0 +1,58 @@
{
"type": "Managed Tasks",
"menuItems": [
{
"action": "Run All Managed Tasks",
"label": "Run All Managed Tasks",
"askConfirmation": true,
"confirmationLabel": "Confirm to Run",
"workDoneLabel": "Run Request Sent",
"iconPathOn": "run",
"iconPathOff": "run",
"actionFunction": "payload.executeAction"
},
{
"action": "Stop All Managed Tasks",
"label": "Stop All Managed Tasks",
"askConfirmation": true,
"confirmationLabel": "Confirm to Stop",
"workDoneLabel": "Stop Request Sent",
"iconPathOn": "stop",
"iconPathOff": "stop",
"actionFunction": "payload.executeAction"
},
{
"action": "Add UI Object",
"label": "Add Task Reference",
"relatedUiObject": "Task Reference",
"actionFunction": "payload.executeAction",
"actionProject": "Visual-Scripting",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
"askConfirmation": true,
"confirmationLabel": "Confirm to Delete",
"label": "Delete",
"iconPathOn": "delete-entity",
"iconPathOff": "delete-entity",
"actionFunction": "payload.executeAction"
}
],
"addLeftIcons": true,
"level": 2,
"attachingRules": {
"compatibleTypes": "->Portfolio Task->"
},
"childrenNodesProperties": [
{
"name": "taskReference",
"type": "array",
"childType": "Task Reference",
"autoAdd": false,
"monitorChildrenRunning": true
}
],
"propertyNameAtParent": "managedTasks"
}
Loaded 100 of 277 files, more files were not shown because too many files have changed in this diff. Show more