From ac29a6f8634bcd0bb4ae0dc6f049399a3355b36e Mon Sep 17 00:00:00 2001 From: Smidy13 <77650800+Smidy13@users.noreply.github.com> Date: Sun, 25 Apr 2021 18:35:46 +1200 Subject: [PATCH 1/4] Bug Fix: Adding in Handling for 'Closing' state of Close Stage --- .../Low-Frequency-Trading/TradingStages.js | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js index 876a4a3a8..52efea02d 100644 --- a/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js +++ b/Projects/Superalgos/TS/Bot-Modules/Trading-Bot/Low-Frequency-Trading/TradingStages.js @@ -800,6 +800,7 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { runWhenStatusIsOpening() await runWhenStatusIsOpen() + await runWhenStatusIsClosing() function runWhenStatusIsOpening() { @@ -861,6 +862,58 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { } } + async function runWhenStatusIsClosing() { + /* Closing Status Procedure */ + if (tradingEngine.tradingCurrent.strategyCloseStage.status.value === 'Closing') { + /* + During the closing stage status, we do not place new orders, just check + if the ones placed were filled, and cancel the ones not filled. + */ + let tradingSystemStage = tradingSystem.tradingStrategies[tradingEngine.tradingCurrent.strategy.index.value].closeStage + let executionNode = tradingSystemStage.closeExecution + + /* + Check if there are unfilled orders, we will check if they were executed, + and cancel the ones that were not. + */ + tradingSystem.evalConditions(tradingSystemStage, 'Close Execution') + tradingSystem.evalFormulas(tradingSystemStage, 'Close Execution') + + await tradingExecutionModuleObject.runExecution( + executionNode, + tradingEngine.tradingCurrent.strategyCloseStage + ) + + /* + The Closing is finished when the sizeFilled + feesPaid reaches the sizePlaced. + This can happens either because we update the sizeFilled value when we see + at the exchange that orders were filled, or we reduce the sizePlaced when + we cancel not yet filled orders. Here it does not matter the targetSize since + this status represent a force closure of this stage. + */ + switch (tradingEngine.tradingCurrent.strategyCloseStage.stageDefinedIn.value) { + case 'Base Asset': { + if ( + tradingEngine.tradingCurrent.strategyCloseStage.stageBaseAsset.sizeFilled.value >= + tradingEngine.tradingCurrent.strategyCloseStage.stageBaseAsset.sizePlaced.value + ) { + changeStageStatus('Close Stage', 'Closed') + } + break + } + case 'Quoted Asset': { + if ( + tradingEngine.tradingCurrent.strategyCloseStage.stageQuotedAsset.sizeFilled.value >= + tradingEngine.tradingCurrent.strategyCloseStage.stageQuotedAsset.sizePlaced.value + ) { + changeStageStatus('Close Stage', 'Closed') + } + break + } + } + } + } + function initializeStageTargetSize() { /* Validations that all needed nodes are there. @@ -887,6 +940,7 @@ exports.newSuperalgosBotModulesTradingStages = function (processIndex) { initialized to their defualts. */ if (tradingEngine.tradingCurrent.position.status.value !== 'Open' && tradingEngine.tradingCurrent.position.status.value !== 'Closing') { return } + if (tradingEngine.tradingCurrent.position.status.value !== 'Close' && tradingEngine.tradingCurrent.position.status.value !== 'Closing') { return } if ( ( tradingEngine.tradingCurrent.strategyTriggerStage.status.value === 'Closed' || From d9f4fef9ae0ac3bc6c77fe655d5d88cb87113812 Mon Sep 17 00:00:00 2001 From: Smidy13 <77650800+Smidy13@users.noreply.github.com> Date: Sun, 25 Apr 2021 21:23:23 +1200 Subject: [PATCH 2/4] Bug Fix: Trading Session getting stuck on Run Request Sent --- .../TradingSessionFunctions.js | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/Projects/Superalgos/UI/Function-Libraries/TradingSessionFunctions.js b/Projects/Superalgos/UI/Function-Libraries/TradingSessionFunctions.js index b16c7e12d..b4e025336 100644 --- a/Projects/Superalgos/UI/Function-Libraries/TradingSessionFunctions.js +++ b/Projects/Superalgos/UI/Function-Libraries/TradingSessionFunctions.js @@ -56,10 +56,36 @@ function newSuperalgosFunctionLibraryTradingSessionFunctions() { let eventsServerClient = UI.projects.superalgos.spaces.designSpace.workspace.eventsServerClients.get(networkNode.id) - node.payload.uiObject.run(eventsServerClient, callBackFunction) - let key = node.name + '-' + node.type + '-' + node.id + /* Setup Listener to check Parent Task Status of the Session */ + let eventSubscriptionIdOnStatus + let eventHandlerKey = "Task Client - " + node.payload.parentNode.payload.parentNode.payload.parentNode.id + + eventsServerClient.listenToEvent(eventHandlerKey, 'Task Status', undefined, node.id, onResponse, onStatus) + + function onResponse(message) { + eventSubscriptionIdOnStatus = message.eventSubscriptionId + } + + function onStatus(message) { + eventsServerClient.stopListening(eventHandlerKey, eventSubscriptionIdOnStatus, node.id) + + /* If Task is Not Running Display Error */ + if (message.event.status === 'Task Process Not Running') { + node.payload.uiObject.setErrorMessage('Parent Task Not Running.') + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } else { + node.payload.uiObject.run(eventsServerClient, callBackFunction) + } + } + + /* Raise Event to Check Task Status */ + let eventKey = {} + eventKey.taskId = node.payload.parentNode.payload.parentNode.payload.parentNode.id + + eventsServerClient.raiseEvent("Task Manager", 'Task Status', eventKey) + let lightingPath = '' + 'Trading System->' + 'Dynamic Indicators->Indicator Function->Formula->' + From 17d21c501d03bf72ad574a2f768d17b1f4b1acb0 Mon Sep 17 00:00:00 2001 From: Smidy13 <77650800+Smidy13@users.noreply.github.com> Date: Mon, 26 Apr 2021 00:40:30 +1200 Subject: [PATCH 3/4] Improvement: Telegram Test Function --- .../Icons-SVG-Sources/menu/test.svg | 41 ++++++++++ Projects/Superalgos/Icons/test-entity.png | Bin 0 -> 19960 bytes Projects/Superalgos/Schemas/AppSchema.json | 7 ++ .../UI/Function-Libraries/ActionSwitch.js | 5 ++ .../Function-Libraries/SocialBotsFunctions.js | 73 ++++++++++++++++++ 5 files changed, 126 insertions(+) create mode 100644 Projects/Superalgos/Icons-SVG-Sources/menu/test.svg create mode 100644 Projects/Superalgos/Icons/test-entity.png create mode 100644 Projects/Superalgos/UI/Function-Libraries/SocialBotsFunctions.js diff --git a/Projects/Superalgos/Icons-SVG-Sources/menu/test.svg b/Projects/Superalgos/Icons-SVG-Sources/menu/test.svg new file mode 100644 index 000000000..bff868d7a --- /dev/null +++ b/Projects/Superalgos/Icons-SVG-Sources/menu/test.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/Superalgos/Icons/test-entity.png b/Projects/Superalgos/Icons/test-entity.png new file mode 100644 index 0000000000000000000000000000000000000000..c42733847461a6534b578dbaff71764c922655ea GIT binary patch literal 19960 zcmd>m_dnJDAL#p>W0sXYLz1#bWRop*jO-EFGqPozQ;I@VN{M5Zk*v%JM|NanCLGx_ zjy;ZZ?#t(U?_Y8Ir967SUa#lgPtS~yy0m9F&p;4FtFNbJ0zq)_PdG$H0sh(v9Xf&_ zK1g5dx@lVuBFAyPXS%HkV7Q}F`PT6{S*eSzpOz6fg|S} z|Gzs@fM^N~I6~AiWA8w!@sVz!o>ou;v_nz$mH1VEP3hyCM5vz$+YQ|rP{YAD8!T+D zJF_FuVkU$Q$}(2xmh2O7L^aVX7FX)@E-1if`y2YToa ze2IOtx_!lfb}$4{%Z5!D3(+H&H6w66h~dxj|F=H;u?rPqXBWBb1{GjNm`SZ(4@BPc zXDQdM{$UOGFpP}rP>vLj6hhZSH)lia<=U7@k9TlmZ}_taanukuWtQBHE5!a@x1_Q` ztF%CJKNz|O_Kj}Zk(G40iznkc)DAnK!lGd5WDak}LT++ZT{-2>pNd}+#v;s9?lMP2>Z8X?%{(slq4IXLZ}B- zRUHVi!>vcGD3ilX>{;qfDHr)Yk>L$8ewfDVe)X#P3$=7VMgIH96AjCHQ0*nzX{aDc zR=X0YW?$MDSUO6=dE2w)ToR>qK&?y4n`zFqKPL?r{O{gR39u~1S2IoCsU$BN*sckL z9LRRe91nE1yL)37y8 zW(i_BKa$V!qo}9tcx)W{1M7NpCWS^fjK+66+0C5X?;QFH6h-M!1vO$l*?_32 zKaqr9TNKBmzArMoNMDm!6|q#->2gzp`@K)pmO=^%Zw(yD3IlmZpP5ebI;4>_Auu&Q zK^JrOj8%)^CiAg@a6eIW2t;VB;J7q8x=-->4+58V$ml#`2U`g~SAC2Y3(8_y9%zcM zczsz^nmk;G*XOy6k*SU2$5XEV0F++;%u0GZ%ux2M_xs)>x~dz@$%zkir|mG&SVz4Y z^HZE$zC-WftkRmm#4VIX!w%h8 zG{74Mmfoj&kvbezRHLfv@6VFc7C2HvF*Trs;PI>t|I9|xvX4Pm--Rwe_ia-%j%VOg zbM9Cz?j1Z-lMV02(wfA1u`WppliNC98>5KjE)8(cKcrnbG4- zjfD|%6PVU3TWe-A9jGp!L#VHMZ-n6uO%=&H>AQH25Y^8rUO$bi;zeHzVqZ&SneeKL z>T4=yhu^?LM&H(VgJf~>s2oOq^{6ZzSSSy6s@LR#aGSp(%^nv-Vc|f3sSQQz_RJnA z$TL`$d^QV7O94P2Mqt}gP&3x{&LaPZbKy3Ye0}=5J2?e9*g>FJ+KGY

Iy=jS<*jhnTm12LQQm;M1vW!`+=Bx#h@3!o#NFq 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 RMiqj?%l#;=(KX_){{}lLZkzxB literal 0 HcmV?d00001 diff --git a/Projects/Superalgos/Schemas/AppSchema.json b/Projects/Superalgos/Schemas/AppSchema.json index a91037675..b28029cc8 100644 --- a/Projects/Superalgos/Schemas/AppSchema.json +++ b/Projects/Superalgos/Schemas/AppSchema.json @@ -14879,6 +14879,13 @@ "iconPathOn": "configuration", "iconPathOff": "configuration" }, + { + "action": "Send Telegram Test Message", + "label": "Send Telegram Test Message", + "iconPathOn": "test-entity", + "iconPathOff": "test-entity", + "actionFunction": "payload.executeAction" + }, { "action": "Delete UI Object", "askConfirmation": true, diff --git a/Projects/Superalgos/UI/Function-Libraries/ActionSwitch.js b/Projects/Superalgos/UI/Function-Libraries/ActionSwitch.js index da50856fe..5e2324136 100644 --- a/Projects/Superalgos/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Superalgos/UI/Function-Libraries/ActionSwitch.js @@ -712,6 +712,11 @@ function newSuperalgosActionSwitch() { UI.projects.superalgos.spaces.floatingSpace.uiObjectConstructor.createUiObject(true, action.node.payload) } break + case 'Send Telegram Test Message': + { + UI.projects.superalgos.functionLibraries.socialBotsFunctions.sendTelegramTestMessage(action.node, action.callBackFunction) + } + break } } } diff --git a/Projects/Superalgos/UI/Function-Libraries/SocialBotsFunctions.js b/Projects/Superalgos/UI/Function-Libraries/SocialBotsFunctions.js new file mode 100644 index 000000000..ad4be83fb --- /dev/null +++ b/Projects/Superalgos/UI/Function-Libraries/SocialBotsFunctions.js @@ -0,0 +1,73 @@ +function newSuperalgosFunctionLibrarySocialBotsFunctions() { + thisObject = { + sendTelegramTestMessage: sendTelegramTestMessage + } + + return thisObject + + function sendTelegramTestMessage(node, callBackFunction) { + + let botToken = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(node.payload, 'botToken') + let chatId = UI.projects.superalgos.utilities.nodeConfig.loadPropertyFromNodeConfig(node.payload, 'chatId') + + if (botToken === undefined) { + node.payload.uiObject.setErrorMessage('botToken parameter not defined.') + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + if (chatId === undefined) { + node.payload.uiObject.setErrorMessage('chatId parameter not defined.') + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let params = { + text: "Test Message from Superalgos", + chat_id: chatId + } + + httpRequestJSON(JSON.stringify(params),"https://api.telegram.org/bot" + botToken + "/sendMessage", onResponse) + + function onResponse(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setInfoMessage('Telegram message sent.') + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } else { + node.payload.uiObject.setErrorMessage('Could not send Telegram message. Error Response: ' + err.message) + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function httpRequestJSON(pContentToSend, pPath, callBackFunction) { + let xmlHttpRequest = new XMLHttpRequest(); + xmlHttpRequest.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, xmlHttpRequest.responseText); + return; + } else if (this.readyState === 4 && (this.status === 404 || this.status === 401 || this.status === 400)) { + callBackFunction({ + result: "Fail", + message: JSON.parse(xmlHttpRequest.responseText).description, + code: JSON.parse(xmlHttpRequest.responseText).error_code + }); + return; + } + }; + + if (pContentToSend === undefined) { + xmlHttpRequest.open("GET", pPath, true); + xmlHttpRequest.send(); + } else { + try { + let blob = new Blob([pContentToSend], { type: 'application/json' }); + xmlHttpRequest.open("POST", pPath, true); + xmlHttpRequest.send(blob); + } catch (err) { + if (ERROR_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[ERROR] callServer -> err.message = " & err.message); } + callBackFunction({ result: "Fail", message: err.message }) + } + } + } + } +} From 9419d0b8495bee9cb5d3693a19f52c223084f0e2 Mon Sep 17 00:00:00 2001 From: Smidy13 <77650800+Smidy13@users.noreply.github.com> Date: Mon, 26 Apr 2021 17:34:09 +1200 Subject: [PATCH 4/4] Adding ProjectSchema changes for Telegram Test Function. Also Bug Fix: Tutorial Not Loading --- Projects/ProjectsSchema.json | 5 +++++ Projects/Superalgos/UI/Spaces/Design-Space/Workspace.js | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 5f20a722c..a935d28de 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -120,6 +120,11 @@ "name": "Workspace Functions", "propertyName": "workspaceFunctions", "functionName": "newSuperalgosFunctionLibraryWorkspaceFunctions" + }, + { + "name": "Social Bots Functions", + "propertyName": "socialBotsFunctions", + "functionName": "newSuperalgosFunctionLibrarySocialBotsFunctions" } ], "utilities": [ diff --git a/Projects/Superalgos/UI/Spaces/Design-Space/Workspace.js b/Projects/Superalgos/UI/Spaces/Design-Space/Workspace.js index 2cda4ca82..64667840a 100644 --- a/Projects/Superalgos/UI/Spaces/Design-Space/Workspace.js +++ b/Projects/Superalgos/UI/Spaces/Design-Space/Workspace.js @@ -112,12 +112,16 @@ function newWorkspace() { function onIndexingFinished() { setupEventsServerClients() - setTimeout(runTasksAndSessions, 10000) + runTasksAndSessions() + thisObject.enabled = true UI.projects.superalgos.spaces.cockpitSpace.initializePosition() CAN_SPACES_DRAW = true thisObject.isInitialized = true + + playTutorials() + savingWorkspaceIntervalId = setInterval(saveWorkspace, 60000) UI.projects.superalgos.utilities.statusBar.changeStatus("Displaying the UI...") } @@ -132,6 +136,9 @@ function newWorkspace() { executeAction({ name: 'Syncronize Tasks', project: 'Superalgos' }) executeAction({ name: 'Syncronize Trading Sessions', project: 'Superalgos' }) executeAction({ name: 'Syncronize Learning Sessions', project: 'Superalgos' }) + } + + function playTutorials() { executeAction({ name: 'Play Tutorials', project: 'Superalgos' }) }