Compare commits

...
Author SHA1 Message Date
Luis Fernando Molina efe38cae1a Merge pull request #2772 from PLuv/portfolio-management
Portfolio management
2021-11-29 06:02:19 -04:00
Philip Love 4817cd48d6 Merge remote-tracking branch 'origin/develop' into portfolio-management 2021-11-29 04:51:40 -05:00
Philip Love d6b3b161d4 Fixing Conflicts 2021-11-29 04:46:33 -05:00
Superalgos Bot b2af4fe021 Changes in User Profile done by Profile Owner MarcusGehring79 automatically merged by Superalgos.
User profile
2021-11-29 10:39:07 +01:00
Luis Fernando Molina f916a40ebb Merge pull request #2770 from PLuv/portfolio-management
Portfolio management
2021-11-29 05:11:44 -04:00
Philip Love 0116657897 Add Schemas for Trading System Porfolio events and formulas 2021-11-29 03:57:16 -05:00
Philip Love 66f422bf68 ADD|MODIFY Many Functionalities to portfolio-management to get us to step 4 2021-11-28 23:29:48 -05:00
Luis Fernando Molina 53422cbd74 Merge pull request #2759 from Luis-Fernando-Molina/develop
Contribution: bug fixed Product Definition not attaching to indicator Bots
2021-11-28 09:19:52 -04:00
Luis Fernando Molina f128c58b03 bug fixed Product Definition not attaching to indicator Bots 2021-11-28 14:18:54 +01:00
Luis Fernando Molina 34c7ce3913 Merge pull request #2756 from Raplh2502/develop
Contribution: Add return and price probability analyzers to Polus data mine
2021-11-28 06:23:58 -04:00
MarcusGehring79 93b0da92e1 User profile 2021-11-28 09:39:11 +05:30
Raplh2502 1a4ce7b1d6 Add reture and price probability analyzers to Polus data mine 2021-11-27 23:46:04 +01:00
Luis Fernando Molina 77bff33162 Merge pull request #2755 from Luis-Fernando-Molina/develop
Contribution: Task Server connecting itself to the p2p Network
2021-11-27 15:12:21 -04:00
Luis Fernando Molina 524c9ec28a Task Server connecting itself to the p2p Network 2021-11-27 20:10:35 +01:00
Luis Fernando Molina dfca398d7a Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-27 20:10:12 +01:00
Superalgos Bot f20c93e0b7 Changes in User Profile done by Profile Owner vraptor75011 automatically merged by Superalgos.
Contribution: User Profile vraptor75011
2021-11-27 16:54:36 +01:00
Luis Fernando Molina d0ec82b68e Merge pull request #2746 from end-debug/develop
Contribution: This is my contribution to Superalgos
2021-11-27 11:53:10 -04:00
Luis Fernando Molina d571630134 Task Server App Reference Implemented 2021-11-27 16:52:30 +01:00
Luis Fernando Molina 4e9af8fb7b Signals Nodes Arriving at the TS 2021-11-27 15:00:42 +01:00
vraptor75011 bf82bae8de User Profile vraptor75011 2021-11-27 14:40:14 +01:00
Luis Fernando Molina 93e49639fd Merge pull request #2747 from Luis-Fernando-Molina/develop
Contribution: merging
2021-11-26 18:45:00 -04:00
Luis Fernando Molina ce8f209917 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-26 23:41:38 +01:00
Luis Fernando Molina 0d6a16ecaa Merge pull request #2736 from EvaMaria70/develop
Contribution: This is my contribution to Superalgos
2021-11-26 18:32:36 -04:00
Luis Fernando Molina 00d1b622ef conflicts resolved 2021-11-26 23:29:32 +01:00
SIFISO KHUMALO 59d242507c Merge branch 'Superalgos:develop' into develop 2021-11-27 00:28:52 +02:00
Luis Fernando Molina 3f770ebc9e Merge branch 'develop' of https://github.com/Superalgos/Superalgos into pr/2736 2021-11-26 23:26:45 +01:00
SIFISO KHUMALO 88e83a37ee This is my contribution to Superalgos 2021-11-27 00:18:28 +02:00
Luis Fernando Molina 2558318d6c Merge pull request #2737 from gitforkgit/develop
Contribution: (Translation into german: Multiple articles)
2021-11-26 18:17:51 -04:00
Luis Fernando Molina 3d73a122ef Merge pull request #2740 from markinho91/develop
Develop
2021-11-26 18:17:36 -04:00
Luis Fernando Molina 0d5615a7a8 Merge pull request #2743 from mx57/develop
Translation into Russian Chapter XI tutorial docs steps 1-10
2021-11-26 18:17:18 -04:00
Philip Love 67fccaae2d Merge develop --> portfolio-management
This commit and next resolve conflicts with the aforementioned merge

possible unstashed new files have slipped through to p-m branch with these commits
2021-11-26 14:12:02 -05:00
Luis Fernando Molina a25148bc06 More Signal Schemas 2021-11-26 12:18:16 +01:00
Luis Fernando Molina 7fd8bc825c Merge pull request #2741 from NAmorim/develop
Better handling of automatic repository fork
2021-11-26 07:15:12 -04:00
mx57 4cab274e96 Translation into Russian Chapter XI tutorial docs steps 1-10 2021-11-26 13:07:21 +03:00
Superalgos Bot 2fbb0153b4 Changes in User Profile done by Profile Owner Barrypair automatically merged by Superalgos.
Contribution: userprofile Barrypair
2021-11-26 09:50:06 +01:00
Barrypair 212217b4e7 userprofile 2021-11-26 08:41:29 +01:00
NAmorim 681145c147 Merge branch 'develop' of https://github.com/NAmorim/Superalgos into develop 2021-11-26 01:09:48 +00:00
NAmorim f318bcdf15 Better handling of user fork 2021-11-26 01:09:32 +00:00
NAmorim 43d2be6e99 Better handling of user fork 2021-11-25 23:44:14 +00:00
Marcos Rivas 7dc3916e1b This is my contribution to Superalgos 2021-11-25 20:37:27 -03:00
gitforkgit 1ec774e13e (debugging-docs from note to tip) 2021-11-26 00:19:19 +01:00
Marcos Rivas 071a07a8e3 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-25 20:09:44 -03:00
Luis Fernando Molina 480d4121da Merge pull request #2739 from Luis-Fernando-Molina/develop
Contribution: Trading Signals Project App Schemas Implemented
2021-11-25 18:09:03 -04:00
Luis Fernando Molina 3ea94bec9a Trading Signals Project App Schemas Implemented 2021-11-25 23:07:06 +01:00
Luis Fernando Molina 8f334577c7 Update ProfileConstructor.js 2021-11-25 22:58:22 +01:00
gitforkgit 359c667d84 (Translation into german: a bit of "Trading Farms" and more) 2021-11-25 22:55:31 +01:00
gitforkgit 58cba6552d (Translation into german: more articles) 2021-11-25 22:33:54 +01:00
gitforkgit 0e47d23766 (Translation into german: Multiple articles) 2021-11-25 22:05:33 +01:00
Luis Fernando Molina 539a6db158 New Project Trading Signals App Schemas Implemented 2021-11-25 19:21:11 +01:00
EvaMaria70 36aee4dc5c This is my contribution to Superalgos 2021-11-25 16:03:17 +01:00
EvaMaria70 fa582bc835 This is my contribution to Superalgos 2021-11-25 15:54:16 +01:00
EvaMaria70 dbe860e5b4 This is my contribution to Superalgos 2021-11-25 15:35:51 +01:00
EvaMaria70 783a29c5db Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-25 14:14:57 +01:00
EvaMaria70 f7d3fffa8e This is my contribution to Superalgos 2021-11-25 14:14:34 +01:00
Luis Fernando Molina 01581b84b4 Merge pull request #2735 from Luis-Fernando-Molina/develop
Contribution: BUG FIX Governance Signing Accounts
2021-11-25 08:08:33 -04:00
Luis Fernando Molina 0162fc71d5 BUG FIX Governance Signing Accounts 2021-11-25 13:08:13 +01:00
Luis Fernando Molina b63e1f6b18 Merge pull request #2734 from Luis-Fernando-Molina/develop
Contribution: Signing Accounts moved to be child of each Network Client
2021-11-25 07:17:50 -04:00
Luis Fernando Molina 53b0712a95 Network fixed with signing accounts chlld of each network client 2021-11-25 12:16:02 +01:00
Luis Fernando Molina 84b6111315 Install Signing Accounts redone 2021-11-25 12:00:50 +01:00
Luis Fernando Molina 50d5f11580 Connecting a Trading Bot Instance with a Social Trading Bot 2021-11-25 11:22:00 +01:00
Luis Fernando Molina 8d8d90f355 Merge pull request #2725 from MarinitaMarina/develop
Contribution: Translation into Russian Getting Started Tutorial (step 76-80)
2021-11-25 04:12:16 -04:00
Luis Fernando Molina e292f6b2e2 Merge pull request #2729 from NAmorim/develop
Contribution: Update user creation
2021-11-25 04:10:52 -04:00
Superalgos Bot bdb58dc906 Changes in User Profile done by Profile Owner DJ05GaZ automatically merged by Superalgos.
Add user profile files via upload
2021-11-25 08:49:44 +01:00
Marcos Rivas fc06f763e3 Merge branch 'master' of https://github.com/markinho91/Superalgos 2021-11-24 21:05:56 -03:00
DJ05GaZ 8a31dc797b Add files via upload 2021-11-24 23:04:11 +00:00
Nuno Amorim e67b535296 Merge branch 'Superalgos:develop' into develop 2021-11-24 22:28:19 +00:00
NAmorim 898e582bcb Deepscan fixes 2021-11-24 22:04:28 +00:00
NAmorim f99f4d6f87 Correction bad copy & paste 2021-11-24 21:36:59 +00:00
Luis Fernando Molina 2aab1e1f92 Merge pull request #2728 from alexandrustefan/develop
removed code completion for market/exchange objects
2021-11-24 16:00:35 -04:00
Luis Fernando Molina ea4f012989 Merge pull request #2730 from Luis-Fernando-Molina/develop
Contribution: Upgrade to the User Profile Capabilities, so that is can handle Bots and Personas
2021-11-24 15:52:34 -04:00
Luis Fernando Molina 21dff1472f DeepScan fixes2 2021-11-24 20:49:14 +01:00
Luis Fernando Molina cfe8511ca1 DeepScan fixes 2021-11-24 20:47:01 +01:00
Luis Fernando Molina 9ea7cfeb2c Bug Fixes 2021-11-24 20:37:45 +01:00
Luis Fernando Molina eea548eeca Desktop Running Again 2021-11-24 20:24:02 +01:00
Luis Fernando Molina 541a269f80 Network Node Running Again 2021-11-24 19:41:10 +01:00
NAmorim 63e0a2342e Fix typo 2021-11-24 16:33:29 +00:00
NAmorim 866911abfe Contribution
- Automatic fork creation
 - Setup of basic liquidity profile
