diff --git a/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-bot-instance.svg b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-bot-instance.svg
new file mode 100644
index 000000000..87bee7bf0
--- /dev/null
+++ b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-bot-instance.svg
@@ -0,0 +1,133 @@
+
diff --git a/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-bot.svg b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-bot.svg
new file mode 100644
index 000000000..ac7e723f5
--- /dev/null
+++ b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-bot.svg
@@ -0,0 +1,37 @@
+
diff --git a/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-process-instance.svg b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-process-instance.svg
new file mode 100644
index 000000000..d2f3dcdf4
--- /dev/null
+++ b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-data-fetcher-process-instance.svg
@@ -0,0 +1,34 @@
+
diff --git a/Projects/Superalgos/Icons-SVG-Sources/nodes/api-map-reference.svg b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-map-reference.svg
new file mode 100644
index 000000000..470c340ec
--- /dev/null
+++ b/Projects/Superalgos/Icons-SVG-Sources/nodes/api-map-reference.svg
@@ -0,0 +1,10 @@
+
diff --git a/Projects/Superalgos/Icons/api-data-fetcher-bot-instance.png b/Projects/Superalgos/Icons/api-data-fetcher-bot-instance.png
new file mode 100644
index 000000000..84918f989
Binary files /dev/null and b/Projects/Superalgos/Icons/api-data-fetcher-bot-instance.png differ
diff --git a/Projects/Superalgos/Icons/api-data-fetcher-bot.png b/Projects/Superalgos/Icons/api-data-fetcher-bot.png
new file mode 100644
index 000000000..25f06da33
Binary files /dev/null and b/Projects/Superalgos/Icons/api-data-fetcher-bot.png differ
diff --git a/Projects/Superalgos/Icons/api-data-fetcher-process-instance.png b/Projects/Superalgos/Icons/api-data-fetcher-process-instance.png
new file mode 100644
index 000000000..ba638d496
Binary files /dev/null and b/Projects/Superalgos/Icons/api-data-fetcher-process-instance.png differ
diff --git a/Projects/Superalgos/Icons/api-map-reference.png b/Projects/Superalgos/Icons/api-map-reference.png
new file mode 100644
index 000000000..eb9a66bbb
Binary files /dev/null and b/Projects/Superalgos/Icons/api-map-reference.png differ
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/api-server.json b/Projects/Superalgos/Schemas/Docs-Concepts/api-server.json
new file mode 100644
index 000000000..1bd3692b1
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/api-server.json
@@ -0,0 +1,13 @@
+{
+ "type": "API Server",
+ "definition": {
+ "text": "It is a server (usually running at the Internet) that provides programatic access to it;s resources. This enables algorithms to access those resources. When those resources are data, then it allow anyone to fetch that data by executing predefined queries to the API Server.",
+ "updated": 1621955731261
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/defautlt-market.json b/Projects/Superalgos/Schemas/Docs-Concepts/defautlt-market.json
new file mode 100644
index 000000000..37186edf1
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/defautlt-market.json
@@ -0,0 +1,13 @@
+{
+ "type": "Defautlt Market",
+ "definition": {
+ "text": "We define as Default Market to the market under which a certain Task was defined.",
+ "updated": 1621955911464
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/inter-execution-memory.json b/Projects/Superalgos/Schemas/Docs-Concepts/inter-execution-memory.json
new file mode 100644
index 000000000..1ecbd271e
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/inter-execution-memory.json
@@ -0,0 +1,14 @@
+{
+ "type": "Inter Execution Memory",
+ "definition": {
+ "text": "It is a data structure that some bots need in order to resume their operations after they get woken up at the next cycle of their Main Loop. ",
+ "updated": 1621955211473
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "This data structure is currently saved inside the Status Report of the Bot. Since every bot usually read it's own Status Report at every run, with it, it has access to the Inter Execution Memory data structure that itself saved at the previous run.",
+ "updated": 1621955314173
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/main-loop.json b/Projects/Superalgos/Schemas/Docs-Concepts/main-loop.json
new file mode 100644
index 000000000..bdf411132
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/main-loop.json
@@ -0,0 +1,13 @@
+{
+ "type": "Main Loop",
+ "definition": {
+ "text": "Most Bots in Superalgos are not awake all the time. As a strategy to preserve hardware resourses, they run and go to sleep for a configurable amount of time, or until they are woken up by the finishing of some other task they are waiting for. Each cycle of running and sleeping is a loop at the Main Loop of a Bot.",
+ "updated": 1621955130672
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/raw-data.json b/Projects/Superalgos/Schemas/Docs-Concepts/raw-data.json
new file mode 100644
index 000000000..49dba3291
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/raw-data.json
@@ -0,0 +1,13 @@
+{
+ "type": "Raw Data",
+ "definition": {
+ "text": "We call raw data to data just fetched from an external source that has not been processed or manipulated yet by Bots inside the system.",
+ "updated": 1621955789483
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/superalgos-marketplace.json b/Projects/Superalgos/Schemas/Docs-Concepts/superalgos-marketplace.json
new file mode 100644
index 000000000..825e588f2
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/superalgos-marketplace.json
@@ -0,0 +1,13 @@
+{
+ "type": "Superalgos Marketplace",
+ "definition": {
+ "text": "The Superalgos Marketplace is a yet to be implemented set of features that will allow users to offer products and services to each other in a p2p way, enabling their bots to consume data and services from other user's bots across the internet.",
+ "updated": 1621955605794
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/superalgos-network.json b/Projects/Superalgos/Schemas/Docs-Concepts/superalgos-network.json
new file mode 100644
index 000000000..18932863c
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/superalgos-network.json
@@ -0,0 +1,14 @@
+{
+ "type": "Superalgos Network",
+ "definition": {
+ "text": "The Superalgos Network is a future, to be launched network that will allow users to setup their Client to be part of. Once done Clients will connect to each other in a p2p way, enabling from there the exchange of data and services between users.",
+ "updated": 1621955485325
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "The Superalgos Network is on the project's roadmap, expected to be implemented in 2022.",
+ "updated": 1621955515063
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Concepts/task-server.json b/Projects/Superalgos/Schemas/Docs-Concepts/task-server.json
new file mode 100644
index 000000000..3376201be
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Concepts/task-server.json
@@ -0,0 +1,13 @@
+{
+ "type": "Task Server",
+ "definition": {
+ "text": "The Task Server is one of the 3 main software components of Superalgos. The purpose of the Task Server is to run a Task. Tasks are defined at a Workspace at the UI. For running a Task, the Task Server receives at runtime all the needed definitions from the UI.",
+ "updated": 1621954996474
+ },
+ "paragraphs": [
+ {
+ "style": "Text",
+ "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-endpoint.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-endpoint.json
index a8d7404f1..3c5a7c150 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-endpoint.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-endpoint.json
@@ -5,9 +5,23 @@
"updated": 1621017376741
},
"paragraphs": [
+ {
+ "style": "Subtitle",
+ "text": "How to use this node?",
+ "updated": 1621949863470
+ },
{
"style": "Text",
- "text": "Right click and select the pencil button to enter edit mode."
+ "text": "Read the docs of the API you are trying to map, and indentigy the commands that it support (endpoints)."
+ },
+ {
+ "style": "Include",
+ "text": "Superalgos->Topic->Data Mining - Fetching Data From APIs->Main Workflow",
+ "updated": 1621951345309
+ },
+ {
+ "style": "Title",
+ "text": "Configuration"
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-map.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-map.json
index 7103b86cb..956739b41 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-map.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-map.json
@@ -12,6 +12,23 @@
},
{
"style": "Subtitle",
+ "text": "How is it used?"
+ },
+ {
+ "style": "Text",
+ "text": "To use an API Map users need to setup a Task for an API Data Fetcher Bot. This set up is done automatically as part of the Install New Market procedure if an API Map is detected at the Worksapce. From within that Task, a reference to an API Map is established. "
+ },
+ {
+ "style": "Text",
+ "text": "When the Task is run, the UI will send to the Task Server all the definitions inside the API Map so that the API Data Fetcher Bot can use them to connect to the API Server, fetch data from it, and correctly interpret the responses."
+ },
+ {
+ "style": "Include",
+ "text": "Superalgos->Topic->Data Mining - Fetching Data From APIs->Main Workflow",
+ "updated": 1621951793419
+ },
+ {
+ "style": "Title",
"text": "Configuration"
},
{
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameter.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameter.json
index b62fae9f2..fabb2abb1 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameter.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameter.json
@@ -16,8 +16,16 @@
},
{
"style": "List",
- "text": "replaceBy: this property allows you to instruct the API Fetcher Bot to set a value to this parameter. The possible values are: @BaseAsset and @QuotedAsset",
- "updated": 1621018303336
+ "text": "codeName: here you must write the exact string that is going to be used to form the URL path. ",
+ "updated": 1621950838675
+ },
+ {
+ "style": "List",
+ "text": "replaceBy: this property allows you to instruct the API Fetcher Bot to set a value to this parameter. The possible values are: @BaseAsset and @QuotedAsset"
+ },
+ {
+ "style": "Important",
+ "text": "The replacedBy property is the way users have to send some contextual values to the API Server like for example the Base Asset or Quoted Asset of the Defautl Market."
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameters.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameters.json
index f310b56df..7b55f1979 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameters.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-path-parameters.json
@@ -9,6 +9,19 @@
"style": "Text",
"text": "When found at an API Map they define the default values for each parameter, whicle when found at a Data Mine, they define the actual values to be used, which overrides the defaults.",
"updated": 1621022867854
+ },
+ {
+ "style": "Title",
+ "text": "How to identify them?"
+ },
+ {
+ "style": "Text",
+ "text": "The API your are trying to map shold have it's API Path Parameters documented. If not, check any example provided there of how to request the data and see if there are inner folders below the folder of the API Enpoint. These folders are, each one, one API Path Parameter that needs to be defined. As everything else in Superalgos, this current node children are considered clockwise, that defines the order in which the path will be constructed at runtime."
+ },
+ {
+ "style": "Include",
+ "text": "Superalgos->Topic->Data Mining - Fetching Data From APIs->Main Workflow",
+ "updated": 1621951167309
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-query-parameters.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-query-parameters.json
index 13855d9ce..236efacb3 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-query-parameters.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-query-parameters.json
@@ -7,8 +7,16 @@
"paragraphs": [
{
"style": "Text",
- "text": "When found at the API Map will define the default values for each parameter. When found at the Data Mine will define the actual values to be used, these would replace the defaults.",
- "updated": 1621022566230
+ "text": "In other words, Query Parameters are the parameters sent at any URL after the question mark ?",
+ "updated": 1621954104568
+ },
+ {
+ "style": "Text",
+ "text": "Query Parameters in general do not need to be defined in any specific orders, so feel free to add children for this node in whatever order you like."
+ },
+ {
+ "style": "Success",
+ "text": "When found at the API Map will define the default values for each parameter. When found at the Data Mine will define the actual values to be used, these would replace the defaults."
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-query-response.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-query-response.json
index f817f3f0e..af8622cfd 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-query-response.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-query-response.json
@@ -16,7 +16,8 @@
},
{
"style": "Success",
- "text": "If you wish to be able to react to other error codes, you should also have more of this nodes with the codeName of each of the status you want to cover."
+ "text": "If you wish to be able to react to other error codes, you should also have more of these nodes with the codeName of each of the status you want to cover. If the API Data Fetcher Bot receives a response code that has not been defined, it will stop there the processing.",
+ "updated": 1621952346052
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-query-responses.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-query-responses.json
index ed72a0ff0..3d297c6fc 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-query-responses.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-query-responses.json
@@ -7,7 +7,12 @@
"paragraphs": [
{
"style": "Text",
- "text": "Right click and select the pencil button to enter edit mode."
+ "text": "For a single API Endpoint an API Server might have different possible responses. Each response type is differentiated from each other by the response code / status.",
+ "updated": 1621952454860
+ },
+ {
+ "style": "Text",
+ "text": "Each child of this node is a different response code / status from the API Server. Users need to add at least the most common response code (200) in order to start testing this API Endpoint. After that is recommended to add all other response codes as well, otherwise the API Data Fetcher Bot will stop when an unhandled response code is received."
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-response-field.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-response-field.json
index 11a9b88cf..7b2825dde 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-response-field.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-response-field.json
@@ -19,6 +19,39 @@
"style": "List",
"text": "fieldType: This property declares if the data is number, a string an object or an array, those are the 4 possible values.",
"updated": 1621022104672
+ },
+ {
+ "style": "List",
+ "text": "description: The API Map is expected to be used not only by the user who created, but once contributed as a Plugin, by all other users. This property is useful to store the description of this field as it was written at the API Server documentation, to avoid other users to go and look for it."
+ },
+ {
+ "style": "Subtitle",
+ "text": "Field Type Possible Values"
+ },
+ {
+ "style": "Text",
+ "text": "This property is very important and needs to be defined very well. This property defines the structure of the response data structure and needs to be very precise. It's possible values are:",
+ "updated": 1621953383545
+ },
+ {
+ "style": "List",
+ "text": "number: Any type of numbers fall into this category, including dates timestamps in numbers.",
+ "updated": 1621953444809
+ },
+ {
+ "style": "List",
+ "text": "string: Any strings falls into this category, including dates in string format.",
+ "updated": 1621953470163
+ },
+ {
+ "style": "List",
+ "text": "object: Use this value when you find that the field holds a JSON object enclosed in { and }",
+ "updated": 1621953515163
+ },
+ {
+ "style": "List",
+ "text": "array: Use this type when the value of the field is a JSON array enclosed in [ and ]",
+ "updated": 1621953569329
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-response-schema.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-response-schema.json
index 94dffdbe6..b60fef17f 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-response-schema.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-response-schema.json
@@ -5,10 +5,14 @@
"updated": 1621021486718
},
"paragraphs": [
+ {
+ "style": "Text",
+ "text": "The API Map assumes the API Server will respond with string formatted in JSON. This means that the response will be a data structure of nestled objects and arrays. Users will need to map the response format into a API Response Schema by adding children to this node and to this node's children. All these descendants are of the same Node Type API Response Field. ",
+ "updated": 1621952655717
+ },
{
"style": "Subtitle",
- "text": "Configuration",
- "updated": 1621021492973
+ "text": "Configuration"
},
{
"style": "List",
diff --git a/Projects/Superalgos/Schemas/Docs-Nodes/api-version.json b/Projects/Superalgos/Schemas/Docs-Nodes/api-version.json
index cd7418952..35abe1f17 100644
--- a/Projects/Superalgos/Schemas/Docs-Nodes/api-version.json
+++ b/Projects/Superalgos/Schemas/Docs-Nodes/api-version.json
@@ -6,8 +6,18 @@
},
"paragraphs": [
{
- "style": "Text",
- "text": "Right click and select the pencil button to enter edit mode."
+ "style": "Note",
+ "text": "We expect every API to have at leat one version.",
+ "updated": 1621951647515
+ },
+ {
+ "style": "Include",
+ "text": "Superalgos->Topic->Data Mining - Fetching Data From APIs->Main Workflow",
+ "updated": 1621951484955
+ },
+ {
+ "style": "Title",
+ "text": "Configuration"
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-001-data-mining-introduction.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-001-data-mining-introduction.json
index 583899495..64135a3cb 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-001-data-mining-introduction.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-001-data-mining-introduction.json
@@ -3,14 +3,14 @@
"pageNumber": "1",
"type": "Data Mining - Introduction",
"definition": {
- "text": "Data Mining in Superalgos means extracting data from external sources, procesing that data in order to have it ready for consumption by trading strategies.",
- "updated": 1621694013759
+ "text": "Data Mining in Superalgos means extracting data from external sources and procesing that data in order to have it ready for consumption by trading strategies.",
+ "updated": 1621899758597
},
"paragraphs": [
{
"style": "Text",
- "text": "Superalgos offers a set of Data Mining tools. With those, users can fetch data from external sources, process them into more elaborate datasets, plot them at the charts and ultimately consume the data within their trading strategies.",
- "updated": 1621694036120
+ "text": "Superalgos offers a set of Data Mining tools. With those, users can fetch data from external sources, process them into more elaborate datasets, plot them at the charts, feed ML Bot's models and ultimately consume the data within their trading strategies.",
+ "updated": 1621899827534
},
{
"style": "Title",
@@ -18,8 +18,8 @@
},
{
"style": "Text",
- "text": "All of the data inside the Superalgos system has an origin somewhere at the Internet, outisde of the system. There are currently to ways to bring data into the system:",
- "updated": 1621705240818
+ "text": "All of the data inside the Superalgos system has an origin somewhere outside the system, usually somewhere at the Internet. There are currently 3 ways to bring data into the system:",
+ "updated": 1621899913780
},
{
"style": "List",
@@ -28,13 +28,18 @@
},
{
"style": "List",
- "text": "Without coding an Algorithm: (available since Beta 10) via the API Data Fetcher Bot, this method involves designing an API Map which is later feeded to an API Data Fetcher Bot at run time so that it can fetch data from APIs without needing the user to write a single line of code at all.",
- "updated": 1621705316432
+ "text": "Without coding an Algorithm: (available since Beta 10) via the API Data Fetcher Bot, this method involves designing an API Map which is later feeded to an API Data Fetcher Bot at runtime so that it can fetch data from APIs without needing the user to write a single line of code at all.",
+ "updated": 1621900116590
+ },
+ {
+ "style": "List",
+ "text": "External processing: it is also possible to gather the data and process it outside the system, and put it in the right folder, with the right format, and in this way feed the system with data. This use case is not the most popular, but it is a valid possibility.",
+ "updated": 1621900136004
},
{
"style": "Text",
- "text": "Once the data is in the system, it is then processed for different reasons by Indicator Bot s. Some of the processed data might be plotted, and some might be consumed from a Trading Strategy.",
- "updated": 1621691628626
+ "text": "Once the data is in the system, it is then processed for different reasons by Indicator Bot s. Some of the processed data might be plotted, some might feed machile learning bots, and some might be consumed from a Trading Strategy.",
+ "updated": 1621900199919
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-002-data-mining-workflows.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-002-data-mining-workflows.json
index c25a777ea..cc9dfaebd 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-002-data-mining-workflows.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-002-data-mining-workflows.json
@@ -36,8 +36,8 @@
},
{
"style": "Note",
- "text": "Both of these 2 workflows start by producing Raw Data that has to be digested by Indicator Bots.",
- "updated": 1621698358246
+ "text": "The data just arrived from an external source is considered Raw Data. Both of these 2 workflows produce Raw Data that has to be digested by Indicator Bots.",
+ "updated": 1621900437233
},
{
"style": "Subtitle",
@@ -50,8 +50,8 @@
},
{
"style": "List",
- "text": "Standarize Datasets: They are used for standarization of raw data extracted from the internet by Sensor Bot s or API Data Fetcher Bot s. Once data is standarized, it can be run through other Indicator Bot s that will extract the juice out of them. Once standarized data can also be plotted and consumed from trading strategies. By standarizing we are specifically referring to transforming the data into a Dataset type that can be used for Plotting, to feed Learning Bots and Trading Bots. These Dataset types are Multi-Period-Daily and Milti-Period-Market. ",
- "updated": 1621705567513
+ "text": "Standarize Datasets: They are used for standarization of raw data extracted from the internet by a Sensor Bot or an API Data Fetcher Bot. Once data is standarized, it can be run through other Indicator Bot s that will extract the juice out of them. Once standarized, data can also be plotted and consumed from trading strategies. By standarizing we are specifically referring to transforming the data into a Dataset type that can be used for Plotting, to feed Learning Bots and Trading Bots. These Dataset types are Multi-Period-Daily and Milti-Period-Market.",
+ "updated": 1621900536868
},
{
"style": "List",
@@ -60,13 +60,13 @@
},
{
"style": "Subtitle",
- "text": "Indicators -> Plotters (for users)",
- "updated": 1621698262190
+ "text": "Indicators -> Plotters",
+ "updated": 1621900608845
},
{
"style": "Text",
- "text": "Plotters are intended for users, not for bots. Plotters will render at the charts information of a Dataset based on the plotter's definition. Plotters can only read data from certain Dataset types, you will learn which ones later at this Topic.",
- "updated": 1621697151527
+ "text": "Plotters are tools for users, not for bots. Plotters will render at the charts information of a Dataset based on the plotter's definition. Plotters can only read data from certain Dataset types, you will learn which ones later at this Topic.",
+ "updated": 1621900619194
},
{
"style": "Text",
@@ -88,8 +88,8 @@
},
{
"style": "Text",
- "text": "Trading bots are the final consumer of data, which they use to take trading decisions based on their definitions. The ultimate purpose of the whole Data Mining operation is to digest data so that is is easily accesible for trading strategies.",
- "updated": 1621696940017
+ "text": "Trading bots are the ultimate consumer of data, which they use to take trading decisions based on their definitions. The ultimate purpose of the whole Data Mining operation is to digest data so that is is easily accesible for trading strategies.",
+ "updated": 1621900703336
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-003-data-mining-dataset-types.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-003-data-mining-dataset-types.json
index 26171f632..778e3159c 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-003-data-mining-dataset-types.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-003-data-mining-dataset-types.json
@@ -14,23 +14,27 @@
},
{
"style": "List",
- "text": "Single File: As the name suggest, this Dataset contains only one file with all the data in there. It is not frequently used. So far is the Dataset type where data comming from Webhooks is stored at. It is stored in this way because it assumed that not a lot of data will come through this pipe, only signals produced by external systems. Webhooks feature is expected to evolve in the future maniging the incoming data in another type of Dataset. This Dataset type can be plotted and it's data consumed from withing trading strategies.",
- "updated": 1621696354757
+ "text": "Single-File: As the name suggest, this Dataset contains only one file with all the data in there. It is not frequently used. So far is the Dataset type where data comming from Webhooks is stored at. It is stored in this way because it is assumed that not a lot of data will come through this pipe, only signals produced by external systems. Webhooks feature is expected to evolve in the future maniging the incoming data in another type of Dataset. This Dataset type can be plotted and it's data consumed from withing trading strategies. The API Data Fetcher Bot also can save Raw Data in this type of dataset, if needed.",
+ "updated": 1621901077561
},
{
"style": "List",
- "text": "One-Min Daily: This Dataset type organizes data in one file per day, and as the name suggest, expects the data itself to belong to time periods of one minute. This type of Dataset can not be plotted or it's data consumed from trading strategies.",
- "updated": 1621696328584
+ "text": "One-Min-Daily: This Dataset type organizes data in one file per day, and as the name suggest, expects the data itself to belong to time frames of one minute. This type of Dataset can not be plotted or it's data consumed from trading strategies.",
+ "updated": 1621901069906
},
{
"style": "List",
- "text": "Multi Period Daily: This Dataset type organizes data in one file per day for each Time Frame ranging from 1 minute to 45 minuntes. The data of this type of Dataset can be plotted and can be consumed by trading strategies.",
- "updated": 1621696475925
+ "text": "Multi-Period-Daily: This Dataset type organizes data in one file per day for each Time Frame ranging from 1 minute to 45 minuntes. The data of this type of Dataset can be plotted and can be consumed by trading strategies.",
+ "updated": 1621901061453
},
{
"style": "List",
- "text": "Multi Period Market: This Dataset type organizes data in only one file each Time Frame ranging from 1 hour to 24 hours. That means that the whole market history will be stored in one single file for each time frame. For example candles of 1 hour for a certain market, will be stored in a single file. The data of this type of Dataset can be plotted and can be consumed by trading strategies.",
- "updated": 1621696582451
+ "text": "Multi-Period-Market: This Dataset type organizes data in only one file for each Time Frame ranging from 1 hour to 24 hours. That means that the whole market history will be stored in one single file for each time frame. For example candles of 1 hour for a certain market, will be stored in a single file. The data of this type of Dataset can be plotted and can be consumed by trading strategies.",
+ "updated": 1621901050963
+ },
+ {
+ "style": "Note",
+ "text": "By far, the most popular Dataset Types are Multi-Period-Daily and Multi-Period-Market. "
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-004-data-mining-datasets-type-conversions.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-004-data-mining-datasets-type-conversions.json
index 2971c817c..04c94a7e5 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-004-data-mining-datasets-type-conversions.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-004-data-mining-datasets-type-conversions.json
@@ -62,8 +62,8 @@
},
{
"style": "Text",
- "text": "The Asset Metrics Indicator Bot, defined at the Messari Data Mine uses a Standard Converter from One-Min-Daily Dataset type to Multi-Period-Daily and Multi-Period-Market Dataset types. To use the conferter, the bot's Process Definition nodes need to have at their config the framework of this converter.",
- "updated": 1621711379111
+ "text": "The Asset Metrics Indicator Bot, defined at the Messari Data Mine uses a Standard Converter from One-Min-Daily Dataset type to Multi-Period-Daily and Multi-Period-Market Dataset types. To use the converter, the bot's Process Definition nodes need to have at their config the framework of this converter.",
+ "updated": 1621901387602
},
{
"style": "Text",
@@ -82,8 +82,13 @@
},
{
"style": "Json",
- "text": "{\n \"codeName\": \"From-One-Min-To-Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"From-One-Min-To-Multi-Period-Market\"\n }\n}",
- "updated": 1621701757557
+ "text": " {\n \"codeName\": \"From-One-Min-To-Multi-Period-Market\",\n \"normalWaitTime\": 0,\n \"retryWaitTime\": 10000,\n \"framework\": {\n \"name\": \"From-One-Min-To-Multi-Period-Market\"\n }\n}",
+ "updated": 1621901499029
+ },
+ {
+ "style": "Success",
+ "text": "You will need the standar converter everytime you use the API Data Fetcher Bot to extract data from some Inernet API. The bot will usually save the data in a One-Min-Daily Dataset Type, and you will need to setup and Indicator Bot with two processes, in order to convert the One-Min-Daily Dataset Type into a Multi-PeriodDaily and a Multi-Period-Market Dataset Type. ",
+ "updated": 1621901677409
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-005-data-mining-indicator-frameworks.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-005-data-mining-indicator-frameworks.json
index d81f77328..a414043b7 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-005-data-mining-indicator-frameworks.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-005-data-mining-indicator-frameworks.json
@@ -9,8 +9,8 @@
"paragraphs": [
{
"style": "Text",
- "text": "When running custom code, users have full control of the process and there is no limit on what it can be done in terms of data manipulations. The trade off is that the user must be a developer.",
- "updated": 1621702329009
+ "text": "When running custom code, users have full control of the process and there is no limit on what it can be done in terms of data manipulation. The trade off is that the user must be a developer.",
+ "updated": 1621902338195
},
{
"style": "Text",
@@ -31,11 +31,13 @@
},
{
"style": "List",
- "text": "Custom Code: This means the Indicator will use custom made code to handle all data transformations. "
+ "text": "Custom Code: This means the Indicator Bot will use custom made code to handle all data transformations.",
+ "updated": 1621902418790
},
{
"style": "List",
- "text": "UI-Defined: This means that the indictor will base it's behaviour on the definitioins defined at the UI including the code snippets provided by the user."
+ "text": "UI-Defined: This means that the Indictor Bot will base it's behaviour on the definitioins at the UI including the code snippets provided by the user.",
+ "updated": 1621902442579
},
{
"style": "Title",
@@ -65,8 +67,8 @@
},
{
"style": "Text",
- "text": "The way to implement a Custom Code Indicator is to set up at the config of the Process Definition that there is custom code for this process. Specifically, you need to add the botModule property to the config. This is how it looks like.",
- "updated": 1621703510791
+ "text": "The way to implement a Custom Code Indicator tell the Bot at the config of the Process Definition that there is custom code for this process. Specifically, you need to add the botModule property to the config. This is how it looks like.",
+ "updated": 1621902538119
},
{
"style": "Json",
@@ -75,8 +77,8 @@
},
{
"style": "Text",
- "text": "Then you will need to locate the Project Schema file for the project your bot belongs to. Inside of that file you will need to add some definitions in order for the system to be able to laod your new module at runtime and later execute it once users run your bot implemented in this way.",
- "updated": 1621703616902
+ "text": "Then you will need to locate the Project Schema File for the project your bot belongs to. Inside of that file you will need to add some definitions in order for the system to be able to laod your new module at runtime and later execute it once users run your bot implemented in this way.",
+ "updated": 1621902552523
},
{
"style": "Text",
@@ -84,7 +86,8 @@
},
{
"style": "Text",
- "text": "The definition to be added there should be something like this:"
+ "text": "The definition to be added there should look something like this:",
+ "updated": 1621902599128
},
{
"style": "Json",
@@ -93,8 +96,8 @@
},
{
"style": "Text",
- "text": "After that you will need to add a new Javascript module with your code. ",
- "updated": 1621704019288
+ "text": "After that you will need to add to the codebase a new Javascript module with your code.",
+ "updated": 1621902622372
},
{
"style": "Title",
@@ -127,13 +130,13 @@
},
{
"style": "List",
- "text": "Multi-Period-Daily: It is used to process data currently available at a Dataset of type Multi-Period-Daily and produce an output of a Dataset of the same type. How the data is going to be transformed is up to the user, since at the UI users can provide code snippets to handle the data transformation at the Data Building Procedure node.",
- "updated": 1621703225204
+ "text": "Multi-Period-Daily: It is used to process data currently available at a Dataset of type Multi-Period-Daily and produce as output a Dataset of the same type. How the data is going to be transformed is up to the user, since at the UI users can provide code snippets to handle the data transformation at the Data Building Procedure node.",
+ "updated": 1621902697553
},
{
"style": "List",
- "text": "Multi-Period-Market: It is used to process data currently available at a Dataset of type Multi-Period-Market and produce an output of a Dataset of the same type. How the data is going to be transformed is up to the user, since at the UI users can provide code snippets to handle the data transformation at the Data Building Procedure node.",
- "updated": 1621703273921
+ "text": "Multi-Period-Market: It is used to process data currently available at a Dataset of type Multi-Period-Market and produce as output a Dataset of the same type. How the data is going to be transformed is up to the user, since at the UI users can provide code snippets to handle the data transformation at the Data Building Procedure node.",
+ "updated": 1621902733616
},
{
"style": "Subtitle",
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-006-data-mining-data-mines.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-006-data-mining-data-mines.json
index 927a9b933..a42a73bf8 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-006-data-mining-data-mines.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-006-data-mining-data-mines.json
@@ -51,7 +51,8 @@
},
{
"style": "Text",
- "text": "Data Mines might depend of other Data Mines if any of their bots depend on bots belonging to other Data Mines. You will learn further down this Topic how a bot can depend on other bots in detail. In a nutshell, they can depend in two ways:"
+ "text": "Data Mines might depend of other Data Mines if any of their bots depend on bots belonging to other Data Mines. You will learn further down this Topic how a bot can depend on other bots in detail. In a nutshell, they can depend in 3 ways. They can have a:",
+ "updated": 1621903084681
},
{
"style": "List",
@@ -68,8 +69,8 @@
},
{
"style": "Note",
- "text": "When a Data Mine depends on another Data Mine, both need to be present at the Workspace where the Task involving the execution of the Bot is.",
- "updated": 1621709928655
+ "text": "When a Data Mine depends on another Data Mine, both need to be present at the Workspace where the Task defining the execution of the Bot is located.",
+ "updated": 1621903174117
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-007-data-mining-managing-execution.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-007-data-mining-managing-execution.json
index 028d33d87..47cf94976 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-007-data-mining-managing-execution.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-007-data-mining-managing-execution.json
@@ -3,8 +3,8 @@
"pageNumber": "7",
"type": "Data Mining - Managing Execution",
"definition": {
- "text": "Bots can execute at their own pace or they could wait for other bots to finish executing in order to start. ",
- "updated": 1621710031525
+ "text": "Bots can execute at their own pace or they can wait for other bots to finish executing in order for them to start.",
+ "updated": 1621903220369
},
"paragraphs": [
{
@@ -38,8 +38,8 @@
},
{
"style": "Text",
- "text": "This is how to configure the Process Definition of a Bot that it's execution depends on other Bot. Here the normalWaitTime has a value of zero, which will force the boot to inmediatelly run the next loop, but since there is an Execution Started Event defined, that will make it wait until the referenced Bot finishes.",
- "updated": 1621710760133
+ "text": "This is how to configure the Process Definition of a Bot that it's execution depends on other Bot. Here the normalWaitTime has a value of zero, which will force the Bot to inmediatelly run the next loop, but since there is an Execution Started Event defined, that will make it wait until the referenced Bot finishes.",
+ "updated": 1621903624630
},
{
"style": "Json",
@@ -50,6 +50,11 @@
"style": "Success",
"text": "In this case users must also define which bot to wait for. To do this they stablish a reference from the Execution Started Event node of the Bot that needs to wait, to the Execution Finished Event of the Bot they are waiting for to finish.",
"updated": 1621710539966
+ },
+ {
+ "style": "Note",
+ "text": "From the deployment point of view, the dependant bots can be physically located at the same machine, or at multiple different machines. Superalgos handles the syncronization across multiples machines.",
+ "updated": 1621903914878
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-008-data-mining-data-dependencies.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-008-data-mining-data-dependencies.json
index a0e1694c7..c4fed4808 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-008-data-mining-data-dependencies.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-008-data-mining-data-dependencies.json
@@ -26,7 +26,8 @@
},
{
"style": "Text",
- "text": "When a Bot has a Data Dependency of a dataset produced by a Bot defined in a different Data Mine, then both Data Mines must be present at the Workspace where the Bot is going to be lauched at."
+ "text": "When a Bot has a Data Dependency of a dataset produced by a Bot defined at a different Data Mine, then both Data Mines must be present at the Workspace where the Bot is going to be lauched at.",
+ "updated": 1621903950116
},
{
"style": "Text",
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-009-data-mining-status-reports.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-009-data-mining-status-reports.json
index b77e01b38..3a52ee366 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-009-data-mining-status-reports.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-009-data-mining-status-reports.json
@@ -3,18 +3,19 @@
"pageNumber": "9",
"type": "Data Mining - Status Reports",
"definition": {
- "text": "Status Reports are files produced by each Bot's processes with some key information that the Bot needs to save in order to remember the next time is run.",
- "updated": 1621716668465
+ "text": "Status Reports are files produced by each Bot's processes with some key information that the Bot needs to save in order to remember it the next time is run.",
+ "updated": 1621904046327
},
"paragraphs": [
{
"style": "Text",
- "text": "Most Bots in superalgos are run by the Task Server and they implement a Main Loop. At each loop execution, bots do their job and at the end they go to sleep. How much time they sleep and other details are configured at the Bot's process. ",
- "updated": 1621717056723
+ "text": "Most Bots in Superalgos are run by the Task Server and they implement a Main Loop. At each loop execution, bots do their job and at the end they go to sleep. How much time they sleep and other details are configured at the Bot's Process Definition.",
+ "updated": 1621904131214
},
{
"style": "Text",
- "text": "Before going to sleep all the memory is flushed from all information related to the bot, so that machine resources are freed for other bots in the same machine to use. There is some info Bot's need to remember between every execution of the Main Loop, and between executions of the Task itself. That info is stored in a JSON / text file called the Status Report."
+ "text": "Before going to sleep, all the memory is flushed from all information related to the Bot, so that hardware resources are freed for other bots in the same machine to use. There is some info Bots need to remember between every execution of the Main Loop, and between executions of the Task itself. That info is stored in a JSON / text file called the Status Report.",
+ "updated": 1621904194069
},
{
"style": "Text",
@@ -27,7 +28,8 @@
},
{
"style": "Note",
- "text": "Status Report files also might include a data structure called Inter Execution Memory. Status information is kind of standard for all types of bots. Inter Execution Memory on the other hand depends on each Bot type and what is actually processing."
+ "text": "Status Report files also might include a data structure called Inter Execution Memory. Status information is kind of standard for all types of bots. Inter Execution Memory on the other hand, depends on each Bot type and what is actually processing.",
+ "updated": 1621904260686
},
{
"style": "Text",
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-010-data-mining-status-dependencies.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-010-data-mining-status-dependencies.json
index c63b5f014..d335edaae 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-010-data-mining-status-dependencies.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-010-data-mining-status-dependencies.json
@@ -19,8 +19,8 @@
},
{
"style": "Text",
- "text": "Bots that produce Raw Data usually do not depend on any other Bot's status and they are usually the root of a dependency tree or graph. Any Bot might have zero to many status dependencies. For each Status Dependency, the Bot's process at runtime will load the Status Report file of the dependent Bot and let extract from there the information it needs.",
- "updated": 1621718085593
+ "text": "Bots that produce Raw Data usually do not depend on any other Bot's status and they are usually the root of a dependency tree or graph. Any Bot can have from zero to many status dependencies. For each Status Dependency, the Bot's process at runtime will load the Status Report file of the dependent Bot and will extract from there the information it needs.",
+ "updated": 1621904417277
},
{
"style": "Title",
@@ -29,7 +29,8 @@
},
{
"style": "Text",
- "text": "Status Dependency can be classified by their utility. This make it easier for processes to handle them in code. There are currently three different utilities:"
+ "text": "A Status Dependency can be classified by it's utility. This make it easier for processes to handle them in code. There are currently three different utilities:",
+ "updated": 1621904453267
},
{
"style": "List",
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-011-data-mining-deployments.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-011-data-mining-deployments.json
index f21be3657..6ddad777f 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-011-data-mining-deployments.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-011-data-mining-deployments.json
@@ -13,13 +13,37 @@
"updated": 1621719049976
},
{
- "style": "Text",
- "text": "On one hand, the definitions at the Data Mine already contain the 3 types of relationships between Bots. Execution, Data Dependency and Status Dependency. On the other hand, the network hierarchy contains all the information needed to guess where the dependent bots are running (looking at the Tasks it can know at which machine in the network) and where the Datasets are in the network (looking at the Data Storage section).",
- "updated": 1621719258047
+ "style": "Title",
+ "text": "How does Superalgos know how to coordinate Bots?",
+ "updated": 1621904714762
},
{
"style": "Text",
- "text": "Everytime a Task is executed, the whole Network hierarchy, together with the bot's definitions at Data Mines are sent to the Task Server which will help the bot to load the datasets defined as Data Depencies, the Status Reports defined as Status Dependencies and wait for the Bot's defined at the Execution Dependencies, no matter where all those resources are within the physical network. "
+ "text": "Everything that needs to be known is already defined at the Workspace.",
+ "updated": 1621904768357
+ },
+ {
+ "style": "List",
+ "text": "In Data Mines: The definitions at the Data Mine contain the 3 types of relationships between Bots. Execution, Data Dependency and Status Dependency. "
+ },
+ {
+ "style": "List",
+ "text": "At the Network: The Network hierarchy contains all the information needed to know where the dependent bots are running (looking at the Tasks we can know at which machine in the network) and where the Datasets are in the network (looking at the Data Storage section)."
+ },
+ {
+ "style": "Title",
+ "text": "How does a Bot know where are it's dependencies running?",
+ "updated": 1621904824161
+ },
+ {
+ "style": "Text",
+ "text": "Everytime a Task is executed, the whole Network hierarchy, together with the bot's definitions at Data Mines are sent to the Task Server. This includes not only the Bot to be ran definitions, but also all the definitions of the dependent bots. ",
+ "updated": 1621904939603
+ },
+ {
+ "style": "Success",
+ "text": "At runtime, Superalgos will provide the Bot with the Datasets defined at Data Depencies, the Status Reports defined as Status Dependencies and if necesary, it iwll help the Bot wait for the Bot defined as an Execution Dependency, no matter where all those resources are within the physical network.",
+ "updated": 1621905102590
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-012-data-mining-products.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-012-data-mining-products.json
index b0b55fae8..7663beddc 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-012-data-mining-products.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-012-data-mining-products.json
@@ -3,14 +3,14 @@
"pageNumber": "12",
"type": "Data Mining - Products",
"definition": {
- "text": "All Datasets of any type of bot within the Superalgos system are considered products of the Bot that produced them. Why products? Because these dataset once the Superalgos Network is implemente wil be able to be sold to other users in the form of subscriptions.",
- "updated": 1621721546261
+ "text": "All Datasets of any type of bot within the Superalgos system are considered products of the Bot that produced them. Why products? Because users will be able to sell hese datasets in the form of subscriptions once the Superalgos Network is implemented.",
+ "updated": 1621905194343
},
"paragraphs": [
{
"style": "Text",
- "text": "In the future, users will be able to offer products to the rest of the users of the Superalgos Network / Marketplace. A single bot might produce many as many products as the bot designer wishes. Each product might contain one or more datasets. ",
- "updated": 1621721677750
+ "text": "In the future, users will be able to offer products to the rest of the users of the Superalgos Network / Superalgos Marketplace. A single bot might produce as many products as the bot designer wishes. Each product might contain one or more datasets.",
+ "updated": 1621905284676
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-013-data-mining-plotting.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-013-data-mining-plotting.json
index 247595d6c..065d66a04 100644
--- a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-013-data-mining-plotting.json
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-013-data-mining-plotting.json
@@ -3,13 +3,14 @@
"pageNumber": "13",
"type": "Data Mining - Plotting",
"definition": {
- "text": "Each product might have one Plotter Module associated with it. This Plotter Module has all the definitions to inteerpret the Product's datasets and render the information at the charts.",
- "updated": 1621721823675
+ "text": "Each product might have one Plotter Module associated with it. This Plotter Module has all the definitions needed to interpret the Product's datasets and render the information at the charts.",
+ "updated": 1621905321330
},
"paragraphs": [
{
"style": "Text",
- "text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
+ "text": "Superalgos has the capability to allow it's users to create plotters without writing any code at all. The ploter is defined at the Designer Space, and by the means of defining vertices and polygons, users can create custom charts for any Dataset.",
+ "updated": 1621905478694
}
]
}
\ No newline at end of file
diff --git a/Projects/Superalgos/Schemas/Docs-Topics/data-mining-3.1-data-mining-fetching-data-from-apis.json b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-3.1-data-mining-fetching-data-from-apis.json
new file mode 100644
index 000000000..bec1bb52a
--- /dev/null
+++ b/Projects/Superalgos/Schemas/Docs-Topics/data-mining-3.1-data-mining-fetching-data-from-apis.json
@@ -0,0 +1,57 @@
+{
+ "topic": "Data Mining",
+ "pageNumber": "13.1",
+ "type": "Data Mining - Fetching Data From APIs",
+ "definition": {
+ "text": "Superalgos allow it's users to fetch data from any API on the Internet without needing to write code to do it. Instead, users design an API Map, which is a set of definitions of how a Bot can access a certain API and how to interpret the API Server responses. With this API Maps, a API Data Fetcher Bot can be configured to extract data from any API Server and stored inside the system as Raw Data that later can processed and consumed by other Bots.",
+ "updated": 1621906349521
+ },
+ "paragraphs": [
+ {
+ "style": "Block",
+ "text": "Main Workflow",
+ "updated": 1621951016327
+ },
+ {
+ "style": "Title",
+ "text": "How to fetch data from an API?",
+ "updated": 1621951311144
+ },
+ {
+ "style": "Text",
+ "text": "The main workflow to pull this out is quite straight forward and it does not require coding at all. Follow this guide and you will be using data from any source at the Internet from your trading strategies in no time."
+ },
+ {
+ "style": "List",
+ "text": "1. Choose an API: Current version is limited to public APIs only. Secured APIs comming soon. "
+ },
+ {
+ "style": "List",
+ "text": "2. Design an API Map: Read the APIs online documentation and identify the Endpoints that returns the data you would like to fetch. Carefully map those Endpoints defining the parameters the API Server expects at each call, and also how the API Server response is formatted."
+ },
+ {
+ "style": "List",
+ "text": "3. Setup an API Data Fetcher Bot: Create a Data Mine for this API and create there an API Data Fetcher Bot. From that Bot's Record Properties you will need to reference the fields returned by the API Server defined at the API Map, defining in this way which fields from each response you are going to save to disk. You might also need to define query or path parameters here. "
+ },
+ {
+ "style": "List",
+ "text": "4. Setup an Indicator Bot for Dataset Type Conversion: The Raw Data saved to disk needs to be organized for consumption. You will need to setup an Indicator Bot that will do a Dataset Type Conversion from Raw Data to a standard Dataset Type."
+ },
+ {
+ "style": "List",
+ "text": "5. Setup Indicator Bots: Once the data is converted, you can extract from it specific Datasets defining a set of indicators you can build from that data. These Indicators can be just a reorganization of the data, with some adjustments on the names of fields and splitting the data in different indicators, or it can also include some data processing / transformations if you wish (this would require some coding)."
+ },
+ {
+ "style": "List",
+ "text": "6. Setup Plotters: These last indicators can have their plotters if you wish."
+ },
+ {
+ "style": "List",
+ "text": "7. Consume Data from Trading Strategies: These indicators can be consumed from your trading strategies."
+ },
+ {
+ "style": "Success",
+ "text": "There is a Workspace called API Data Fetcher Bot Demo with a simple working example of the previous steps you can take as reference."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Projects/Superalgos/UI/Spaces/Side-Space/ListItem.js b/Projects/Superalgos/UI/Spaces/Side-Space/ListItem.js
index 233bb4fdd..cc2643cb5 100644
--- a/Projects/Superalgos/UI/Spaces/Side-Space/ListItem.js
+++ b/Projects/Superalgos/UI/Spaces/Side-Space/ListItem.js
@@ -24,6 +24,7 @@ function newListItem() {
thisObject.container.frame.height = SIDE_PANEL_WIDTH * 0.40
let prefix = "User "
+ let label
let name
let project
let type
@@ -49,10 +50,11 @@ function newListItem() {
name = pName
project = pProject
type = pType
+ label = name
let splittedName = name.split('→')
if (splittedName.length === 2) {
- name = splittedName[1]
+ label = splittedName[1]
prefix = splittedName[0]
}
@@ -115,8 +117,9 @@ function newListItem() {
UI.projects.superalgos.utilities.drawPrint.roundedCornersBackground(params)
- UI.projects.superalgos.utilities.drawPrint.drawLabel(name, 1 / 2, 2.5 / 10, -5, 0, 15, thisObject.container, labelColor)
+ UI.projects.superalgos.utilities.drawPrint.drawLabel(label, 1 / 2, 2.5 / 10, -5, 0, 15, thisObject.container, labelColor)
UI.projects.superalgos.utilities.drawPrint.drawLabel(prefix + type, 1 / 2, 8.5 / 10, -5, 0, 15, thisObject.container, labelColor)
UI.projects.superalgos.utilities.drawPrint.drawIcon(icon, 1 / 2, 1 / 2, 0, 0, 50, thisObject.container)
}
}
+