Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/Superalgos/Superalgos in…
Browse files Browse the repository at this point in the history
…to develop
  • Loading branch information
whtv committed Dec 28, 2021
2 parents 4b950dc + 6c1caef commit c9a9708
Show file tree
Hide file tree
Showing 24 changed files with 76,217 additions and 60,009 deletions.
3 changes: 2 additions & 1 deletion Platform/PlatformApp.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ exports.newPlatformApp = function newPlatformApp() {
HTTP_INTERFACE = HTTP_INTERFACE.newHttpInterface()
HTTP_INTERFACE.initialize(initialWorkspace)
console.log('Http Interface .............................................. Listening at port ' + global.env.PLATFORM_HTTP_INTERFACE_PORT)
console.log('Initial Workspace............................................ ' + initialWorkspace.project + ' ' + initialWorkspace.name)

console.log('')
console.log("You are running Superalgos Platform " + SA.version)
Expand All @@ -162,4 +163,4 @@ exports.newPlatformApp = function newPlatformApp() {
console.log('[ERROR] Platform App -> Error = ' + err.stack)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,17 @@
"label": "Add Incoming Signals",
"relatedUiObject": "Incoming Signals",
"relatedUiObjectProject": "Trading-Signals"
},
},
{
"action": "Add UI Object",
"actionProject": "Visual-Scripting",
"disableIfPropertyIsDefined": true,
"propertyToCheckFor": "portfolioManagedSystem",
"actionFunction": "payload.executeAction",
"label": "Add Portfolio Managed System",
"relatedUiObject": "Portfolio Managed System",
"relatedUiObjectProject": "Portfolio-Management"
},
{
"action": "Delete UI Object",
"actionProject": "Visual-Scripting",
Expand Down Expand Up @@ -79,6 +89,12 @@
"type": "node",
"childType": "Incoming Signals",
"project": "Trading-Signals"
},
{
"name": "portfolioManagedSystem",
"type": "node",
"childType": "Portfolio Managed System",
"project": "Portfolio-Management"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
let tradingEpisodeModuleObject
let incomingTradingSignalsModuleObject
let outgoingTradingSignalsModuleObject
let portfolioManagerClientModuleObject
let tradingEngineModuleObject

return thisObject
Expand All @@ -45,6 +46,9 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
outgoingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.outgoingTradingSignals.newTradingSignalsModulesOutgoingTradingSignals(processIndex)
outgoingTradingSignalsModuleObject.initialize()

portfolioManagerClientModuleObject = TS.projects.portfolioManagement.modules.portfolioManagerClient.newPortfolioManagementModulesPortfolioManagerClient(processIndex)
portfolioManagerClientModuleObject.initialize()

/* This object is already initialized */
tradingEngineModuleObject = TS.projects.foundations.globals.processModuleObjects.MODULE_OBJECTS_BY_PROCESS_INDEX_MAP.get(processIndex).ENGINE_MODULE_OBJECT
}
Expand All @@ -55,6 +59,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
tradingEpisodeModuleObject.finalize()
incomingTradingSignalsModuleObject.finalize()
outgoingTradingSignalsModuleObject.finalize()
portfolioManagerClientModuleObject.finalize()

tradingSystem = undefined
tradingEngine = undefined
Expand All @@ -65,6 +70,7 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
tradingEpisodeModuleObject = undefined
incomingTradingSignalsModuleObject = undefined
outgoingTradingSignalsModuleObject = undefined
portfolioManagerClientModuleObject = undefined
}