2021-11-24 16:31:52 +00:00
Alexandru Stefan e31699a3a4 removed the entire loop for market/exchange completion objects 2021-11-24 18:03:23 +02:00
Alexandru Stefan 88c3958419 removed code completion for market/exchange objects due to high memory consumption 2021-11-24 17:59:46 +02:00
Luis Fernando Molina 8557b7b02e Bug Fixes 2021-11-24 16:35:48 +01:00
Luis Fernando Molina aa7c6a01b7 Refactoring 2021-11-24 15:48:30 +01:00
Luis Fernando Molina 0b855bed3e Secrets File Being Created 2021-11-24 15:45:28 +01:00
MarinitaMarina 7b938a2393 Translation into Russian Getting Started Tutorial (step 76-80) 2021-11-24 13:48:05 +01:00
Luis Fernando Molina 5b91325106 Install Secrets Implemented 2021-11-24 12:28:08 +01:00
Luis Fernando Molina 0659ec6155 Merge pull request #2714 from waynewa/develop
My Superalgos Review
2021-11-24 06:20:14 -04:00
Luis Fernando Molina 19f10649c9 Merge pull request #2715 from harrellbm/develop
Update How to estabish Ref page. and Clean up Shortcut ref page. Update bot ref pages.
2021-11-24 06:19:13 -04:00
Luis Fernando Molina d226529b82 Merge pull request #2719 from Raplh2502/develop
Contribution: Datamine with new evolution og Bollinger Bnds qnd stochqstic oscillator
2021-11-24 06:18:37 -04:00
Superalgos Bot a3918baf18 Changes in User Profile done by Profile Owner theblockchainarborist automatically merged by Superalgos.
Contribution: Update User Profile theblockchainarborist
2021-11-24 10:00:32 +01:00
theblockchainarborist bbbd24e310 Update User Profile theblockchainarborist 2021-11-23 20:21:24 -05:00
Superalgos Bot 763c92e8cc Changes in User Profile done by Profile Owner DJ05GaZ automatically merged by Superalgos.
Contribution: User Profile [DJ05GaZ]
2021-11-23 22:19:09 +01:00
Superalgos Bot b5967a341b Changes in User Profile done by Profile Owner theblockchainarborist automatically merged by Superalgos.
Contribution: User Profile theblockchainarborist
2021-11-23 21:56:10 +01:00
theblockchainarborist ce8606c24c User Profile theblockchainarborist 2021-11-23 15:55:31 -05:00
Luis Fernando Molina 8c18a8e1bf Remainder of Superscripts removed 2021-11-23 21:54:34 +01:00
Superalgos Bot fa3ccac520 Changes in User Profile done by Profile Owner whtv automatically merged by Superalgos.
Contribution: Re-submitting user profile
2021-11-23 21:48:09 +01:00
whtv 5388464f3a Re-submitting user profile 2021-11-23 21:47:05 +01:00
harrellbm 9650e2cb25 Update bot concept pages 2021-11-23 14:37:39 -06:00
Gaz Ward e1d781fdb3 User Profile [DJ05GaZ] 2021-11-23 20:16:02 +00:00
B Harrell 565f0cd4bc Merge branch 'Superalgos:develop' into develop 2021-11-23 14:10:43 -06:00
B Harrell b820044d80 Merge pull request #2720 from whtv/develop
Mostly broken references in the user manual
2021-11-23 14:10:01 -06:00
Luis Fernando Molina d69dd39690 Merge pull request #2713 from ssplatt/develop
install package to global scope to stop changing the package-lock.json
2021-11-23 16:01:40 -04:00
whtv 8cac5c213e Mostly broken references in the user manual 2021-11-23 20:55:38 +01:00
Raplh2502 d96b91ca95 Datamine with new evolution og Bollinger Bnds qnd stochqstic oscillator 2021-11-23 20:52:30 +01:00
whtv 485329b0a9 Mostly broken references in the user manual 2021-11-23 20:39:32 +01:00
whtv e3ca9fb4e0 Mostly broken references in the user manual 2021-11-23 20:35:58 +01:00
Luis Fernando Molina 04f3299873 profile constructor being updated 2021-11-23 20:17:34 +01:00
Superalgos Bot f1de715996 Changes in User Profile done by Profile Owner liteir automatically merged by Superalgos.
Contribution: User Profile liteir
2021-11-23 19:52:08 +01:00
liteir 10cd28c29e User Profile liteir 2021-11-23 12:50:40 -06:00
harrellbm 9a9b22679f Update How to estabish Ref page. and Clean up Shortcut ref page. 2021-11-23 12:18:29 -06:00
Wayne Walsh 75b438079e My Superalgos Review 2021-11-24 07:01:36 +13:00
ssplatt a42497d16a install package to global scope to stop changing the package-lock.json 2021-11-23 12:09:31 -05:00
Luis Fernando Molina c21540f4ea Merge pull request #2685 from gitforkgit/develop
Contribution: (translation into german: "Node js Javascript")
2021-11-23 12:51:15 -04:00
Luis Fernando Molina 48b1b93b6d Merge pull request #2687 from EvaMaria70/develop
Contribution: This is my contribution to Superalgos
2021-11-23 12:51:09 -04:00
Luis Fernando Molina 7f0380c7de Merge pull request #2691 from prepheadrus/develop
Translation of Your User Profile Tutorial into Turkish 021/022/023/02…
2021-11-23 12:51:00 -04:00
Luis Fernando Molina caa82de2cd Merge pull request #2693 from e-Nut/develop
Contribution: [Dutch translations]
2021-11-23 12:50:53 -04:00
Luis Fernando Molina 14365690c4 Merge pull request #2707 from MarinitaMarina/develop
Contribution: Translation into Russian Getting Started Tutorial (step 71-75)
2021-11-23 12:46:22 -04:00
Luis Fernando Molina 3749f9fc85 Merge pull request #2712 from NAmorim/develop
[Distribution] Add menu for profile creation/update
2021-11-23 12:46:15 -04:00
NAmorim 19ec4a9c3f [Distribution] Missing link 2021-11-23 16:33:16 +00:00
Luis Fernando Molina 81b93abb6f P2P Network Nodes 2021-11-23 15:58:36 +01:00
NAmorim aa0a63a9be [Distribution] Add menu for profile creation/update 2021-11-23 14:32:58 +00:00
Superalgos Bot a981e8c99a Changes in User Profile done by Profile Owner NAmorim automatically merged by Superalgos.
Governance: Automated Userprofile contribute process.
2021-11-23 14:47:07 +01:00
Nuno Amorim 60ed742106 Governance: Automated Userprofile contribute process. 2021-11-23 13:46:10 +00:00
Luis Fernando Molina b99713d216 Update release_build_dev.yml 2021-11-23 12:20:30 +01:00
Luis Fernando Molina e2db0246fc Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-23 12:18:34 +01:00
Superalgos Bot 48150741f1 Changes in User Profile done by Profile Owner vraptor75011 automatically merged by Superalgos.
Contribution: User Profile vraptor75011
2021-11-23 11:04:05 +01:00
vraptor75011 ec88c54514 User Profile vraptor75011 2021-11-23 11:03:22 +01:00
Superalgos Bot d88d0821b0 Changes in User Profile done by Profile Owner vraptor75011 automatically merged by Superalgos.
Contribution: User Profile vraptor75011
2021-11-23 10:21:04 +01:00
vraptor75011 15c7610aa5 User Profile vraptor75011 2021-11-23 10:20:08 +01:00
MarinitaMarina 3860747977 Translation into Russian Getting Started Tutorial (step 71-75) 2021-11-23 09:50:58 +01:00
Superalgos Bot 85608f7f63 Changes in User Profile done by Profile Owner ssplatt automatically merged by Superalgos.
update user profile ssplatt
2021-11-23 03:04:15 +01:00
Luis Fernando Molina 125d3db595 Merge pull request #2699 from harrellbm/develop
Fix book style to include all projects.  And update First steps book to include governance tutorial
2021-11-22 22:03:13 -04:00
Luis Fernando Molina a9e4c5a7fc Merge pull request #2698 from Smidy13/develop
Improvement: Scrollbar for ListSelector
2021-11-22 22:01:14 -04:00
Luis Fernando Molina 1433c04dfb Merge pull request #2700 from ssplatt/update-dependencies
update a few dependency versions
2021-11-22 22:00:47 -04:00
Luis Fernando Molina c493e7249f Merge pull request #2702 from alexandrustefan/develop
code editor improvements
2021-11-22 22:00:03 -04:00
Luis Fernando Molina 79361eb451 Merge pull request #2705 from NAmorim/develop
Develop
2021-11-22 21:59:16 -04:00
NAmorim 1613e78eff [Distribution] Enable User Profile Commit 2021-11-23 01:05:18 +00:00
Nuno Amorim 6691cfbcf6 Contribution: profile updated in binary app! 2021-11-22 23:00:25 +00:00
gitforkgit 6fdcd8934d (translation into german "Charting Space Tutorial until Dashing Dashboards") 2021-11-22 22:31:31 +01:00
Alexandru Stefan f6bff57092 changed code editor width to match all side panels; added auto formatter to the editor 2021-11-22 22:36:02 +02:00
EvaMaria70 1f0e6a4e98 This is my contribution to Superalgos 2021-11-22 19:48:50 +01:00
Luis Fernando Molina d271c11821 User Apss Structure Done 2021-11-22 19:18:44 +01:00
Brett Taylor 38fb6e3860 update user profile ssplatt 2021-11-22 12:19:59 -05:00
Brett Taylor 148e8e9140 update a few dependency versions 2021-11-22 12:14:29 -05:00
Luis Fernando Molina ebab7d9e7d Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-22 17:49:48 +01:00
Luis Fernando Molina 6e781d876b Social Trading Bot upgraded 2021-11-22 17:25:56 +01:00
Luis Fernando Molina df476b69cf Social Trading Bots 2021-11-22 16:40:36 +01:00
prepheadrus 1c438848cd Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-22 17:44:15 +03:00
gitforkgit 813b5ee0e6 (Translation into german: "Community Building Programs") 2021-11-22 15:43:00 +01:00
harrellbm 1a4b11f4f3 Fix book style to include all projects. And update First steps book 2021-11-22 08:40:55 -06:00
prepheadrus 0559ca0f88 Merge branch 'develop' of https://github.com/prepheadrus/Superalgos into develop 2021-11-22 17:39:12 +03:00
Luis Fernando Molina f37399a73b Social Personas Schemas done 2021-11-22 14:51:31 +01:00
gitforkgit 4af071ae4a (translation into german: "Data Building Procedure") 2021-11-22 14:38:15 +01:00
gitforkgit 5bee1671da Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-22 14:33:05 +01:00
Luis Fernando Molina 49b015dca6 User Bots Schemas 2021-11-22 14:22:14 +01:00
EvaMaria70 7c9a9f7b48 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-22 12:25:29 +01:00
Smidy13 f8bb5e55dc Improvement: Scrollbar for ListSelector 2021-11-22 23:59:46 +13:00
Luis Fernando Molina eb5556a33d Merge pull request #2696 from NAmorim/develop
[Distribution] Typo
2021-11-22 06:45:53 -04:00
Luis Fernando Molina 25f5d6fda4 Merge pull request #2695 from Luis-Fernando-Molina/develop
Contribution: New Message at Splash Screen
2021-11-22 06:45:38 -04:00
Luis Fernando Molina 96578a1860 Platform Settings added 2021-11-22 11:44:52 +01:00
NAmorim bf1b04e615 [Distribution] Typo 2021-11-22 10:39:36 +00:00
Luis Fernando Molina 782aea452e New Message at Splash Screen 2021-11-22 11:38:20 +01:00
Luis Fernando Molina e72df550cd Merge pull request #2694 from BlaaSwe/develop
Contribution: added Alligator data-mine
2021-11-22 06:37:21 -04:00
Luis Fernando Molina 1842f1b810 Update .gitignore 2021-11-22 10:45:48 +01:00
Luis Fernando Molina 0a1363a040 Platform Launch for Debug fixed 2021-11-22 10:45:39 +01:00
Luis Fernando Molina c8b3c9c5e7 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-22 10:27:47 +01:00
Luis Fernando Molina 0359638061 Merge pull request #2692 from Smidy13/develop
Improvement: Adding List Selector for Missing Projects
2021-11-22 05:18:55 -04:00
Smidy13 af79109a0e Improvement: Adding Path to Create Reference 2021-11-22 12:01:56 +13:00
Luis Fernando Molina 71124874c0 Merge pull request #2676 from diveyez/debian-setup
Debian Setup Fix & WSL2 / VSCode Setup Info
2021-11-21 13:33:58 -04:00
BlaaSwe c4561a09ed Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-21 17:31:10 +01:00
BlaaSwe f4ff8a4956 added Alligator data-mine 2021-11-21 17:28:09 +01:00
eNut 3a6acecfc9 [Dutch translations] 2021-11-21 14:32:47 +01:00
Luis Fernando Molina 79f8efe532 Update release_build_dev.yml 2021-11-21 08:26:30 +01:00
Smidy13 335637cb09 Improvement: Adding List Selector for Missing Projects 2021-11-21 17:45:37 +13:00
prepheadrus a2b78e1b35 Translation of Your User Profile Tutorial into Turkish 021/022/023/024/025/026/027/028 2021-11-21 01:15:28 +03:00
Superalgos Bot 9a0ce7ae68 Changes in User Profile done by Profile Owner claudioLopezSA automatically merged by Superalgos.
Contribution: User Profile claudioLopezSA
2021-11-20 22:56:20 +01:00
gcatrinakw 4f394ed8f3 User Profile claudioLopezSA 2021-11-20 18:55:38 -03:00
EvaMaria70 4618a46783 This is my contribution to Superalgos 2021-11-20 20:32:47 +01:00
EvaMaria70 f509cc1f84 This is my contribution to Superalgos 2021-11-20 20:29:04 +01:00
EvaMaria70 7b14f88986 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-20 18:08:24 +01:00
EvaMaria70 04ff8b9ee1 This is my contribution to Superalgos 2021-11-20 18:08:11 +01:00
EvaMaria70 91342ecdf6 This is my contribution to Superalgos 2021-11-20 17:50:17 +01:00
Luis Fernando Molina d3827cf6e3 Merge pull request #2680 from Raplh2502/develop
Contribution: fix the WEMA datamine and add low pass filter component ; finalization of WEMA trading system
2021-11-20 12:03:47 -04:00
Luis Fernando Molina cd7edc9a77 Merge pull request #2682 from ssplatt/optional-dependencies
Optional-dependencies
2021-11-20 12:03:25 -04:00
Luis Fernando Molina 6071d68c10 Merge pull request #2684 from EvaMaria70/develop
Contribution: This is my contribution to Superalgos
2021-11-20 12:02:40 -04:00
Luis Fernando Molina c225e70858 Merge pull request #2686 from harrellbm/develop
Add Greek Language
2021-11-20 12:02:11 -04:00
Brenden Harrell 6167bb8173 Add Greek Language 2021-11-20 07:22:24 -07:00
gitforkgit f3e2b74dcf (translation into german: "Node js Javascript") 2021-11-20 14:57:35 +01:00
B Harrell ac8ea8eebe Merge pull request #2618 from gitforkgit/develop 2021-11-20 06:50:23 -07:00
gitforkgit d9d2586972 (translation into german: "Api Map" and small change in english original) 2021-11-20 14:42:33 +01:00
EvaMaria70 e4ba174084 This is my contribution to Superalgos 2021-11-20 12:16:36 +01:00
gitforkgit 271996e4db (Translation into german: "API-Endpoint") 2021-11-20 12:15:39 +01:00
EvaMaria70 beae77dcfb Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-20 12:03:44 +01:00
EvaMaria70 f3af733856 This is my contribution to Superalgos 2021-11-20 12:03:30 +01:00
gitforkgit 40c651dd75 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-20 11:40:09 +01:00
Brett Taylor e8750f030d set tensorflow/tfjs-node as optional 2021-11-19 20:40:51 -05:00
Superalgos Bot ef0fa3c360 Changes in User Profile done by Profile Owner Tyhote automatically merged by Superalgos.
Contribution: User Profile Tyhote
2021-11-20 01:57:24 +01:00
Tristan Dow 257399d155 User Profile Tyhote 2021-11-19 18:57:06 -06:00
Raplh2502 50f553324e fix the WEMA datamine and add low pass filter component ; finalization of WEMA trading system 2021-11-20 00:47:46 +00:00
gitforkgit ed66d9dc23 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-19 23:22:54 +01:00
Luis Fernando Molina f6fd9d85c1 Merge pull request #2679 from ssplatt/setup-exit-on-error
Add exit 1 when setup fails
2021-11-19 18:01:05 -04:00
gitforkgit c691a8f6c2 Merge branch 'Superalgos:develop' into develop 2021-11-19 22:37:25 +01:00
Brett Taylor 49ed4b4e53 add exit code 1 if setup fails to install modules 2021-11-19 15:44:40 -05:00
Tristan Dow d364000463 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-19 14:40:49 -06:00
Luis Fernando Molina b5bb247431 Merge pull request #2677 from PLuv/portfolio-management
Portfolio Management merge develop && Managed-Tasks && Managed-Sessions && Plugins && Engine && Mine
2021-11-19 08:36:25 -04:00
Philip Love 1be6670171 Portfolio-Management Commit:
Managed Tasks: Starts referenced tasks from around workspace

