diff --git a/Integrations/Projects/Superalgos/Function-Libraries/ChartingSpaceFunctions.js b/Integrations/Projects/Superalgos/Function-Libraries/ChartingSpaceFunctions.js index 30b99b63a..0765fd6f1 100644 --- a/Integrations/Projects/Superalgos/Function-Libraries/ChartingSpaceFunctions.js +++ b/Integrations/Projects/Superalgos/Function-Libraries/ChartingSpaceFunctions.js @@ -120,37 +120,8 @@ function newChartingSpaceFunctions() { timeMachine.timeScale.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 timeMachine.rateScale.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 /* - We need to create a Timeline Chart for each Data Mine Indicators. + We will create 3 Time Line Charts for the Trading Mine Products */ - mineProducts = UI.projects.superalgos.utilities.branches.nodeBranchToArray(networkNode, 'Data Mine Products') - for (let j = 0; j < mineProducts.length; j++) { - let mineProduct = mineProducts[j] - /* - We need to filter out the ones that do not belong to the market where - the session is running at. - */ - if (mineProduct.payload.parentNode.payload.referenceParent === undefined) { continue } - if (mineProduct.payload.parentNode.payload.referenceParent.id !== market.id) { continue } - - let timelineChart = functionLibraryUiObjectsFromNodes.addUIObject(timeMachine, 'Timeline Chart') - /* - The Mine Product Node might be collapesd and since its creation it never - received the physics call, so we will do the call so that it properly - sets its own name, which we are going to reuse here. - */ - mineProduct.payload.uiObject.invisiblePhysics() - timelineChart.name = mineProduct.name - timelineChart.layerManager.payload.referenceParent = mineProduct - timelineChart.payload.floatingObject.collapseToggle() - timelineChart.layerManager.payload.floatingObject.collapseToggle() - timelineChart.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - timelineChart.layerManager.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - - let menu = timelineChart.layerManager.payload.uiObject.menu - menu.internalClick('Add All Mine Layers') - menu.internalClick('Add All Mine Layers') - } - mineProducts = UI.projects.superalgos.utilities.branches.nodeBranchToArray(networkNode, 'Trading Mine Products') for (let j = 0; j < mineProducts.length; j++) { let mineProduct = mineProducts[j] @@ -207,6 +178,37 @@ function newChartingSpaceFunctions() { } } } + /* + We need to create a Timeline Chart for each Data Mine Indicators. + */ + mineProducts = UI.projects.superalgos.utilities.branches.nodeBranchToArray(networkNode, 'Data Mine Products') + for (let j = 0; j < mineProducts.length; j++) { + let mineProduct = mineProducts[j] + /* + We need to filter out the ones that do not belong to the market where + the session is running at. + */ + if (mineProduct.payload.parentNode.payload.referenceParent === undefined) { continue } + if (mineProduct.payload.parentNode.payload.referenceParent.id !== market.id) { continue } + + let timelineChart = functionLibraryUiObjectsFromNodes.addUIObject(timeMachine, 'Timeline Chart') + /* + The Mine Product Node might be collapesd and since its creation it never + received the physics call, so we will do the call so that it properly + sets its own name, which we are going to reuse here. + */ + mineProduct.payload.uiObject.invisiblePhysics() + timelineChart.name = mineProduct.name + timelineChart.layerManager.payload.referenceParent = mineProduct + timelineChart.payload.floatingObject.collapseToggle() + timelineChart.layerManager.payload.floatingObject.collapseToggle() + timelineChart.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + timelineChart.layerManager.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + + let menu = timelineChart.layerManager.payload.uiObject.menu + menu.internalClick('Add All Mine Layers') + menu.internalClick('Add All Mine Layers') + } } function addMissingDashboards(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { diff --git a/Integrations/Projects/Superalgos/Function-Libraries/CryptoEcosystemFunctions.js b/Integrations/Projects/Superalgos/Function-Libraries/CryptoEcosystemFunctions.js index c9329af3c..ea929d6a1 100644 --- a/Integrations/Projects/Superalgos/Function-Libraries/CryptoEcosystemFunctions.js +++ b/Integrations/Projects/Superalgos/Function-Libraries/CryptoEcosystemFunctions.js @@ -206,7 +206,14 @@ function newCryptoEcosystemFunctions() { } } - function installMarket(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) { + function installMarket( + node, + rootNodes, + functionLibraryUiObjectsFromNodes, + functionLibraryNodeDeleter, + functionLibraryChartingSpaceFunctions, + functionLibraryDataStorageFunctions + ) { let market = node let cryptoExchange = UI.projects.superalgos.utilities.meshes.findNodeInNodeMesh(node, 'Crypto Exchange', undefined, true, false, true, false) diff --git a/TaskServer/LowFrequencyTrading/OrdersSimulations.js b/TaskServer/LowFrequencyTrading/OrdersSimulations.js index 435f4cd98..7359d1ed5 100644 --- a/TaskServer/LowFrequencyTrading/OrdersSimulations.js +++ b/TaskServer/LowFrequencyTrading/OrdersSimulations.js @@ -89,7 +89,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) { tradingSystem.warnings.push( [ - sessionParameters.slippage.id, + [sessionParameters.slippage.id, tradingEngineOrder.rate.id, tradingEngineOrder.orderStatistics.actualRate.id], 'slippage.config.positionRate Slippage Amount (' + slippageAmount + ') substracted from Order Rate (' + tradingEngineOrder.rate.value + ') to get the Actual Rate (' + tradingEngineOrder.orderStatistics.actualRate.value + ')' ] ) @@ -101,7 +101,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) { tradingSystem.warnings.push( [ - sessionParameters.slippage.id, + [sessionParameters.slippage.id, tradingEngineOrder.rate.id, tradingEngineOrder.orderStatistics.actualRate.id], 'slippage.config.positionRate Slippage Amount (' + slippageAmount + ') added to Order Rate (' + tradingEngineOrder.rate.value + ') to get the Actual Rate (' + tradingEngineOrder.orderStatistics.actualRate.value + ')' ] ) @@ -136,7 +136,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) { tradingSystem.warnings.push( [ tradingSystemOrder.simulatedExchangeEvents.simulatedActualRate.formula.id, - 'Actual Rate (' + tradingEngineOrder.orderStatistics.actualRate.value + ') replaced by this Formula value (' + newValue + ')' + 'Actual Rate (' + tradingEngineOrder.orderStatistics.actualRate.value + ') calculated with this Formula (' + newValue + ')' ] ) tradingEngineOrder.orderStatistics.actualRate.value = newValue @@ -163,7 +163,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) { if (tradingEngineOrder.orderStatistics.actualRate.value > tradingEngine.current.episode.candle.max.value) { tradingSystem.warnings.push( [ - tradingEngineOrder.orderStatistics.actualRate.id, + [tradingEngineOrder.orderStatistics.actualRate.id, tradingEngine.current.episode.candle.max.id], 'Actual Rate (' + tradingEngineOrder.orderStatistics.actualRate.value + ') too high. Changed to candle.max (' + tradingEngine.current.episode.candle.max.value + ')' ] ) @@ -175,7 +175,7 @@ exports.newOrdersSimulations = function newOrdersSimulations(bot, logger) { if (tradingEngineOrder.orderStatistics.actualRate.value < tradingEngine.current.episode.candle.min.value) { tradingSystem.warnings.push( [ - tradingEngineOrder.orderStatistics.actualRate.id, + [tradingEngineOrder.orderStatistics.actualRate.id, tradingEngine.current.episode.candle.min.id], 'Actual Rate (' + tradingEngineOrder.orderStatistics.actualRate.value + ') too low. Changed to candle.min (' + tradingEngine.current.episode.candle.max.value + ')' ] ) diff --git a/TaskServer/LowFrequencyTrading/TradingOrders.js b/TaskServer/LowFrequencyTrading/TradingOrders.js index b553f665c..9435c36cb 100644 --- a/TaskServer/LowFrequencyTrading/TradingOrders.js +++ b/TaskServer/LowFrequencyTrading/TradingOrders.js @@ -262,7 +262,7 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM if (tradingEngineOrder.orderBaseAsset.size.value <= 0) { tradingSystem.warnings.push( [ - tradingEngineOrder.orderBaseAsset.size.id, + [tradingEngineOrder.orderBaseAsset.size.id, tradingSystemOrder.id], 'Could not open this order because its size is zero.' ] ) @@ -272,7 +272,7 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM if (tradingEngineOrder.orderQuotedAsset.size.value <= 0) { tradingSystem.warnings.push( [ - tradingEngineOrder.orderQuotedAsset.size.id, + [tradingEngineOrder.orderQuotedAsset.size.id, tradingSystemOrder.id ], 'Could not open this order because its size is zero.' ] ) @@ -284,13 +284,7 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM if (result !== true) { tradingSystem.warnings.push( [ - tradingSystemOrder.id, - 'Could not open this order because something failed placing the order at the Exchange.' - ] - ) - tradingSystem.warnings.push( - [ - tradingEngineOrder.id, + [tradingSystemOrder.id, tradingEngineOrder], 'Could not open this order because something failed placing the order at the Exchange.' ] ) @@ -396,7 +390,7 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM tradingSystem.warnings.push( [ - tradingEngineStage.stageBaseAsset.targetSize.id, + [tradingEngineStage.stageBaseAsset.targetSize.id, tradingEngineOrder.orderBaseAsset.size.id, tradingEngineStage.stageBaseAsset.sizePlaced.id], 'Order size (' + previousValue + ') shrinked (' + tradingEngineOrder.orderBaseAsset.size.value + ') so that the Size Placed (' + tradingEngineStage.stageBaseAsset.sizePlaced.value + ') does not exceed the Target Size (' + tradingEngineStage.stageBaseAsset.targetSize.value + ') for the stage.' ] ) @@ -423,7 +417,7 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM tradingSystem.warnings.push( [ - tradingEngineStage.stageQuotedAsset.targetSize.id, + [tradingEngineStage.stageQuotedAsset.targetSize.id, tradingEngineOrder.orderQuotedAsset.size.id, tradingEngineStage.stageQuotedAsset.sizePlaced.id], 'Order size (' + previousValue + ') shrinked (' + tradingEngineOrder.orderQuotedAsset.size.value + ') so that the Size Placed (' + tradingEngineStage.stageQuotedAsset.sizePlaced.value + ') does not exceed the Target Size (' + tradingEngineStage.stageQuotedAsset.targetSize.value + ') for the stage.' ] ) @@ -529,7 +523,8 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM if (order === undefined) { tradingSystem.warnings.push( [ - tradingSystemOrder.id, 'Could not verify the status of this order at the exchange.' + [tradingSystemOrder.id, tradingEngineOrder.id], + 'Could not verify the status of this order at the exchange.' ] ) return false @@ -907,7 +902,7 @@ exports.newTradingOrders = function newTradingOrders(bot, logger, tradingEngineM if (order === undefined) { tradingSystem.warnings.push( [ - tradingSystemOrder.id, + [tradingSystemOrder.id, tradingEngineOrder.id], 'Could not verify the status of this order at the exchange, and syncronize the accounting.' ] )