async function runSimulation(
Expand Down Expand Up @@ -123,7 +129,16 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
processIndex
)
/* Signals */
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopIncomingSignals(tradingSystem)
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopIncomingSignals(
incomingTradingSignalsModuleObject,
tradingSystem
)
/* Portfolio Manager */
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopCandleEntryPortfolioManager(
portfolioManagerClientModuleObject,
tradingSystem,
candle
)
/* We emit a heart beat so that the UI can now where we are at the overall process. */
TS.projects.simulation.functionLibraries.simulationFunctions.heartBeat(
sessionParameters,
Expand Down Expand Up @@ -196,7 +211,22 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
tradingRecordsModuleObject.appendRecords()

if (breakLoop === true) {
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopOutgoingSignals(outgoingTradingSignalsModuleObject, tradingSystem, candle)
/*
Outgoing Signals
*/
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopOutgoingSignals(
outgoingTradingSignalsModuleObject,
tradingSystem,
candle
)
/*
Checkout at Portfolio Manager
*/
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopCandleExitPortfolioManager(
portfolioManagerClientModuleObject,
tradingSystem,
candle
)
break
}
/*
Expand All @@ -208,7 +238,22 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
during the second cycle.
*/
await runCycle('Second')
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopOutgoingSignals(outgoingTradingSignalsModuleObject, tradingSystem, candle)
/*
Outgoing Signals
*/
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopOutgoingSignals(
outgoingTradingSignalsModuleObject,
tradingSystem,
candle
)
/*
Checkout at Portfolio Manager
*/
await TS.projects.simulation.functionLibraries.simulationFunctions.syncronizeLoopCandleExitPortfolioManager(
portfolioManagerClientModuleObject,
tradingSystem,
candle
)
/*
Check if we need to stop.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
let announcementsModuleObject = TS.projects.socialBots.botModules.announcements.newSocialBotsBotModulesAnnouncements(processIndex)
let outgoingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.outgoingTradingSignals.newTradingSignalsModulesOutgoingTradingSignals(processIndex)
let incomingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.incomingTradingSignals.newTradingSignalsModulesIncomingTradingSignals(processIndex)
let portfolioManagerClient = TS.projects.portfolioManagement.modules.portfolioManagerClient.newPortfolioManagementModulesPortfolioManagerClient(processIndex)
let portfolioManagerClientModuleObject = 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)

Expand All @@ -50,7 +50,7 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
tradingEpisodeModuleObject.initialize()
outgoingTradingSignalsModuleObject.initialize()
incomingTradingSignalsModuleObject.initialize()
portfolioManagerClient.initialize()
portfolioManagerClientModuleObject.initialize()
}

function finalize() {
Expand Down Expand Up @@ -82,8 +82,8 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {
incomingTradingSignalsModuleObject.finalize()
incomingTradingSignalsModuleObject = undefined

portfolioManagerClient.finalize()
portfolioManagerClient = undefined
portfolioManagerClientModuleObject.finalize()
portfolioManagerClientModuleObject = undefined
}

function updateChart(pChart, pExchange, pMarket) {
Expand Down Expand Up @@ -156,9 +156,11 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {

tradingSystem.values.push([situation.id, passed])

let response = await portfolioManagerClient.askPortfolioEventsManager(triggerStage.triggerOn, passed)
passed = response.raiseEvent

if (triggerStage.triggerOn.askPortfolioEventsManager !== undefined) {
let response = await portfolioManagerClientModuleObject.askPortfolioEventsManager(triggerStage.triggerOn, passed)
passed = response.raiseEvent
}

if (passed) {

tradingSystem.highlights.push(situation.id)
Expand Down Expand Up @@ -213,8 +215,10 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {

tradingSystem.values.push([situation.id, passed])

let response = await portfolioManagerClient.askPortfolioEventsManager(triggerStage.triggerOff, passed)
passed = response.raiseEvent
if (triggerStage.triggerOff.askPortfolioEventsManager !== undefined) {
let response = await portfolioManagerClientModuleObject.askPortfolioEventsManager(triggerStage.triggerOff, passed)
passed = response.raiseEvent
}

if (passed) {
tradingSystem.highlights.push(situation.id)
Expand Down Expand Up @@ -258,8 +262,10 @@ exports.newAlgorithmicTradingBotModulesTradingStages = function (processIndex) {

tradingSystem.values.push([situation.id, passed])

let response = await portfolioManagerClient.askPortfolioEventsManager(triggerStage.takePosition, passed)
passed = response.raiseEvent
if (triggerStage.takePosition.askPortfolioEventsManager !== undefined) {
let response = await portfolioManagerClientModuleObject.askPortfolioEventsManager(triggerStage.takePosition, passed)
passed = response.raiseEvent
}

if (passed) {
tradingSystem.highlights.push(situation.id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
let sessionParameters
let dynamicIndicators

let tradingStagesModuleObject = TS.projects.algorithmicTrading.botModules.tradingStages.newAlgorithmicTradingBotModulesTradingStages(processIndex)
let portfolioManagerClient = TS.projects.portfolioManagement.modules.portfolioManagerClient.newPortfolioManagementModulesPortfolioManagerClient(processIndex)
let incomingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.incomingTradingSignals.newTradingSignalsModulesIncomingTradingSignals(processIndex)
let outgoingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.outgoingTradingSignals.newTradingSignalsModulesOutgoingTradingSignals(processIndex)
let tradingStagesModuleObject
let incomingTradingSignalsModuleObject
let outgoingTradingSignalsModuleObject
let portfolioManagerClient

let taskParameters = {
market: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName +
Expand All @@ -46,9 +46,15 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
tradingSystem.conditions = new Map()
tradingSystem.formulas = new Map()

tradingStagesModuleObject = TS.projects.algorithmicTrading.botModules.tradingStages.newAlgorithmicTradingBotModulesTradingStages(processIndex)
incomingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.incomingTradingSignals.newTradingSignalsModulesIncomingTradingSignals(processIndex)
outgoingTradingSignalsModuleObject = TS.projects.tradingSignals.modules.outgoingTradingSignals.newTradingSignalsModulesOutgoingTradingSignals(processIndex)
portfolioManagerClient = TS.projects.portfolioManagement.modules.portfolioManagerClient.newPortfolioManagementModulesPortfolioManagerClient(processIndex)

tradingStagesModuleObject.initialize()
incomingTradingSignalsModuleObject.initialize()
outgoingTradingSignalsModuleObject.initialize()
portfolioManagerClient.initialize()

/* Adding Functions used elsewhere to Trading System Definition */
tradingSystem.checkConditions = function (situation, passed) {
Expand Down Expand Up @@ -463,8 +469,10 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
Now that we have the value of the formula, we will check with the Porfolio Manager
to see if we can use this value, or we need to use something else.
*/
let response = await portfolioManagerClient.askPortfolioFormulaManager(parentNode, value)
value = response.value
if (parentNode.askPortfolioFormulaManager !== undefined) {
let response = await portfolioManagerClient.askPortfolioFormulaManager(parentNode, value)
value = response.value
}
/*
Now we actually have the final value. We will check if we need to broadcast a signals
with this value as context or not.
Expand Down
44 changes: 44 additions & 0 deletions Projects/Foundations/Icons-SVG-Sources/exchanges/latoken.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit c9a9708

Please sign in to comment.