Managed Sessions: Starts referenced sessions from around workspace

Install Market: Most install is hooked up, some may need refining later after Logic written
2021-11-19 01:59:47 -05:00
Philip Love 977035bad8 Add: Icons for Portfolio-Management Project 2021-11-19 01:55:53 -05:00
Philip Love 5065927474 Add: Community Plugins for Portfolio-Management Project 2021-11-19 01:54:47 -05:00
Philip Love dc8a933345 Merge branch 'develop' into portfolio-management 2021-11-19 01:44:28 -05:00
Luis Fernando Molina 75f81cb144 Merge pull request #2673 from Luis-Fernando-Molina/develop
Contribution: This is my contribution to Superalgos
2021-11-18 16:25:20 -04:00
Luis Fernando Molina c5c4f545e3 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-18 21:25:00 +01:00
Luis Fernando Molina e2624a31f8 This is my contribution to Superalgos 2021-11-18 21:24:29 +01:00
Luis Fernando Molina 382b47dc7f Merge pull request #2672 from Loui-Molina/develop
Contribution: Fix ProjectSchema propertyName
2021-11-18 16:19:15 -04:00
Axel b5d87dd1eb Fix ProjectSchema propertyName 2021-11-18 16:56:35 -03:00
Superalgos Bot 2ff182a4df Changes in User Profile done by Profile Owner Neobii automatically merged by Superalgos.
Contribution: User Profile Neobii
2021-11-18 16:20:07 +01:00
Luis Fernando Molina 0c7a26d42b Merge pull request #2664 from prepheadrus/develop
Translation of Your User Profile Tutorial into Turkish 001/002/003/004/005/006
2021-11-18 11:16:57 -04:00
Luis Fernando Molina e8eb447f49 Merge pull request #2665 from EvaMaria70/develop
Contribution: This is my contribution to Superalgos
2021-11-18 11:16:39 -04:00
Luis Fernando Molina 1d5cc615e1 Merge pull request #2667 from harrellbm/develop
Update docs add command Docs
2021-11-18 11:14:34 -04:00
Luis Fernando Molina 926dd38018 Merge pull request #2668 from Raplh2502/develop
Contribution: creation of WEMA trading system
2021-11-18 11:13:56 -04:00
Luis Fernando Molina e718d7c923 Merge pull request #2671 from ssplatt/okex-brokerid
update config options object parsing
2021-11-18 11:08:37 -04:00
prepheadrus 15fad14f3e Translation of Your User Profile Tutorial into Turkish 012/013/014/015/016/017/018/019/020 2021-11-18 18:08:11 +03:00
Brett Taylor 6fd383265e update config options object parsing 2021-11-18 09:27:12 -05:00
EvaMaria70 11baeece23 This is my contribution to Superalgos 2021-11-18 12:14:53 +01:00
EvaMaria70 f302f4e0ba This is my contribution to Superalgos 2021-11-18 11:52:09 +01:00
EvaMaria70 0e9e0beba5 This is my contribution to Superalgos 2021-11-18 11:14:02 +01:00
R Neff 12742b0d08 More setup information
VSCode + Docker + SuperAlgos
2021-11-18 01:39:55 -08:00
R Neff 39c21a926e Deb/WSL2 Config w/ VSCode Docker Tricks
Updated node 16.x to 17.x because of a version requirement.

Added install/setup instructions on how to platform from Windows while using Linux. Debian/WSL2 NVM fix for node versions.
2021-11-18 01:34:44 -08:00
EvaMaria70 f7de4a1fab Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-18 10:21:16 +01:00
prepheadrus d8701f2e2d Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-18 10:06:33 +03:00
Neobii e3d1e17db8 User Profile Neobii 2021-11-18 00:43:04 -06:00
Raplh2502 511c2f8c04 creation of WEMA trading system 2021-11-17 22:53:16 +00:00
Brenden Harrell 4118f01d35 Update docs add command 2021-11-17 14:55:38 -07:00
EvaMaria70 7788792cd7 This is my contribution to Superalgos 2021-11-17 16:55:49 +01:00
prepheadrus 5d6a47d666 Translation of Your User Profile Tutorial into Turkish 006/007/008/009/010/011 2021-11-17 17:57:47 +03:00
Luis Fernando Molina 4d263c6246 Merge pull request #2659 from ssplatt/config-client-id
set brokerid for okex
2021-11-17 10:56:36 -04:00
Brett Taylor ed59406d6a move the options hash to the Exchange node configuration 2021-11-17 09:54:25 -05:00
prepheadrus 366f668eeb Creating-Your-User-Profile-Tutorial 001/002/003/004/005/006 2021-11-17 14:16:20 +03:00
Luis Fernando Molina 3eef2423e5 Merge pull request #2663 from NAmorim/develop
[Distribution] Semver correction
2021-11-17 07:03:36 -04:00
NAmorim c002a8034a [Distribution] Semver correction 2021-11-17 10:59:48 +00:00
Luis Fernando Molina 3e811e2992 Merge pull request #2645 from e-Nut/develop
Contribution: [Dutch Translations]
2021-11-17 04:12:08 -04:00
Luis Fernando Molina 48388eff58 Merge pull request #2646 from MarinitaMarina/develop
Contribution: Translation into Russian Getting Started Tutorial (step 66-70)
2021-11-17 04:11:54 -04:00
Luis Fernando Molina 7039030ccf Merge pull request #2655 from ssplatt/add-stalebot-config
add stale bot config
2021-11-17 04:11:32 -04:00
Luis Fernando Molina 1806f3bb1c Merge pull request #2658 from NAmorim/develop
Contribution: Enable Tensorflow (Learning Tasks)
2021-11-17 04:11:07 -04:00
Luis Fernando Molina 31b9372ea6 Merge pull request #2661 from quantum8/develop
Docs and update to Heikin datamine
2021-11-17 04:01:19 -04:00
Luis Fernando Molina 092b34b4bc Merge pull request #2662 from PLuv/portfolio-management
Portfolio management
2021-11-17 04:00:05 -04:00
Superalgos Bot 11ae97fa98 Changes in User Profile done by Profile Owner Loui-Molina automatically merged by Superalgos.
Contribution: User Profile Loui-Molina
2021-11-17 08:17:25 +01:00
Superalgos Bot 0cb53d51bd Changes in User Profile done by Profile Owner gonzalocatrina automatically merged by Superalgos.
Contribution: User Profile gonzalocatrina
2021-11-17 08:17:20 +01:00
Superalgos Bot 6ab26e6529 Changes in User Profile done by Profile Owner gustavohcorradi automatically merged by Superalgos.
Contribution: This is my contribution to Superalgos
2021-11-17 08:16:18 +01:00
Philip Love 7e339667e6 Add: New Schemas nodes 2021-11-17 01:29:54 -05:00
Philip Love b3c51cd7c9 Add Managed Tasks|Sessions to LightingPath
Did not add runAllSessions
2021-11-17 01:28:52 -05:00
Brett Taylor 6260efcff6 genericize the options hash more 2021-11-16 22:51:23 -05:00
quantum8 7d663ef35f Docs and update to Heikin datamine 2021-11-17 10:01:51 +10:00
gustavohcorradi b6bbe24b18 This is my contribution to Superalgos 2021-11-17 00:09:03 +01:00
Brett Taylor f99a1d2f5d set brokerid for okex 2021-11-16 16:49:33 -05:00
NAmorim 21778b22c7 Contribution: Enable Tensorflow (Learning Tasks) 2021-11-16 19:45:36 +00:00
ssplatt 210ba0d73a add stale bot config 2021-11-16 09:35:19 -05:00
Phil babeb1ec36 Merge pull request #2653 from PLuv/portfolio-management
fixed a refactor bug
2021-11-16 02:59:41 -05:00
Philip Love 3f05fdb3b9 fixed a refactor bug 2021-11-16 02:54:37 -05:00
gcatrinakw d378e14c1d User Profile gonzalocatrina 2021-11-15 21:45:44 -03:00
Axel 34b47ea5d1 User Profile Loui-Molina 2021-11-15 20:46:28 -03:00
Luis Fernando Molina c084418cbf Merge pull request #2648 from Raplh2502/develop
Contribution: New datamine for Signal processing tools with Low and High pass filters
2021-11-15 17:38:46 -04:00
Raplh2502 e5e441065c New datamine for Signal processing tools with Low and High pass filters 2021-11-15 20:18:00 +00:00
Superalgos Bot 7a228e85ae Changes in User Profile done by Profile Owner prepheadrus automatically merged by Superalgos.
User Profile Update
2021-11-15 20:06:41 +01:00
Luis Fernando Molina bc52f7cd58 Merge pull request #2647 from PLuv/portfolio-management
See PM-Construction Workspace
2021-11-15 15:05:16 -04:00
Philip Love e9d9685237 See PM-Construction Workspace 2021-11-15 13:56:35 -05:00
Philip Love a62e170a43 Merge branch develop into portfolio-management 2021-11-15 13:55:00 -05:00
MarinitaMarina a72b1bc8d4 Translation into Russian Getting Started Tutorial (step 66-70) 2021-11-15 16:22:15 +01:00
eNut aeb5d28327 [Dutch Translations] 2021-11-15 13:32:20 +01:00
prepheadrus 0d18a3f53e User Profile Update 2021-11-15 14:10:45 +03:00
Luis Fernando Molina c872f6d1ba Merge pull request #2643 from Luis-Fernando-Molina/develop
Contribution: Governance Bug Fix: File Changed List not considering pagination
2021-11-15 05:42:49 -04:00
Luis Fernando Molina 0423793d30 Governance Bug Fix: File Changed List not considering pagination 2021-11-15 10:38:21 +01:00
Superalgos Bot 2220e87f5a Changes in User Profile done by Profile Owner 9808us automatically merged by Superalgos.
9808us User Profile Liquidity
2021-11-15 10:01:29 +01:00
Luis Fernando Molina a4184f96b7 Merge pull request #2639 from Raplh2502/develop
Contribution: Update Trading Mine with correct references for WEMA strategy data mine
2021-11-15 04:59:07 -04:00
Luis Fernando Molina 734a20570d Merge pull request #2640 from quantum8/develop
Added documentation to the quantum data mine
2021-11-15 04:58:50 -04:00
9808us 370c502539 9808us User Profile Liquidity 2021-11-15 09:45:18 +01:00
Luis Fernando Molina f91a3386cf Merge pull request #2641 from Luis-Fernando-Molina/develop
Contribution: Demo Mode Improvements
2021-11-15 04:42:15 -04:00
Luis Fernando Molina ebc139bee6 Demo Mode Improvements 3 2021-11-15 09:41:15 +01:00
Luis Fernando Molina b91018071e Demo Mode Improvements 2 2021-11-15 09:40:19 +01:00
Luis Fernando Molina 031dbdbe25 Demo Mode Improvements 2021-11-15 09:37:49 +01:00
prepheadrus b182a98558 Merge branch 'develop' of https://github.com/prepheadrus/Superalgos into develop 2021-11-15 09:31:49 +03:00
quantum8 e8f9eec93b Added documentation to the quantum data mine 2021-11-15 11:24:38 +10:00
Raplh2502 36dcb05eba Update Trading Mine with correct references for WEMA strategy data mine 2021-11-14 21:29:34 +00:00
Luis Fernando Molina e8e2d93c06 Merge pull request #2638 from Superalgos/develop
Develop into Master
2021-11-14 15:16:21 -04:00
Luis Fernando Molina 395f6919a3 Merge pull request #2637 from Luis-Fernando-Molina/develop
Contribution: Version Changed
2021-11-14 15:15:53 -04:00
Luis Fernando Molina 13d2717462 Version Changed 2021-11-14 20:15:38 +01:00
Luis Fernando Molina 6341bca2a1 Merge pull request #2636 from Superalgos/develop
Develop into Master - last minute bug fixes
2021-11-14 15:13:11 -04:00
Luis Fernando Molina bbf19a9194 Merge pull request #2634 from Tentacule23/develop
Contribution: tutorial_previous_fix Tentacule23
2021-11-14 15:09:52 -04:00
prepheadrus fe7916b518 Update prepheadrus.json 2021-11-14 22:02:49 +03:00
Julian Molina 856f8334a4 Merge pull request #2635 from julian-molina/develop
Contribution: Fixes to getting started tutorials pages
2021-11-14 19:56:27 +01:00
Julian Molina 9cdb1842c1 Docs footer fix 2021-11-14 19:55:20 +01:00
Julian Molina 683ceea619 Deprecating the Plugins-Docs branch 2021-11-14 19:51:23 +01:00
Julian Molina 6aca8f406b Fixes to getting started tutorials pages 2021-11-14 19:32:43 +01:00
Tentacule23 f3d14673bb tutorial_previous_fix Tentacule23 2021-11-14 13:25:16 -05:00
prepheadrus 7b0475e21e This is my contribution to Superalgos 2021-11-14 21:19:06 +03:00
prepheadrus dfc5075616 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-14 20:22:43 +03:00
Luis Fernando Molina 2e9796b46b Merge pull request #2633 from Superalgos/develop
Develop into Master version # fixed
2021-11-14 13:17:44 -04:00
Luis Fernando Molina 889c5c40cf Merge pull request #2632 from Luis-Fernando-Molina/develop
Contribution: version number without v
2021-11-14 13:17:13 -04:00
Luis Fernando Molina c47ad47aa9 version number without v 2021-11-14 18:16:54 +01:00
Luis Fernando Molina a85662d5b2 Merge pull request #2631 from Superalgos/develop
Develop into Master with some fixes
2021-11-14 13:11:38 -04:00
Luis Fernando Molina cfd4c88f58 Merge pull request #2630 from Luis-Fernando-Molina/develop
Contribution: version number fixed
2021-11-14 13:08:49 -04:00
Luis Fernando Molina 50570827ff version number fixed 2021-11-14 18:06:58 +01:00
Julian Molina e0d171ef21 Merge pull request #2629 from julian-molina/develop
Contribution: Workspaces fixes
2021-11-14 18:02:40 +01:00
Julian Molina afeca27dc3 Docs placeholder color change 2021-11-14 18:02:05 +01:00
Julian Molina f57233f81f Minor docs fix 2021-11-14 17:45:49 +01:00
Julian Molina 84d180f124 Workspaces fixes 2021-11-14 17:32:38 +01:00
Julian Molina 3430ddfec8 Merge pull request #2628 from julian-molina/develop
Contribution: Workspaces fixes
2021-11-14 17:23:02 +01:00
Julian Molina c90636f252 Blank workspace fix 2021-11-14 17:22:30 +01:00
Julian Molina 80e0e2c986 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-14 17:17:15 +01:00
Julian Molina 7a712faae4 Trading Bot Layers workspace fix 2021-11-14 17:16:44 +01:00
Julian Molina 2d4ef700b1 Workspaces fixes 2021-11-14 17:11:01 +01:00
prepheadrus bf1f9caefc User Profile Update 2021-11-14 18:55:07 +03:00
Luis Fernando Molina 083c63e515 Merge pull request #2625 from Superalgos/develop
Develop into Plugins-Docs
2021-11-14 10:07:51 -04:00
gitforkgit accd4b19a7 (translation into german: "App contribute command") 2021-11-13 15:35:09 +01:00
gitforkgit 9b7051ec71 Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-13 14:29:10 +01:00
gitforkgit a113e50cad Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop 2021-11-12 22:12:22 +01:00
Philip Love 0932a5ac5f Merge develop into portfolio-management 2021-11-08 20:48:36 -05:00
Luis Fernando Molina 61e7142c7f Merge pull request #2544 from PLuv/portfolio-management
Schemas, wirings, develop merge, etc.
2021-11-08 04:54:40 -04:00
Philip Love b273cd7090 Merge remote-tracking branch 'upstream/portfolio-management' into portfolio-management 2021-11-08 03:00:33 -05:00
Philip Love 18790f5a70 Merge remote-tracking branch 'upstream/portfolio-management' into portfolio-management 2021-11-08 02:55:22 -05:00
Philip Love 6d4957d102 More Schemas etc 2021-11-08 02:53:37 -05:00
Philip Love 0070eb1f9b Merging develop into portfolio-management 2021-11-08 01:28:05 -05:00
Luis Fernando Molina 7dac7798dc Merge pull request #2499 from PLuv/portfolio-management
Lots Schema Stuff; Added to Network; More Functions refactoring
2021-11-04 03:59:16 -04:00
Philip Love f7da9b49fe Merge remote-dev branch 'upstream/portfolio-management' into portfolio-management 2021-11-04 03:24:19 -04:00
Philip Love f6928ce39a Lots Schema Stuff; Added to Network; More Functions refactoring 2021-11-04 03:04:09 -04:00
Philip Love 1460e36146 Merge develop into portfolio-management 2021-11-04 02:23:58 -04:00
Luis Fernando Molina de55081bd2 Merge pull request #2483 from PLuv/portfolio-management
Update - portfolio-management && merging develop->portfolio-management @ commit#d76ee927
2021-11-03 05:34:44 -04:00
Philip Love 28b4394e4b Merge remote-tracking branch 'upstream/portfolio-management' into portfolio-management 2021-11-02 13:50:45 -04:00
Philip Love 5556d96d68 Merging develop into portfolio-management 2021-11-02 13:36:26 -04:00
Philip Love 47ca035497 Pulling develop into portfolio-management 2021-11-02 13:32:00 -04:00
Philip Love f651462730 Merge branch 'develop' into portfolio-management 2021-11-02 01:22:41 -04:00
Philip Love c895d6ba80 Pulling in Superalgos-upstream/develop into Portfolio-Management 2021-11-02 01:11:07 -04:00
Luis Fernando Molina 83c3e0cf6e Merge pull request #2344 from PLuv/portfolio-management
Portfolio-Management More Refactoring
2021-10-30 03:42:45 -04:00
Philip Love fbb52a2eb0 Merge remote-tracking branch 'upstream/portfolio-management' into portfolio-management 2021-10-30 03:24:15 -04:00
Philip Love a9adf7bf7a More refactoring - Portfolio-Management 2021-10-30 03:21:20 -04:00
Luis Fernando Molina 6f6447b728 Merge pull request #2303 from PLuv/portfolio-management
Portfolio management Partial refactoring
2021-10-30 02:54:34 -04:00
Philip Love 63afc13705 Merge remote-tracking branch 'upstream/portfolio-management' into portfolio-management 2021-10-29 15:02:42 -04:00
Philip Love 40c8afcbd2 Fix Deepscan Errors 2021-10-29 15:01:22 -04:00
Philip Love 68258e27f0 Merge remote-tracking branch 'upstream/develop' into portfolio-management 2021-10-29 03:01:39 -04:00
Philip Love ea397ff3b7 Partial refactoring 2021-10-29 02:42:43 -04:00
619 changed files with 322279 additions and 67752 deletions

No files matched your search

+18
View File
@@ -0,0 +1,18 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 180
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
- improvement
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
+2 -2
View File
@@ -27,7 +27,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }}
tag_name: ${{ steps.vars.outputs.tag }}-${{ steps.date.outputs.date }}
release_name: Superalgos-Beta-v${{ steps.vars.outputs.tag }} Snapshot ${{ steps.date.outputs.date }}
keep_num: 5
keep_tags: false
@@ -64,7 +64,7 @@ jobs:
# GitHub token, automatically provided to the action
# (No need to define this secret in the repo settings)
github_token: ${{ secrets.github_token }}
args: "-c.extraMetadata.version=${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }} -c build/electron-builder.json -p onTagOrDraft"
args: "-c.extraMetadata.version=${{ steps.vars.outputs.tag }}-${{ steps.date.outputs.date }} -c build/electron-builder.json -p onTagOrDraft"
# If the commit is tagged with a version (e.g. "v1.0.0"),
# release the app after building
+2 -1
View File
@@ -21,5 +21,6 @@
"**/My-Data-Storage": true,
"**/My-Log-Files": true,
},
"search.maintainFileSearchCache": true
"search.maintainFileSearchCache": true,
"editor.mouseWheelZoom": true
}
+1 -1
View File
@@ -64,7 +64,7 @@ exports.newDesktopRoot = function newDesktopRoot() {
}
for (let i = 0; i < SA.secrets.array.length; i++) {
let secret = SA.secrets.array[i]
SA.secrets.map.set (secret.signingAccountChildCodeName, secret)
SA.secrets.map.set (secret.nodeCodeName, secret)
}
run()
+1 -1
View File
@@ -3,7 +3,7 @@ WORKDIR /app
COPY . .
RUN apk add --no-cache --virtual .build-deps make g++ \
&& apk add --no-cache python3 \
&& if [ "$(uname -m)" = "x86_64" ]; then node setup noShortcuts tensorflow; else node setup noShortcuts; fi \
&& npm ci \
&& mkdir -p ./Platform/My-Data-Storage ./Platform/My-Log-Files ./Platform/My-Workspaces \
&& addgroup superalgos \
&& adduser --disabled-password --no-create-home --ingroup superalgos superalgos \
+3
View File
@@ -9,6 +9,7 @@ exports.newEnvironment = function () {
let thisObject = {
DEMO_MODE: false,
DEMO_MODE_HOST: "super-super-uzzdd68dwm9w-22a320db4ede63aa.elb.us-east-2.amazonaws.com",
BASE_PATH: basePath,
WEB_SERVER_URL: 'localhost',
PLATFORM_WEB_SOCKETS_INTERFACE_PORT: 18041,
@@ -27,9 +28,11 @@ exports.newEnvironment = function () {
PATH_TO_DESKTOP: './Desktop',
PATH_TO_DEFAULT_WORKSPACE: path.join(basePath, './Projects/Foundations/Plugins/Workspaces'),
PATH_TO_MY_WORKSPACES: path.join(basePath, './Platform/My-Workspaces'),
PATH_TO_SECRETS: path.join(basePath, './My-Secrets'),
PATH_TO_FONTS: path.join(basePath, './Platform/WebServer/Fonts'),
DESKTOP_APP_SIGNING_ACCOUNT: 'Social-Trading-Desktop-App-1',
DESKTOP_APP_MAX_OUTGOING_PEERS: 1,
TASK_SERVER_APP_MAX_OUTGOING_PEERS: 1,
MOBILE_APP_SIGNING_ACCOUNT: 'Social-Trading-Mobile-App-1',
SERVER_APP_SIGNING_ACCOUNT: 'Social-Trading-Server-App-1',
PLATFORM_APP_SIGNING_ACCOUNT: 'Algo-Traders-Platform-1',
+14 -14
View File
@@ -1,7 +1,7 @@
const path = require("path");
const fs = require("fs");
const { exec, execSync } = require("child_process");
const os = require("os");
const os = require("os");
// Get the name of the main directory
let cwd = __dirname;
@@ -21,7 +21,7 @@ if (os.platform() == "win32") {
// Place Shortcuts using powershell
for (let dir of shortcutPaths) {
let command = `$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut("${dir}"); $S.TargetPath = "${target}"; $S.IconLocation = "${icon}"; $S.Save()`;
exec( command,
{
shell: "powershell.exe",
@@ -52,12 +52,12 @@ if (os.platform() == "win32") {
let icon = path.join( __dirname,"..", "/Projects/Foundations/Icons/superalgos.png");
// Create .desktop shortcut file
fs.writeFileSync( `${name}.desktop`,
fs.writeFileSync( `${name}.desktop`,
`[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=${name}
Comment=Launch Shortcut for Superalgos
Comment=Launch Shortcut for Superalgos
Path=${__dirname}
Exec=gnome-terminal -e ${__dirname}/launch-linux-mac.sh
Terminal=true
@@ -87,20 +87,20 @@ if (os.platform() == "win32") {
});
} else {
console.log( "Automatic shortcut creation is not yet supported on your flavor of linux. If you would like to see this feature add, message @harrellbm on telegram or discord to ask how you can help!")
console.log( "Automatic shortcut creation is not yet supported on your flavor of linux. If you would like to see this feature add, message @harrellbm on telegram or discord to ask how you can help!")
}
// Mac Shortcuts
} else if (os.platform() == "darwin") {
const icon = path.join( __dirname,"/superalgos.ico");
const createShortcutCommand = `chmod +x ${name}.command & cp ${name}.command ~/Desktop/${name}.command`
const installFileIconcommand = `npm install fileicon`;
const installFileIconcommand = `npm install -g fileicon`;
const changeIconCommand = `./node_modules/fileicon/bin/fileicon set ~/Desktop/${name}.command ./Launch-Scripts/superalgos.ico`
const unInstallFileIconcommand = `npm uninstall fileicon`;
const unInstallFileIconcommand = `npm uninstall -g fileicon`;
try {
// Create .desktop shortcut file
fs.writeFileSync( `${name}.command`,
fs.writeFileSync( `${name}.command`,
`#!/bin/sh
cd ${__dirname}
cd ..
@@ -113,14 +113,14 @@ if (os.platform() == "win32") {
// Remove temporary .command file
fs.unlinkSync( `${name}.command` )
//Install fileicon utility
//Install fileicon utility
execSync(installFileIconcommand, {stdio: 'inherit', timeout: 30000});
//change Icon
execSync(changeIconCommand, {stdio: 'inherit', timeout: 30000});
//Un-Install fileicon utility
//Un-Install fileicon utility
execSync(unInstallFileIconcommand, {stdio: 'inherit', timeout: 30000});
} catch (error) {
console.log('');
@@ -135,4 +135,4 @@ if (os.platform() == "win32") {
// Misc Operating System
} else {
console.log("Automatic shortcut creation is not currently supported on your operating system. If you would like to see your operating system added please reachout on discord or telegram to let the devs know.")
}
}
+1 -1
View File
@@ -62,7 +62,7 @@ exports.newNetworkRoot = function newNetworkRoot() {
}
for (let i = 0; i < SA.secrets.array.length; i++) {
let secret = SA.secrets.array[i]
SA.secrets.map.set(secret.signingAccountChildCodeName, secret)
SA.secrets.map.set(secret.nodeCodeName, secret)
}
NT.app = require('./Network/NetwokNode.js').newNetworkNode()
+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' {} \;
+17
View File
@@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\..\\PlatformRoot.js"
}
]
}
+26
View File
@@ -0,0 +1,26 @@
{
"files.exclude": {
"**/Data-Storage": true,
"**/Log-Files": true,
"**/node_modules": true,
"**/My-Social-Trading-Data": true,
"**/My-Network-Nodes-Data": true,
"**/My-Workspaces": true,
"**/My-Secrets": true,
"**/My-Data-Storage": true,
"**/My-Log-Files": true,
},
"search.exclude": {
"**/Data-Storage": true,
"**/Log-Files": true,
"**/node_modules": true,
"**/My-Social-Trading-Data": true,
"**/My-Network-Nodes-Data": true,
"**/My-Workspaces": true,
"**/My-Secrets": true,
"**/My-Data-Storage": true,
"**/My-Log-Files": true,
},
"search.maintainFileSearchCache": true,
"editor.mouseWheelZoom": true
}
+71 -9
View File
@@ -4,6 +4,7 @@ exports.newGithubServer = function newGithubServer() {
getGithubStars: getGithubStars,
getGithubWatchers: getGithubWatchers,
getGithubForks: getGithubForks,
createGithubFork: createGithubFork,
mergePullRequests: mergePullRequests,
initialize: initialize,
finalize: finalize,
@@ -79,7 +80,7 @@ exports.newGithubServer = function newGithubServer() {
const octokit = new Octokit({
auth: token,
userAgent: 'Superalgos v.1.0'
userAgent: 'Superalgos ' + SA.version
})
await getList()
@@ -162,6 +163,46 @@ exports.newGithubServer = function newGithubServer() {
}
}
async function createGithubFork(token) {
try {
token = unescape(token)
await doGithub()
async function doGithub() {
try {
const { Octokit } = SA.nodeModules.octokit
const octokit = new Octokit({
auth: token,
userAgent: 'Superalgos ' + SA.version
})
await octokit.repos.createFork({
owner: 'Superalgos',
repo: 'Superalgos'
})
} catch (err) {
if (err === undefined) { return }
console.log('[ERROR] Github Server -> createGithubFork -> doGithub -> err.stack = ' + err.stack)
}
}
} catch (err) {
console.log('[ERROR] Github Server -> createGithubFork -> Method call produced an error.')
console.log('[ERROR] Github Server -> createGithubFork -> err.stack = ' + err.stack)
console.log('[ERROR] Github Server -> createGithubFork -> repository = ' + repository)
console.log('[ERROR] Github Server -> createGithubFork -> username = ' + username)
console.log('[ERROR] Github Server -> createGithubFork -> token starts with = ' + token.substring(0, 10) + '...')
console.log('[ERROR] Github Server -> createGithubFork -> token ends with = ' + '...' + token.substring(token.length - 10))
let error = {
result: 'Fail Because',
message: err.message,
stack: err.stack
}
return error
}
}
async function mergeGithubPullRequests(commitMessage, username, token) {
try {
commitMessage = unescape(commitMessage)
@@ -207,7 +248,7 @@ exports.newGithubServer = function newGithubServer() {
const { Octokit } = SA.nodeModules.octokit
const octokit = new Octokit({
auth: token,
userAgent: 'Superalgos v.1.0'
userAgent: 'Superalgos ' + SA.version
})
await getPrList()
await mergePrs()
@@ -284,13 +325,29 @@ exports.newGithubServer = function newGithubServer() {
/*
Lets get the files changed at this Pull Request.
*/
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
let listResponse = await octokit.rest.pulls.listFiles({
owner: owner,
repo: repo,
pull_number: pullRequest.number
});
let filesChanged = listResponse.data
let filesChanged = []
const per_page = 100 // Max
let page = 0
let lastPage = false
while (lastPage === false) {
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
let listResponse = await octokit.rest.pulls.listFiles({
owner: owner,
repo: repo,
pull_number: pullRequest.number,
per_page: per_page,
page: page
});
if (listResponse.data.length < 100) {
lastPage = true
}
for (let i = 0; i < listResponse.data.length; i++) {
let listItem = listResponse.data[i]
filesChanged.push(listItem)
}
}
let fileContentUrl // URL to the only file at the PR
let fileContent // File content of the only file at the PR
let userProfile // User Profile Object
@@ -307,6 +364,11 @@ exports.newGithubServer = function newGithubServer() {
if (await validateUserProfileBlockchainAccountDoesNotBelongtoAnotherUserProfile() === false) { continue }
if (await validateUserProfileSigningAccountsDoesNotBelongtoAnotherUserProfile() === false) { continue }
/*
TODO: We need to check before merging a User Profile that none of id of the node of the profile hierearchy exists at any other
User Profile already at the repository, to avoid atacts of users highjacking references of other user profiles.
*/
if (await mergePullRequest() === false) {
console.log('[WARN] Github Server -> mergeGithubPullRequests -> Merge Failed -> Pull Request "' + pullRequest.title + '" not merged because Github could not merge it. -> mergeResponse.message = ' + mergeResponse.data.message)
} else {
+203 -139
View File
@@ -139,7 +139,7 @@ exports.newHttpInterface = function newHttpInterface() {
return
}
default: {
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify({error: 'Method ' + params.method + ' is invalid.'}), httpResponse)
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify({ error: 'Method ' + params.method + ' is invalid.' }), httpResponse)
}
}
} catch (err) {
@@ -325,6 +325,42 @@ exports.newHttpInterface = function newHttpInterface() {
}
}
break
case 'Secrets': {
switch (requestPath[2]) { // switch by command
case 'Save-Secrets-File': {
SA.projects.foundations.utilities.httpRequests.getRequestBody(httpRequest, httpResponse, processRequest)
async function processRequest(body) {
try {
let filePath = global.env.PATH_TO_SECRETS + '/'
let fileName = "Secrets.json"
createNewDir(filePath)
SA.nodeModules.fs.writeFileSync(filePath + '/' + fileName, body)
console.log('[SUCCESS] ' + filePath + '/' + fileName + ' created.')
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(global.DEFAULT_OK_RESPONSE), httpResponse)
} catch (err) {
console.log('[ERROR] httpInterface -> Secrets -> Save-Secrets-File -> Method call produced an error.')
console.log('[ERROR] httpInterface -> Secrets -> Save-Secrets-File -> err.stack = ' + err.stack)
console.log('[ERROR] httpInterface -> Secrets -> Save-Secrets-File -> Params Received = ' + body)
let error = {
result: 'Fail Because',
message: err.message,
stack: err.stack
}
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(error), httpResponse)
}
}
break
}
}
}
break
case 'Docs': {
switch (requestPath[2]) { // switch by command
case 'Save-Node-Schema': {
@@ -633,16 +669,6 @@ exports.newHttpInterface = function newHttpInterface() {
}
}
}
function createNewDir(path) {
try {
fs.mkdirSync(path, {recursive: true})
} catch (err) {
if (err.message.indexOf('file already exists') < 0) {
throw (err)
}
}
}
}
return noErrorsDuringSaving
@@ -697,7 +723,7 @@ exports.newHttpInterface = function newHttpInterface() {
contribute()
async function contribute() {
const {lookpath} = SA.nodeModules.lookpath
const { lookpath } = SA.nodeModules.lookpath
const gitpath = await lookpath('git')
if (gitpath === undefined) {
console.log('[ERROR] `git` not installed.')
@@ -768,11 +794,11 @@ exports.newHttpInterface = function newHttpInterface() {
async function doGithub() {
const {Octokit} = SA.nodeModules.octokit
const { Octokit } = SA.nodeModules.octokit
const octokit = new Octokit({
auth: token,
userAgent: 'Superalgos v.1.0'
userAgent: 'Superalgos ' + SA.version
})
const repo = 'Superalgos'
@@ -832,7 +858,7 @@ exports.newHttpInterface = function newHttpInterface() {
update()
async function update() {
const {lookpath} = SA.nodeModules.lookpath
const { lookpath } = SA.nodeModules.lookpath
const gitpath = await lookpath('git');
if (gitpath === undefined) {
console.log('[ERROR] `git` not installed.')
@@ -873,11 +899,11 @@ exports.newHttpInterface = function newHttpInterface() {
let message
try {
message = await git.pull('https://github.com/Superalgos/Superalgos', currentBranch)
return {message: message}
return { message: message }
} catch (err) {
console.log('[ERROR] Error updating ' + currentBranch)
console.log(err.stack)
return {error: err}
return { error: err }
}
}
@@ -903,7 +929,7 @@ exports.newHttpInterface = function newHttpInterface() {
checkout()
async function checkout() {
const {lookpath} = SA.nodeModules.lookpath
const { lookpath } = SA.nodeModules.lookpath
const gitpath = await lookpath('git');
if (gitpath === undefined) {
console.log('[ERROR] `git` not installed.')
@@ -1001,7 +1027,7 @@ exports.newHttpInterface = function newHttpInterface() {
branch()
async function branch() {
const {lookpath} = SA.nodeModules.lookpath
const { lookpath } = SA.nodeModules.lookpath
const gitpath = await lookpath('git');
if (gitpath === undefined) {
console.log('[ERROR] `git` not installed.')
@@ -1135,7 +1161,7 @@ exports.newHttpInterface = function newHttpInterface() {
try {
console.log('fixSchemas...' + allAppSchemas.length)
let projects = SA.projects.foundations.utilities.filesAndDirectories.getDirectories(global.env.PATH_TO_PROJECTS)
const fs = SA.nodeModules.fs
//const fs = SA.nodeModules.fs
let needFixing = 0
for (let i = 0; i < allAppSchemas.length; i++) {
let schemaDocument = allAppSchemas[i]
@@ -1183,13 +1209,13 @@ exports.newHttpInterface = function newHttpInterface() {
}
}
if (wasUpdated === true) {
let fileContent = JSON.stringify(schemaDocument, undefined, 4)
let filePath = allAppSchemasFilePaths[i]
//if (wasUpdated === true) {
//let fileContent = JSON.stringify(schemaDocument, undefined, 4)
//let filePath = allAppSchemasFilePaths[i]
//console.log('Saving File at ' + filePath)
//console.log(fileContent)
//fs.writeFileSync(filePath, fileContent)
}
//}
}
} catch (err) {
console.log(err.stack)
@@ -1286,6 +1312,15 @@ exports.newHttpInterface = function newHttpInterface() {
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
return
}
case 'createGithubFork': {
let serverResponse = await PL.servers.GITHUB_SERVER.createGithubFork(
params.token
)
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
return
}
case 'mergePullRequests': {
let serverResponse = await PL.servers.GITHUB_SERVER.mergePullRequests(
@@ -1318,8 +1353,21 @@ exports.newHttpInterface = function newHttpInterface() {
let error
await checkFork()
await updateUser()
async function checkFork() {
let serverResponse = await PL.servers.GITHUB_SERVER.createGithubFork(
params.token
)
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
if(error != undefined) {
console.log('[ERROR] httpInterface -> Gov -> createFork -> You already have a fork. Good for you!')
}
}
async function updateUser() {
await doGithubUser()
@@ -1343,18 +1391,24 @@ exports.newHttpInterface = function newHttpInterface() {
async function doGithubUser() {
const {Octokit} = SA.nodeModules.octokit
const { Octokit } = SA.nodeModules.octokit
const octokit = new Octokit({
auth: token,
userAgent: 'Superalgos v.1.0'
userAgent: 'Superalgos ' + SA.version
})
const repo = 'Superalgos'
const owner = 'Superalgos'
const head = username + ':' + contributionsBranch
const base = currentBranch
const title = 'Contribution: ' + mess
//const base = currentBranch
let base = undefined
if (process.env.SA_MODE === 'gitDisable') {
base = 'develop'
} else {
base = currentBranch
}
const title = 'Governance: ' + mess
const path = 'Projects/Governance/Plugins/User-Profiles/' + username + '.json';
const sha = await getSHA(path);
@@ -1429,11 +1483,11 @@ exports.newHttpInterface = function newHttpInterface() {
async function getSHA(path) {
let sha = ''
const {graphql} = SA.nodeModules.graphql
const { graphql } = SA.nodeModules.graphql
try {
const {repository} = await graphql(
const { repository } = await graphql(
'{ ' +
' repository(name: "SuperAlgos", owner: "' + username + '") {' +
' object(expression: "develop:' + path + '") {' +
@@ -1518,7 +1572,7 @@ exports.newHttpInterface = function newHttpInterface() {
return
}
default: {
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify({error: 'Method ' + params.method + ' is invalid.'}), httpResponse)
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify({ error: 'Method ' + params.method + ' is invalid.' }), httpResponse)
}
}
} catch (err) {
@@ -1549,132 +1603,132 @@ exports.newHttpInterface = function newHttpInterface() {
}
break
case 'Images': // This means the Images folder.
{
let path = global.env.PATH_TO_PLATFORM + '/WebServer/Images/' + requestPath[2]
{
let path = global.env.PATH_TO_PLATFORM + '/WebServer/Images/' + requestPath[2]
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
break
case 'Icons': // This means the Icons folder under Projects.
{
let path = global.env.PATH_TO_PROJECTS + '/' + requestPath[2] + '/Icons'
{
let path = global.env.PATH_TO_PROJECTS + '/' + requestPath[2] + '/Icons'
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
break
case 'GIFs': // This means the GIFs folder under Projects.
{
let path = global.env.PATH_TO_PROJECTS + '/' + requestPath[2] + '/GIFs'
{
let path = global.env.PATH_TO_PROJECTS + '/' + requestPath[2] + '/GIFs'
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
break
case 'PNGs': // This means the PNGs folder under Projects.
{
let path = global.env.PATH_TO_PROJECTS + '/' + requestPath[2] + '/PNGs'
{
let path = global.env.PATH_TO_PROJECTS + '/' + requestPath[2] + '/PNGs'
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
if (requestPath[3] !== undefined) {
path = path + '/' + requestPath[3]
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
if (requestPath[4] !== undefined) {
path = path + '/' + requestPath[4]
}
if (requestPath[5] !== undefined) {
path = path + '/' + requestPath[5]
}
path = unescape(path)
SA.projects.foundations.utilities.httpResponses.respondWithImage(path, httpResponse)
}
break
case 'WebServer': // This means the WebServer folder.
{
SA.projects.foundations.utilities.httpResponses.respondWithFile(global.env.PATH_TO_PLATFORM + '/WebServer/' + requestPath[2], httpResponse)
}
{
SA.projects.foundations.utilities.httpResponses.respondWithFile(global.env.PATH_TO_PLATFORM + '/WebServer/' + requestPath[2], httpResponse)
}
break
case 'externalScripts': // This means the WebServer folder.
{
// This allows to have sub-folders in externalScripts
let fullPath = ''
for (let i = 2; i < requestPath.length; i++) {
fullPath += requestPath[i]
if (i !== requestPath.length - 1) {
fullPath += '/'
{
// This allows to have sub-folders in externalScripts
let fullPath = ''
for (let i = 2; i < requestPath.length; i++) {
fullPath += requestPath[i]
if (i !== requestPath.length - 1) {
fullPath += '/'
}
}
/**
* Sometimes libs will call fonts/images etc. by themselves thus we should have a filter for file type to respond with the correct content and headers, but from the externalScripts folder
* This code should be improved when needed with specific file types
*/
let requestedFileExtension = requestPath[requestPath.length - 1].split('.').pop()
switch (requestedFileExtension) {
case 'otf':
case 'ttf':
case 'eot':
case 'woff':
case 'woff2':
SA.projects.foundations.utilities.httpResponses.respondWithFont(global.env.PATH_TO_PLATFORM + '/WebServer/externalScripts/' + fullPath, httpResponse)
break
default:
SA.projects.foundations.utilities.httpResponses.respondWithFile(global.env.PATH_TO_PLATFORM + '/WebServer/externalScripts/' + fullPath, httpResponse)
}
}
/**
* Sometimes libs will call fonts/images etc. by themselves thus we should have a filter for file type to respond with the correct content and headers, but from the externalScripts folder
* This code should be improved when needed with specific file types
*/
let requestedFileExtension = requestPath[requestPath.length - 1].split('.').pop()
switch (requestedFileExtension) {
case 'otf':
case 'ttf':
case 'eot':
case 'woff':
case 'woff2':
SA.projects.foundations.utilities.httpResponses.respondWithFont(global.env.PATH_TO_PLATFORM + '/WebServer/externalScripts/' + fullPath, httpResponse)
break
default:
SA.projects.foundations.utilities.httpResponses.respondWithFile(global.env.PATH_TO_PLATFORM + '/WebServer/externalScripts/' + fullPath, httpResponse)
}
}
break
case 'Plotters': // This means the plotter folder, not to be confused with the Plotters script!
{
let project = requestPath[2]
let dataMine = requestPath[3]
let codeName = requestPath[4]
let moduleName = requestPath[5]
let filePath = global.env.PATH_TO_PROJECTS + '/' + project + '/' + 'Bots-Plotters-Code' + '/' + dataMine + '/plotters/' + codeName + '/' + moduleName
SA.projects.foundations.utilities.httpResponses.respondWithFile(filePath, httpResponse)
}
{
let project = requestPath[2]
let dataMine = requestPath[3]
let codeName = requestPath[4]
let moduleName = requestPath[5]
let filePath = global.env.PATH_TO_PROJECTS + '/' + project + '/' + 'Bots-Plotters-Code' + '/' + dataMine + '/plotters/' + codeName + '/' + moduleName
SA.projects.foundations.utilities.httpResponses.respondWithFile(filePath, httpResponse)
}
break
case 'ChartLayers': {
SA.projects.foundations.utilities.httpResponses.respondWithFile(global.env.PATH_TO_PLATFORM + '/UI/' + endpointOrFile + '/' + requestPath[2], httpResponse)
@@ -1861,7 +1915,7 @@ exports.newHttpInterface = function newHttpInterface() {
let folder = unescape(requestPath[3])
let fileName = unescape(requestPath[4])
/*v.1.0 Refactoring Code: Remove this before releasing v.1.0.*/
/*Refactoring Code: Remove this before releasing 1.0.0*/
if (fileName === 'Superalgos-CL.json') {
fileName = 'Superalgos-PL.json'
}
@@ -1872,8 +1926,8 @@ exports.newHttpInterface = function newHttpInterface() {
fileName
)
.then(response => {
SA.projects.foundations.utilities.httpResponses.respondWithContent(response, httpResponse)
}
SA.projects.foundations.utilities.httpResponses.respondWithContent(response, httpResponse)
}
)
.catch(err => {
let error = {
@@ -2053,7 +2107,7 @@ exports.newHttpInterface = function newHttpInterface() {
/* Create Dir if it does not exist */
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, {recursive: true});
fs.mkdirSync(dir, { recursive: true });
}
fs.writeFile(filePath, fileContent, onFileWritten)
@@ -2197,4 +2251,14 @@ exports.newHttpInterface = function newHttpInterface() {
}
}
}
function createNewDir(path) {
try {
SA.nodeModules.fs.mkdirSync(path, { recursive: true })
} catch (err) {
if (err.message.indexOf('file already exists') < 0) {
throw (err)
}
}
}
}
+1 -1
View File
@@ -142,7 +142,7 @@ exports.newPlatformApp = function newPlatformApp() {
console.log('Http Interface .............................................. Listening at port ' + global.env.PLATFORM_HTTP_INTERFACE_PORT)
console.log('')
console.log("You are running Superalgos Platform v.1.0")
console.log("You are running Superalgos Platform " + SA.version)
console.log('')
console.log("What's new? These are the main new features in this version:")
console.log('')
+4
View File
@@ -225,6 +225,10 @@ function newEventsServerClient(lanNetworkNode) {
port = config.webSocketsPort
extwsurl = config.webSocketsExternalURL
if (UI.environment.DEMO_MODE === true) {
host = UI.environment.DEMO_MODE_HOST
}
/* Check if we really have to establish the connection. */
if (config.autoConnect === false) { return }
} catch (err) {
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

+4
View File
@@ -784,6 +784,10 @@ outline: none;
background-color: transparent;
}
.docs-search-input::placeholder {
color:#bbb;
}
/* Search Results Page */
/* Search Results Page Header*/
+17 -1
View File
@@ -42,6 +42,15 @@
try {
drawSplashText()
loadSuperalgos()
window.api.receive('fromMaster', (data) => {
if(data.newUser){
UI.projects.foundations.spaces.designSpace.workspace.replaceWorkspaceByLoadingOne(data.newUser[0], data.newUser[1])
}else if(data.submit){
UI.projects.governance.spaces.reportsSpace.commandInterface.command = data.submit[0]
UI.projects.governance.spaces.reportsSpace.commandInterface.detectCommands()
//const element = document.getElementsByClassName("governance-filter-input")[0]
}
})
} catch (err) {
console.log("[ERROR] UI can not be started. Please check that WebServer is running.", err);
}
@@ -66,6 +75,13 @@
function drawSplashText() {
const splashTextArray = [
{
"splashTextLine1Html": '<span class="credits-red">Every month, 10M SA tokens, with a market value of more than 500,000 USD are distributed between everyone contributing to the project during that month. </span>'
,
"splashTextLine2Html": 'In October 2021 we counted around 50 contributors, with an average mining reward of 10,000 USD for each one. Contributing to Superalgos now is like mining Bitcoin in 2010 where there were no more than 50 people mining it. Ask the community moderators how to join a team an participate in the next distribution.'
,
"splashTextLine3Html": ''
} /*,
{
"splashTextLine1Html": '<span class="credits-red">Superalgos is open source, forever free for everyone, and is constantly improving thanks to the involvement of contributors!</span>'
,
@@ -107,7 +123,7 @@
"splashTextLine2Html": 'Look around, find something that is missing and start coding! If you need help, ask in the chat groups to find a mentor!'
,
"splashTextLine3Html": 'Follow our motto: Just code it!'
}
} */
]
let arrayIndex = Math.trunc(Math.random() * splashTextArray.length)
+2 -1
View File
@@ -53,8 +53,9 @@ SA.nodeModules = {
lookpath: require('lookpath'),
process: require('process'),
childProcess: require('child_process')
}
SA.version = require('./package.json').version
/*
Check if we are starting from a particular workspace.
*/
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -27,23 +27,58 @@
},
{
"style": "Text",
"text": "In practical terms, a trading system is a hierarchical arrangement organizing the actionable aspects of your investment plan. The hierarchy contains definitions regarding any number of trading strategies, all operating on the same market and sharing the same initial capital allocation."
"text": "In practical terms, a trading system is a hierarchical arrangement organizing the actionable aspects of your investment plan. The hierarchy contains definitions regarding any number of trading strategies, all operating on the same market and sharing the same initial capital allocation.",
"translations": [
{
"language": "ES",
"text": "En términos prácticos, un Trading System es una disposición jerárquica que organiza los aspectos procesables de su plan de inversión. Esta jerarquía contiene definiciones respecto a un sinnúmero de estrategias de trading, todas operando en el mismo mercado y compartiendo la misma asignación de capital inicial.",
"updated": 1637880963165
}
]
},
{
"style": "Text",
"text": "You use a trading system to define strategies following the Superalgos Protocol, splitting strategies into four stages: trigger, open, manage, and close."
"text": "You use a trading system to define strategies following the Superalgos Protocol, splitting strategies into four stages: trigger, open, manage, and close.",
"translations": [
{
"language": "ES",
"text": "Se utiliza un Trading System para definir estrategias acorde al protocolo de Superalgos, dividiendo a éstas en cuatro etapas: activación, apertura, gestión y cierre.",
"updated": 1637880976135
}
]
},
{
"style": "Text",
"text": "The concept of describing strategies in stages is fundamental to the methodical aspect of the trading system, as it provides a framework to run every strategy with the same framework, which contributes to developing scalable trading systems that may grow to any number of strategies."
"text": "The concept of describing strategies in stages is fundamental to the methodical aspect of the trading system, as it provides a framework to run every strategy with the same framework, which contributes to developing scalable trading systems that may grow to any number of strategies.",
"translations": [
{
"language": "ES",
"text": "El concepto de describir estrategias en etapas es fundamental para el aspecto metódico del Trading System, ya que provee la infraestructura necesaria para ejecutar cualquier estrategia con la misma infraestructura. Esto contribuye a desarrollar Trading Systems escalables, que pueden alcanzar innumerable cantidad de estrategias.",
"updated": 1637880986625
}
]
},
{
"style": "Text",
"text": "When a trading system features more than one strategy, the first strategy has precedence over the second, the second over the third, and so on. This means that strategies are evaluated in a sequence. When a given strategy is triggered-on, the remaining strategies in the queue are no longer evaluated until the strategy triggers off. In other words, when multiple strategies are deployed within a single trading system, only one strategy may trade at any given moment, and precedence is given by the order around the trading system node."
"text": "When a trading system features more than one strategy, the first strategy has precedence over the second, the second over the third, and so on. This means that strategies are evaluated in a sequence. When a given strategy is triggered-on, the remaining strategies in the queue are no longer evaluated until the strategy triggers off. In other words, when multiple strategies are deployed within a single trading system, only one strategy may trade at any given moment, and precedence is given by the order around the trading system node.",
"translations": [
{
"language": "ES",
"text": "Cuando un Trading System ofrece más de una estrategia, la primera estrategia tiene prioridad sobre la segunda, la segunda sobre la tercera, y así sucesivamente. Esto significa que las estrategias son analizadas de manera secuencial. Cuando una estrategia dada es activada, las estrategias restantes no serán analizadas hasta que ésta se desactive. En otras palabras, cuando se implementan múltiples estrategias bajo un único Trading System, solo una estrategia puede operar en un momento dado, y la prioridad está dada por el orden especificado en el Nodo del Trading System.",
"updated": 1637881003253
}
]
},
{
"style": "Text",
"text": "As a corollary to the above, if you wish strategies to operate in different markets, or you wish strategies to be able to take positions simultaneously, then you must set up those strategies in different trading systems."
"text": "As a corollary to the above, if you wish strategies to operate in different markets, or you wish strategies to be able to take positions simultaneously, then you must set up those strategies in different trading systems.",
"translations": [
{
"language": "ES",
"text": "Como complemento a lo anterior, si se desea configurar estrategias que operen sobre diferentes mercados, o estrategias que tengan la posibilidad de abrir posiciones de forma simultánea, entonces se las deberá configurar bajo Trading Systems distintos.",
"updated": 1637881023208
}
]
}
]
}
@@ -22,14 +22,18 @@
function initialize() {
tradingSystem = TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SIMULATION_STATE.tradingSystem
exchangeId = TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.config.codeName
let exchangeConfig = TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.config
exchangeId = exchangeConfig.codeName
if (exchangeConfig.options !== undefined) {
options = exchangeConfig.options
}
let key
let secret
let uid
let password
let sandBox = TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.config.sandbox || false;
let sandBox = exchangeConfig.sandbox || false;
if (TS.projects.foundations.globals.taskConstants.TASK_NODE.keyReference !== undefined) {
if (TS.projects.foundations.globals.taskConstants.TASK_NODE.keyReference.referenceParent !== undefined) {
@@ -39,6 +43,17 @@
password = TS.projects.foundations.globals.taskConstants.TASK_NODE.keyReference.referenceParent.config.password
}
}
switch (exchangeId) {
case 'okex':
case 'okex3':
case 'okex5':
if (!('brokerId' in options)) {
options.brokerId = 'c77ccd60ec7b4cBC'
}
break;
}
const exchangeClass = ccxt[exchangeId]
const exchangeConstructorParams = {
'apiKey': key,
@@ -150,7 +150,7 @@ exports.newAlgorithmicTradingBotModulesSnapshots = function(processIndex) {
}
/* Now we go down through all this node children */
let schemaDocument = TS.projects.foundations.globals.taskConstants.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
let schemaDocument = SA.projects.foundations.globals.schemas.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
if (schemaDocument === undefined) { return }
if (schemaDocument.childrenNodesProperties !== undefined) {
@@ -112,7 +112,7 @@ exports.newAlgorithmicTradingBotModulesTradingEngine = function (processIndex) {
destinationNode.value = originNode.value
/* Now we go down through all the children of the origin node, assuming the destination node has the same children structure*/
let schemaDocument = TS.projects.foundations.globals.taskConstants.APP_SCHEMA_MAP.get(originNode.project + '-' + originNode.type)
let schemaDocument = SA.projects.foundations.globals.schemas.APP_SCHEMA_MAP.get(originNode.project + '-' + originNode.type)
if (schemaDocument === undefined) { return }
if (schemaDocument.childrenNodesProperties !== undefined) {
@@ -151,7 +151,7 @@ exports.newAlgorithmicTradingBotModulesTradingEngine = function (processIndex) {
nodesMap.set(node.id, node)
/* Now we go down through all this node children */
let schemaDocument = TS.projects.foundations.globals.taskConstants.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
let schemaDocument = SA.projects.foundations.globals.schemas.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
if (schemaDocument === undefined) { return }
if (schemaDocument.childrenNodesProperties !== undefined) {
@@ -194,7 +194,7 @@ exports.newAlgorithmicTradingBotModulesTradingEngine = function (processIndex) {
}
/* Now we go down through all this node children */
let schemaDocument = TS.projects.foundations.globals.taskConstants.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
let schemaDocument = SA.projects.foundations.globals.schemas.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
if (schemaDocument === undefined) { return }
if (schemaDocument.childrenNodesProperties !== undefined) {
@@ -31,7 +31,7 @@ exports.newAlgorithmicTradingBotModulesTradingOutput = function (processIndex) {
/* Preparing everything for the Simulation */
let tradingSimulationModuleObject = TS.projects.algorithmicTrading.botModules.tradingSimulation.newAlgorithmicTradingBotModulesTradingSimulation(processIndex)
let outputDatasets = TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
let outputDatasets = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
let outputDatasetsMap = new Map()
await TS.projects.foundations.functionLibraries.outputManagementFunctions.readFiles(
@@ -37,7 +37,7 @@ exports.newAlgorithmicTradingBotModulesTradingRecords = function (processIndex)
we have a pointer to the node that have the information we need to extract.
Later, based on the product record definition we will extract each individual value.
*/
let outputDatasets = TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
let outputDatasets = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
for (let i = 0; i < outputDatasets.length; i++) {
let outputDatasetNode = outputDatasets[i]
@@ -372,8 +372,8 @@ exports.newAlgorithmicTradingBotModulesTradingSimulation = function (processInde
}
function positionChart(chart) {
let dataDependencies = TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processDependencies, 'Data Dependency')
dataDependencies = TS.projects.visualScripting.utilities.nodeFunctions.filterOutNodeWihtoutReferenceParentFromNodeArray(dataDependencies)
let dataDependencies = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processDependencies, 'Data Dependency')
dataDependencies = SA.projects.visualScripting.utilities.nodeFunctions.filterOutNodeWihtoutReferenceParentFromNodeArray(dataDependencies)
/* Finding the Current Element on Daily Files */
if (TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).TRADING_PROCESSING_DAILY_FILES) {
@@ -272,7 +272,7 @@ exports.newAlgorithmicTradingBotModulesTradingSystem = function (processIndex) {
}
/* Now we go down through all this node children */
let schemaDocument = TS.projects.foundations.globals.taskConstants.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
let schemaDocument = SA.projects.foundations.globals.schemas.APP_SCHEMA_MAP.get(node.project + '-' + node.type)
if (schemaDocument === undefined) { return }
if (schemaDocument.childrenNodesProperties !== undefined) {
@@ -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. */
@@ -105,6 +105,9 @@ function newAlgorithmicTradingFunctionLibraryTradingSessionFunctions() {
'Managed Stop Loss->Managed Take Profit->' +
'Phase->Formula->Next Phase Event->Move To Phase Event->Phase->' +
'Situation->Condition->Javascript Code->' +
'Outgoing Signals->Incoming Signals->Signal Reference->' +
'Trigger On Signal->Trigger Off Signal->Take Position Signal->' +
'Create Order Signal->Cancel Order Signal->' +
'Close Stage->' +
'Initial Targets->Target Size In Base Asset->Target Size In Quoted Asset->Target Rate->Formula->' +
'Open Execution->Close Execution->' +
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'
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -201,7 +201,7 @@ exports.newDataMiningBotModulesFetchingProcess = function (processIndex) {
if (recordProperty.apiResponseFieldReference !== undefined) {
if (recordProperty.apiResponseFieldReference.referenceParent !== undefined) {
let apiResponseField = recordProperty.apiResponseFieldReference.referenceParent
let endpointNodeFound = TS.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(apiResponseField, 'API Endpoint')
let endpointNodeFound = SA.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(apiResponseField, 'API Endpoint')
/*
Every Record Property with an apiResponseFieldReference must be on the path
to a certain endpoint.
@@ -52,13 +52,13 @@
}
/* The first phase here is about checking that we have everything we need at the definition level. */
let dataDependencies = TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(
let dataDependencies = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(
TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processDependencies, 'Data Dependency'
)
if (TS.projects.foundations.functionLibraries.singleMarketFunctions.validateDataDependencies(processIndex, dataDependencies, callBackFunction) !== true) { return }
let outputDatasets = TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(
let outputDatasets = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(
TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset'
)
if (TS.projects.foundations.functionLibraries.singleMarketFunctions.validateOutputDatasets(processIndex, outputDatasets, callBackFunction) !== true) { return }
@@ -138,9 +138,9 @@
contextSummary.dataset = outputDatasetNode.referenceParent.config.codeName
contextSummary.product = outputDatasetNode.referenceParent.parentNode.config.codeName
let botNode = TS.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(outputDatasetNode, 'Indicator Bot')
let botNode = SA.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(outputDatasetNode, 'Indicator Bot')
contextSummary.bot = botNode.config.codeName
let dataMineNode = TS.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(outputDatasetNode, 'Data Mine')
let dataMineNode = SA.projects.visualScripting.utilities.nodeFunctions.findNodeInNodeMesh(outputDatasetNode, 'Data Mine')
contextSummary.dataMine = dataMineNode.config.codeName
contextSummary.mineType = dataMineNode.type.replace(' ', '-')
contextSummary.project = dataMineNode.project
@@ -513,7 +513,7 @@
}
function writeDataRanges(callBack) {
let outputDatasets = TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(
let outputDatasets = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(
TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
let outputDatasetIndex = -1;
controlLoop()
@@ -151,7 +151,7 @@
function writeTimeFramesFiles(callBack) {
let outputDatasets =
TS.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(TS.projects.foundations.globals.taskConstants.TASK_NODE.bot.processes[processIndex].referenceParent.processOutput, 'Output Dataset')
let outputDatasetIndex = -1;
controlLoop()
@@ -68,6 +68,7 @@ function newDataMiningFunctionLibraryMineFunctions() {
scanBotArray(dataMine.apiDataFetcherBots)
scanBotArray(dataMine.indicatorBots)
scanBotArray(dataMine.tradingBots)
scanBotArray(dataMine.portfolioBots)
scanBotArray(dataMine.learningBots)
function scanBotArray(botArray) {
@@ -119,16 +119,17 @@
},
{
"style": "Subtitle",
"text": "Custom Shortcuts"
"text": "Custom Shortcuts to Nodes",
"updated": 1637691249937
},
{
"style": "Include",
"text": "Foundations->Topic->Keyboard Shortcuts to Nodes->Custom Node Shortcuts",
"updated": 1637691223240
},
{
"style": "List",
"text": "It is also possible to set a custom shortcut to any node you would like. Simply hover over a node and hit Ctrl + Alt + your preferred key to assign the shortcut.",
"updated": 1634909920250
},
{
"style": "Note",
"text": "A more detailed walk through can be found here: Keyboard Shortcuts to Nodes"
"text": "It is also possible to set a custom shortcut to any node you would like. Simply hover over a node and hit Ctrl + Alt + your preferred key to assign the shortcut."
},
{
"style": "Subtitle",
@@ -676,7 +676,7 @@ function newFoundationsDocsDocumentPage() {
}
case 'Tutorial': {
orderedTutorialPageIndexArray = UI.projects.education.utilities.docs.buildOrderedPageIndex(
UI.projects.education.spaces.docsSpace.currentDocumentBeingRendered.project,
project,
'Tutorial',
chapterName
)
@@ -141,6 +141,12 @@ function newFoundationsDocsFooter() {
}
HTML = HTML + '"></a>'
HTML = HTML + '<a href="#" onClick="UI.projects.education.spaces.docsSpace.changeLanguage(\'EL\')"><img src="Images/Languages/EL.png" title="Greek" class="docs-footer-language'
if (languageCode === 'EL') {
HTML = HTML + '-selected'
}
HTML = HTML + '"></a>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-footer-cell">'
@@ -168,7 +174,7 @@ function newFoundationsDocsFooter() {
HTML = HTML + '<div class="docs-footer-row">'
HTML = HTML + '<div class="docs-footer-cell">'
HTML = HTML + '<h4>About Your Deployment</h4>'
HTML = HTML + 'Superalgos may run from different branches in the repository. The <code class="docs-footer-code">Master</code> branch features the stable version, and the <code class="docs-footer-code">Develop</code> branch the version in development. Use the <code class="docs-footer-code">Plugins-Docs</code> branch to contribute plugins and to the Docs.'
HTML = HTML + 'Superalgos may run from different branches in the repository. The <code class="docs-footer-code">Master</code> branch features the stable version, and the <code class="docs-footer-code">Develop</code> branch the version in development.'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-footer-cell">'
@@ -177,7 +183,6 @@ function newFoundationsDocsFooter() {
HTML = HTML + '<ul>'
HTML = HTML + '<li><a href="#" onClick="UI.projects.education.spaces.docsSpace.changeCurrentBranch(\'master\')">Master</a></li>'
HTML = HTML + '<li><a href="#" onClick="UI.projects.education.spaces.docsSpace.changeCurrentBranch(\'develop\')">Develop</a></li>'
HTML = HTML + '<li><a href="#" onClick="UI.projects.education.spaces.docsSpace.changeCurrentBranch(\'plugins-docs\')">Plugins-Docs</a></li>'
HTML = HTML + '</ul>'
HTML = HTML + '</div>'
@@ -187,7 +192,6 @@ function newFoundationsDocsFooter() {
HTML = HTML + '<ul>'
HTML = HTML + '<li><a href="#" onClick="UI.projects.education.spaces.docsSpace.changeContributionsBranch(\'master\')">Master</code></li>'
HTML = HTML + '<li><a href="#" onClick="UI.projects.education.spaces.docsSpace.changeContributionsBranch(\'develop\')">Develop</a></li>'
HTML = HTML + '<li><a href="#" onClick="UI.projects.education.spaces.docsSpace.changeContributionsBranch(\'plugins-docs\')">Plugins-Docs</a></li>'
HTML = HTML + '</ul>'
HTML = HTML + '</ul>'
@@ -211,26 +215,36 @@ function newFoundationsDocsFooter() {
HTML = HTML + '<div class="docs-footer-row">'
HTML = HTML + '<div class="docs-footer-cell">'
HTML = HTML + '<h4>Join the Conversation</h4>'
HTML = HTML + '<p>We have a new <a href="https://discord.gg/CGeKC6WQQb" target="_blank">Discord Server</a> with multiple channels and a new <a href="https://forum.superalgos.org/" target="_blank">Community Forum</a> or you may join the original individual Telegram groups listed to the right.</p>'
HTML = HTML + '<p>We have a new <a href="https://discord.gg/CGeKC6WQQb" target="_blank">Discord Server</a> with multiple channels and a new <a href="https://forum.superalgos.org/" target="_blank">Community Forum</a>.</p>'
HTML = HTML + '<p>The community is a lot more active in the original Telegram groups listed on the right.</p>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-footer-cell">'
HTML = HTML + '<h4>In Telegram</h4>'
HTML = HTML + '<h4>Telegram Groups</h4>'
HTML = HTML + '<ul>'
HTML = HTML + '<li><a href="https://t.me/superalgoscommunity" target="_blank">Community Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgossupport" target="_blank">Technical Support Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosdevelop" target="_blank">Developers Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosmachinelearning" target="_blank">Machine Learning Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosdocs" target="_blank">Docs Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosuxui" target="_blank">UX/UI Design Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgoscollaborations" target="_blank">Collaborations Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgoscodebase" target="_blank">Codebase Learning Group</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgos_es" target="_blank">Hablemos en Español!</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgos_ru" target="_blank">Говорим по русски!</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgoscommunity" target="_blank">Community</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgossupport" target="_blank">Technical Support</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosdevelop" target="_blank">Developers</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosdatamining" target="_blank">Data Mining</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosmachinelearning" target="_blank">Machine Learning</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosdocs" target="_blank">Docs/Education</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosuxui" target="_blank">UX/UI Design</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosmarketing" target="_blank">Marketing</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgostoken" target="_blank">Token</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgostrading" target="_blank">Trading</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgoscollaborations" target="_blank">Collaborations</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgoscodebase" target="_blank">Codebase Learning</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgosnontechusers" target="_blank">Non-Tech Users</a></li>'
HTML = HTML + '</ul>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-footer-cell">'
HTML = HTML + '<h4>Non-English Telegram Groups</h4>'
HTML = HTML + '<ul>'
HTML = HTML + '<li><a href="https://t.me/superalgos_es" target="_blank">Spanish</a></li>'
HTML = HTML + '<li><a href="https://t.me/superalgos_ru" target="_blank">Russian</a></li>'
HTML = HTML + '<li><a href="https://t.me/tr_superalgos" target="_blank">Turkish</a></li>'
HTML = HTML + '</ul>'
HTML = HTML + '<h4>Other Resources</h4>'
HTML = HTML + '<ul>'
HTML = HTML + '<li><a href="https://t.me/superalgos" target="_blank">Official Announcements</a></li>'
@@ -1006,7 +1006,7 @@ function newEducationTutorialSpace() {
function resumeTutorial(node) {
if (UI.projects.foundations.spaces.designSpace.workspace.isInitialized !== true) { return }
//Testing if removing the navigationStack reset here fixes the tutorial resume issues
navigationStack = []
//navigationStack = []
node.payload.uiObject.isPlaying = true
tutorialRootNode = node
currentNode = node
@@ -1028,7 +1028,7 @@ function newEducationTutorialSpace() {
function resumeTutorialTopic(node) {
//Testing if removing the navigationStack reset here fixes the tutorial resume issues
navigationStack = []
//navigationStack = []
currentTopicNode = node
currentNode = node
currentStatus = 'Playing Topic'
@@ -1049,7 +1049,7 @@ function newEducationTutorialSpace() {
function resumeTutorialStep(node) {
//Testing if removing the navigationStack reset here fixes the tutorial resume issues
navigationStack = []
//navigationStack = []
currentStepNode = node
currentNode = node
currentStatus = 'Playing Step'
@@ -52,6 +52,10 @@ function newEducationUtilitiesLanguages() {
languageLabel = 'Arabic'
break
}
case 'EL': {
languageLabel = 'Greek'
break
}
}
return languageLabel
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 69 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: 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Loaded 100 of 619 files, more files were not shown because too many files have changed in this diff. Show more