Merge branch 'in-app-documentation' of https://github.com/Superalgos/Superalgos into in-app-documentation

This commit is contained in:
Luis Fernando Molina committed 2021-01-05 16:50:29 +01:00
commit 53ecfa7072
43 files changed
+251 -951

No files matched your search

@@ -1,36 +0,0 @@
{
"type": "The Docs Explained",
"definition": {
"text": "This book will walk you through everything you need to know about the Docs.",
"updated": 1609762580891
},
"paragraphs": [
{
"style": "Chapter",
"text": "Superalgos->I->Docs Basics->Read Chapter I to learn the basics concepts. They are the foundation that will let you understand the commands and styles explained later in this book.",
"updated": 1609763076399
},
{
"style": "Chapter",
"text": "Superalgos->II->Docs Commands->The Docs include a powerful command line interface that allows you to quickly fire commands from the search box. Dive into Chapter II to learn the details of each available command.",
"updated": 1609763122458
},
{
"style": "Chapter",
"text": "Superalgos->III->Docs Commands Errors"
},
{
"style": "Chapter",
"text": "Superalgos->IV->Docs Commands Messages",
"updated": 1609783744261
},
{
"style": "Chapter",
"text": "Superalgos->V->Docs Paragraph Styles"
},
{
"style": "Chapter",
"text": "Superalgos->VI->Docs Context Menu Actions"
}
]
}
@@ -11,14 +11,6 @@
{
"style": "Text",
"text": "Most bots consume data other bots have produced. Because bots need the data as input for their calculations, processes establish a data dependency with the dataset definitions of other bots. The reference provides the process with all the information needed to decode the dataset, enabling it to perform the required calculations."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/indicators-process-dependencies-02.gif"
},
{
"style": "Text",
"text": "The image above shows data dependencies in one bot referencing dataset definitions of another bot."
}
]
}
@@ -3,5 +3,10 @@
"definition": {
"text": "A data formula is a device used to assign a value to the panel data, usually in the form of the name of the corresponding record property."
},
"paragraphs": []
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode."
}
]
}
@@ -22,23 +22,13 @@
},
{
"style": "Title",
"text": "Configuring Data Mine"
"text": "Data Mine Configuration",
"updated": 1609789108763
},
{
"style": "Text",
"text": "Select Configure Data Mine on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": "\"codeName\": \"Supermine\""
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609789116514
},
{
"style": "List",
@@ -18,123 +18,13 @@
},
{
"style": "Title",
"text": "Configuring Dataset Definition"
"text": "Dataset Definition Configuration",
"updated": 1609788319432
},
{
"style": "Text",
"text": "Select Configure Definition on the menu to access the configuration."
},
{
"style": "Text",
"text": "Multi-Period-Market:"
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"codeName\": \"Multi-Period-Market\","
},
{
"style": "Text",
"text": " \"type\": \"Market Files\","
},
{
"style": "Text",
"text": " \"validTimeFrames\": [ \"24-hs\", \"12-hs\", \"08-hs\", \"06-hs\", \"04-hs\", \"03-hs\", \"02-hs\", \"01-hs\" ],"
},
{
"style": "Text",
"text": " \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period\","
},
{
"style": "Text",
"text": " \"fileName\": \"Data.json\","
},
{
"style": "Text",
"text": " \"timeFrames\": {"
},
{
"style": "Text",
"text": " \"filePath\": \"\","
},
{
"style": "Text",
"text": " \"fileName\": \"\""
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": "}"
},
{
"style": "Text",
"text": "Multi-Period-Daily:"
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"codeName\": \"Multi-Period-Daily\","
},
{
"style": "Text",
"text": " \"type\": \"Daily Files\","
},
{
"style": "Text",
"text": " \"validTimeFrames\": [ \"45-min\", \"40-min\", \"30-min\", \"20-min\", \"15-min\", \"10-min\", \"05-min\", \"04-min\", \"03-min\", \"02-min\", \"01-min\" ],"
},
{
"style": "Text",
"text": " \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset/@Period/@Year/@Month/@Day\","
},
{
"style": "Text",
"text": " \"fileName\": \"Data.json\","
},
{
"style": "Text",
"text": " \"dataRange\": {"
},
{
"style": "Text",
"text": " \"filePath\": \"@Exchange/@BaseAsset-@QuotedAsset/@DataMine/@Bot/Output/@Product/@Dataset\","
},
{
"style": "Text",
"text": " \"fileName\": \"Data.Range.json\""
},
{
"style": "Text",
"text": " },"
},
{
"style": "Text",
"text": " \"timeFrames\": {"
},
{
"style": "Text",
"text": " \"filePath\": \"\","
},
{
"style": "Text",
"text": " \"fileName\": \"\""
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609788325479
},
{
"style": "List",
@@ -142,7 +32,8 @@
},
{
"style": "List",
"text": "type refers to the type of dataset; possible values are Market Files and Daily Files."
"text": "type refers to the type of dataset; possible values are market files and daily files.",
"updated": 1609788409763
},
{
"style": "List",
@@ -11,14 +11,6 @@
{
"style": "Text",
"text": "The execution finished event is responsible for triggering the execution of every process that depends on the data a bot produces. If bot Alice depends on bot Bob, Alice listens to the execution finished event of Bob so that it may start a new execution cycle as soon as Bob finishes its cycle. Alice listens to Bob's execution finished event by establishing a reference from its execution started event."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/indicators-process-execution-started-finished-events-01.gif"
},
{
"style": "Text",
"text": "The image above shows a reference established from the execution started event of a process to the execution finished event of another process."
}
]
}
@@ -22,23 +22,13 @@
},
{
"style": "Title",
"text": "Configuring Indicator Bot"
"text": "Indicator Bot Configuration",
"updated": 1609789150912
},
{
"style": "Text",
"text": "Select Configure Bot on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": "\"codeName\": \"Superbot\""
},
{
"style": "Text",
"text": "}"
"text": "Properties",
"updated": 1609789156452
},
{
"style": "List",
@@ -1,3 +1,12 @@
{
"type": "Nodes Highlights"
"type": "Nodes Highlights",
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode."
}
],
"definition": {
"text": "Right click to edit this text and replace it with a definition / summary for this page. ESC to exit edit mode."
}
}
@@ -16,14 +16,6 @@
"style": "Text",
"text": "An example of other entities that may be listening to such events is that of plotters. Plotters read datasets and create graphical representations of this data over the charts. Charts are constantly updating the information in the form of candles and indicators in realtime, synchronized with the data being extracted from the exchange by the sensor bot. That kind of automatism is possible thanks to the events that processes trigger every time an execution cycle is finished, signaling to everyone listening that new data is available on each of the impacted datasets."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/indicators-process-output-01.gif"
},
{
"style": "Text",
"text": "The image above shows the typical references from output datasets to datasets definitions."
},
{
"style": "Note",
"text": "An output dataset must reference a dataset definition."
@@ -18,52 +18,18 @@
},
{
"style": "Title",
"text": "Configuring Panel Data"
"text": "Panel Data Configuration",
"updated": 1609860920089
},
{
"style": "Text",
"text": "Select Configure Panel Data on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"valueDecimals\": 2"
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609860933462
},
{
"style": "List",
"text": "valueDecimals sets the number of decimals to be shown on the corresponding data field."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"labelText\": \"The Label\","
},
{
"style": "Text",
"text": " \"labelPosition\": 15,"
},
{
"style": "Text",
"text": " \"valuePosition\": 20,"
},
{
"style": "Text",
"text": " \"valueDecimals\": 2"
},
{
"style": "Text",
"text": "}"
},
{
"style": "List",
"text": "labelPosition and valuePosition represent the vertical distance of the corresponding fields to the top margin of the panel."
@@ -12,49 +12,24 @@
"style": "Text",
"text": "A single plotter may have several modules. Different modules may be used to plot each product of the bot, or as best suits the expected use-pattern."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/plotter-module-01.gif"
},
{
"style": "Important",
"text": "For a bot to use a plotter, the corresponding product definition must establish a reference with the plotter module built to interpret the dataset."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/plotter-module-02-product-link.gif"
"text": "For a bot to use a plotter, the corresponding Product Definition must establish a reference with the plotter module built to interpret the dataset.",
"updated": 1609790272500
},
{
"style": "Block",
"text": "Configuring"
"text": "Configuring",
"updated": 1609790308422
},
{
"style": "Title",
"text": "Configuring Plotter Module"
"text": "Plotter Module Configuration"
},
{
"style": "Text",
"text": "Select Configure Plotter Module on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"codeName\": \"Module Name\","
},
{
"style": "Text",
"text": " \"isLegacy\": true,"
},
{
"style": "Text",
"text": " \"icon\": \"histogram\""
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609790324389
},
{
"style": "List",
@@ -65,36 +40,14 @@
"text": "isLegacy is true for plotters modules developed entirely in JavaScript, and is false or doesn't show in the configuration for plotters built with the tools featured in the data mine hierarchy."
},
{
"style": "Text",
"text": "| Value | Image|"
"style": "List",
"text": "icon is the name of the image that illustrates the corresponding layer in the Layers Panel. In case the icon is not specified, the default idon is used. Possible values are...",
"updated": 1609852182210
},
{
"style": "Text",
"text": "| :---: | :---: |"
},
{
"style": "Png",
"text": "| default | PNGs/Superalgos/Docs/inner-foder/default-banner.png |"
},
{
"style": "Png",
"text": "| histogram | PNGs/Superalgos/Docs/inner-foder/histogram-banner.png |"
},
{
"style": "Png",
"text": "| band | PNGs/Superalgos/Docs/inner-foder/bands-banner.png |"
},
{
"style": "Png",
"text": "| moving-average | PNGs/Superalgos/Docs/inner-foder/moving-average-banner.png |"
},
{
"style": "Png",
"text": "| oscillator | PNGs/Superalgos/Docs/inner-foder/oscillator-banner.png |"
},
{
"style": "Png",
"text": "| trend | PNGs/Superalgos/Docs/inner-foder/trends-banner.png |"
"style": "Javascript",
"text": "layer-moving-averages\nlayer-bands\nlayer-candles\nlayer-histogram\nlayer-oscilator\nlayer-resistance\nlayer-support\nlayer-trends\nlayer-volume",
"updated": 1609852285167
},
{
"style": "Text",
@@ -102,15 +55,18 @@
},
{
"style": "Text",
"text": "1. name the image in the following format: image-name.png;"
"text": "1. Name the image in the following format: image-name.png;",
"updated": 1609852305205
},
{
"style": "Text",
"text": "1. place images in the WebServer\\Images\\Icons folder;"
"text": "2. Place images in the WebServer\\Images\\Icons folder;",
"updated": 1609852315978
},
{
"style": "Text",
"text": "1. in the configuration of the module, use the name as is (e.g.: \"icon\": \"image-name\")"
"text": "3. In the configuration of the module, use the name as is (e.g.: \"icon\": \"image-name\")",
"updated": 1609852322876
}
]
}
@@ -34,23 +34,13 @@
},
{
"style": "Title",
"text": "Configuring Plotter"
"text": "Plotter Configuration",
"updated": 1609790186907
},
{
"style": "Text",
"text": "Select Configure Plotter on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"codeName\": \"Plotter-Name\""
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609790191953
},
{
"style": "List",
@@ -13,20 +13,18 @@
"text": "To represent some form of variation of the price or a price derivative over time, a typical point formula consists of the following two coordinates: x = datetime and y = rate."
},
{
"style": "Text",
"text": "For example:"
"style": "Title",
"text": "For example",
"updated": 1609852495437
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point SMA 20 Begin "
},
{
"style": "Text",
"text": "x = record.begin"
},
{
"style": "Text",
"text": "y = record.previous.sma20"
"style": "Javascript",
"text": "x = record.begin\ny = record.previous.sma20",
"updated": 1609852623919
},
{
"style": "Text",
@@ -41,16 +39,13 @@
"text": "To complete the line segment corresponding to a single period, the closing datetime of the period and the closing rate for the 20-periods SMA are required:"
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point SMA 20 End "
},
{
"style": "Text",
"text": "x = record.end"
},
{
"style": "Text",
"text": "y = record.sma20"
"style": "Javascript",
"text": "x = record.end\ny = record.sma20",
"updated": 1609852823376
},
{
"style": "Text",
@@ -65,80 +60,62 @@
"text": "Anyway, the points definition is just as straight forward, for example:"
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point RSI Begin "
},
{
"style": "Text",
"text": "x = record.begin"
"style": "Javascript",
"text": "x = record.begin\ny = record.previous.value",
"updated": 1609852852377
},
{
"style": "Text",
"text": "y = record.previous.value"
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point RSI End "
},
{
"style": "Text",
"text": "x = record.end"
},
{
"style": "Text",
"text": "y = record.value"
"style": "Javascript",
"text": "x = record.end\ny = record.value\n",
"updated": 1609853081776
},
{
"style": "Text",
"text": "Points do not necessarily need to refer to values on the dataset produced by the corresponding data product. For example, absolute values for the y-axis may be used to describe fixed graphical elements, for instance, a horizontal line, or a box."
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point Begin 20 "
},
{
"style": "Text",
"text": "x = record.begin"
"style": "Javascript",
"text": "x = record.begin\ny = 20",
"updated": 1609852867401
},
{
"style": "Text",
"text": "y = 20"
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point End 20 "
},
{
"style": "Text",
"text": "x = record.end"
"style": "Javascript",
"text": "x = record.end\ny = 20",
"updated": 1609852965567
},
{
"style": "Text",
"text": "y = 20"
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point Begin 30 "
},
{
"style": "Text",
"text": "x = record.begin"
"style": "Javascript",
"text": "x = record.begin\ny = 30\n",
"updated": 1609853018216
},
{
"style": "Text",
"text": "y = 30"
},
{
"style": "Text",
"style": "Subtitle",
"text": "Point End 30 "
},
{
"style": "Text",
"text": "x = record.end"
},
{
"style": "Text",
"text": "y = 30"
"style": "Javascript",
"text": "x = record.end\ny = 30\n",
"updated": 1609853034626
},
{
"style": "Text",
@@ -13,8 +13,9 @@
"text": "These coordinate points are used to define polygons. Values for [x,y]coordinates are entered with a point formula."
},
{
"style": "Text",
"text": "{% include tip.html content=\"Each point should be given a significant name so that it is easier to identify them at the time of establishing references with polygon vertices.\" %}"
"style": "Success",
"text": "Give points a significant name so that it is easier to identify them at the time of establishing references with polygon vertices.",
"updated": 1609852471920
}
]
}
@@ -18,15 +18,13 @@
},
{
"style": "Title",
"text": "Configuring Polygon Condition"
"text": "Polygon Condition Configuration",
"updated": 1609853769074
},
{
"style": "Text",
"text": "Select Edit Condition on the menu to access the configuration."
},
{
"style": "Text",
"text": "Polygon conditions work pretty much like conditions used on trading systems. The main difference is that the variables available are solely those provided by the bot product definition that reference the corresponding plotter module."
"text": "Polygon Conditions work pretty much like conditions used on trading systems. The main difference is that the variables available are solely those provided by the bot product definition that reference the corresponding plotter module.",
"updated": 1609853810664
}
]
}
@@ -12,10 +12,6 @@
"style": "Text",
"text": "Vertices are the main element defining polygons. Once created, each vertex must establish a reference to the corresponding point in the charts point."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/vertex-01-add-and-link.gif"
},
{
"style": "Text",
"text": "Drawing curves requires two vertices. Painting areas, such as the background of a chart, likely requires four vertices. Note that vertices are not capable of featuring a style. Instead, styles are applied to polygon borders and polygon bodies."
@@ -13,12 +13,9 @@
"text": "This is an example of a procedure loop code snippet, in particular, the code that initializes the array used in the calculation of the Popular SMAs product of the Simple Moving Average (SMA) indicator."
},
{
"style": "Text",
"text": "/ Initialization Code. /"
},
{
"style": "Text",
"text": "variable.last200 = []"
"style": "Javascript",
"text": "/ Initialization Code. /\nvariable.last200 = []",
"updated": 1609789338326
}
]
}
@@ -0,0 +1,19 @@
{
"type": "Procedure Javascript Code",
"definition": {
"text": "The Procedure JavaScript code node may hold any snippet of valid JavaScript.",
"updated": 1609789511058
},
"paragraphs": [
{
"style": "Text",
"text": "The system allows developers great flexibility as all valid JavaScript code is allowed.",
"updated": 1609789473533
},
{
"style": "Important",
"text": "Until a robust JavaScript editor is implemented on the UI, it is recommended to write code on an external editor and paste it in the UI code bubble to ensure consistency.",
"updated": 1609789526505
}
]
}
@@ -7,10 +7,6 @@
{
"style": "Block",
"text": "Content"
},
{
"style": "Note",
"text": "Please refer to the coding references page to learn how to code the indicator's logic."
}
]
}
@@ -30,83 +30,13 @@
},
{
"style": "Title",
"text": "Configuring Process Definition"
"text": "Process Definition Configuration",
"updated": 1609786986097
},
{
"style": "Text",
"text": "Select Configure Process on the menu to access the configuration."
},
{
"style": "Text",
"text": "Multi-Period-Market:"
},
{
"style": "Text",
"text": " {"
},
{
"style": "Text",
"text": " \"codeName\": \"Multi-Period-Market\","
},
{
"style": "Text",
"text": " \"normalWaitTime\": 0,"
},
{
"style": "Text",
"text": " \"retryWaitTime\": 10000,"
},
{
"style": "Text",
"text": " \"framework\": {"
},
{
"style": "Text",
"text": " \"name\": \"Multi-Period-Market\""
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": "Multi-Period-Daily:"
},
{
"style": "Text",
"text": " {"
},
{
"style": "Text",
"text": " \"codeName\": \"Multi-Period-Daily\","
},
{
"style": "Text",
"text": " \"normalWaitTime\": 0,"
},
{
"style": "Text",
"text": " \"retryWaitTime\": 10000,"
},
{
"style": "Text",
"text": " \"framework\": {"
},
{
"style": "Text",
"text": " \"name\": \"Multi-Period-Daily\""
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": " }"
"style": "Subtitle",
"text": "Properties",
"updated": 1609787034890
},
{
"style": "List",
@@ -3,5 +3,10 @@
"definition": {
"text": "The process output groups the definitions of which datasets are impacted by the process, that is, which datasets the process builds or takes a part in building."
},
"paragraphs": []
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode."
}
]
}
@@ -22,31 +22,13 @@
},
{
"style": "Title",
"text": "Configuring Product Definition"
"text": "Product Definition Configuration",
"updated": 1609788267834
},
{
"style": "Text",
"text": "Select Configure Product on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"codeName\": \"Product-Name\","
},
{
"style": "Text",
"text": " \"singularVariableName\": \"productName\","
},
{
"style": "Text",
"text": " \"pluralVariableName\": \"productNames\""
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609788279998
},
{
"style": "List",
@@ -12,10 +12,6 @@
"style": "Text",
"text": "Bots store data in the form of arrays of records, in a minimized plain text file and the standard JSON format, although not as objects with named properties, but as arrays."
},
{
"style": "Text",
"text": "{% include image-ext.html file='https://user-images.githubusercontent.com/13994516/68998023-303eae00-08ad-11ea-9baa-ddea801c7d6d.png' url='yes' max-width='100' caption='Typical dataset file showing records as arrays.' %}"
},
{
"style": "Text",
"text": "The choice of plain text for storage of large volumes of information has benefits in terms of not requiring any sophisticated technology to store and serve the data (i.e.: no database is required)."
@@ -0,0 +1,28 @@
{
"type": "Record Formula",
"definition": {
"text": "In the context of a record definition, formulas are used to assign a value to the property, usually in the form of a variable declared in the calculation or data building procedures.",
"updated": 1609788711861
},
"paragraphs": [
{
"style": "Text",
"text": "Formulas may use both the record and the variable objects made available by the calculations procedure and the data building procedure (see procedure loop).",
"updated": 1609788725463
},
{
"style": "Text",
"text": "A formula may act in slightly different ways depending on the isCaculated attribute in the record property configuration:"
},
{
"style": "List",
"text": "When a property is calculated, the formula assigns to the property a value that is calculated in the Calculations Procedure. Even if the property is not stored in the dataset, it is made available as a calculated property to other bots that may have the dataset as input.",
"updated": 1609788822393
},
{
"style": "List",
"text": "When a property is not calculated or the attribute is not defined in the configuration, the formula is applied in the Data Building Procedure.",
"updated": 1609788849508
}
]
}
@@ -17,8 +17,9 @@
"text": "The order in which record properties are defined around the parent record definition node is the order in which they are stored in the actual record."
},
{
"style": "Text",
"text": "{% include tip.html content=\"The first two records are usually the begin and end records, featuring the corresponding datetimes that indicate when the record starts and ends.\" %}"
"style": "Success",
"text": "The first two records are usually the begin and end records, featuring the corresponding datetimes that indicate when the record starts and ends.",
"updated": 1609788556871
},
{
"style": "Block",
@@ -26,47 +27,25 @@
},
{
"style": "Title",
"text": "Configuring Record Property"
"text": "Record Property Configuration",
"updated": 1609788569963
},
{
"style": "Text",
"text": "Select Configure Property on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"codeName\": \"record-name\","
},
{
"style": "Text",
"text": " \"isString\": false,"
},
{
"style": "Text",
"text": " \"isCalculated\": true"
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609788577195
},
{
"style": "List",
"text": "codeName is the name of the record as it is used in the bot's code."
},
{
"style": "Text",
"style": "List",
"text": "isString determines if the field is a text string or if, in turn, is a numeric field. Dates are stored in the epoch format, which is numeric. The reason why this configuration is important is that fields that are strings need to be stored between “double quotes”."
},
{
"style": "List",
"text": " isCalculated determines if the field is stored in the dataset or if, instead, is calculated at a later stage. A value true* means that the record is not stored. In the case isCaculated is not defined in the configuration, it is assumed to be false."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/indicators-record-definitions-01.gif"
},
{
"style": "Text",
"text": "The image above shows a record definition with four record properties."
}
]
}
@@ -1,3 +1,12 @@
{
"type": "Record Values"
"type": "Record Values",
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode."
}
],
"definition": {
"text": "Right click to edit this text and replace it with a definition / summary for this page. ESC to exit edit mode."
}
}
@@ -18,27 +18,13 @@
},
{
"style": "Title",
"text": "Configuring Sensor Bot"
"text": "Sensor Bot Configuration",
"updated": 1609790137912
},
{
"style": "Text",
"text": "Select Configure Bot on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": "\"codeName\": \"Super\","
},
{
"style": "Text",
"text": "\"repo\": \"Super-Sensor-Bot\""
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609790143486
},
{
"style": "List",
@@ -12,10 +12,6 @@
"style": "Text",
"text": "A plotter recursively renders graphics for each period or candle. This means that a definition of what shapes need to be drawn for a single period is required. The plotter does the same thing for every period or candle that is visible on the screen at any point in time, for any time frame, as long as the corresponding data is available."
},
{
"style": "Gif",
"text": "GIFs/Superalgos/Docs/inner-foder/shapes-01-show-off.gif"
},
{
"style": "Text",
"text": "In general terms, the process of defining what is going to be rendered on the screen consist of the following four steps:"
@@ -14,7 +14,8 @@
},
{
"style": "Text",
"text": "The status report referenced may belong to the same process— which is called a self-reference. In such a case, the process is learning what it did the last time it ran. Also, the status report referenced may belong to another process—another bot. In that case, the dependency may be of the Market Starting Point or Market Ending Point types."
"text": "The status report referenced may belong to the same process— which is called a self-reference. In such a case, the process is learning what it did the last time it ran. Also, the status report referenced may belong to another process—another bot. In that case, the dependency may be of the Market Starting Point or Market Ending Point types. ",
"updated": 1609787389239
},
{
"style": "List",
@@ -22,11 +23,13 @@
},
{
"style": "List",
"text": "Market Starting Point is a status dependency existing on Multi-Period-Daily processes so that the process establishing the reference learns the datetime of the start of the market. Usually, the reference is established with the sensor's Historic-OHLCVs process status report. Multi-Period-Market processes do not have this type of status dependency as the date of the start of the market is implied in their dataset (a single file with all market data)."
"text": "The market starting point is a status dependency existing on Multi-Period-Daily processes so that the process establishing the reference learns the datetime of the start of the market. Usually, the reference is established with the sensor's Historic-OHLCVs process status report. Multi-Period-Market processes do not have this type of status dependency as the date of the start of the market is implied in their dataset (a single file with all market data).",
"updated": 1609787724948
},
{
"style": "List",
"text": "Market Ending Point is a status dependency existing both in Multi-Period-Market and Multi-Period-Daily processes so that the process establishing the reference knows the datetime of the end of the market."
"text": "The market ending point is a status dependency existing both in Multi-Period-Market and Multi-Period-Daily processes so that the process establishing the reference knows the datetime of the end of the market.",
"updated": 1609787745299
},
{
"style": "Text",
@@ -38,27 +41,18 @@
},
{
"style": "Title",
"text": "Configuring Status Dependency"
"text": "Status Dependency Configuration",
"updated": 1609787775907
},
{
"style": "Text",
"text": "Select Configure Status Dependency on the menu to access the configuration."
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": "\"mainUtility\": \"Self Reference|Market Starting Point|Market Ending Point\""
},
{
"style": "Text",
"text": "}"
"style": "Subtitle",
"text": "Properties",
"updated": 1609787781306
},
{
"style": "List",
"text": "mainUtility determines the type of status dependency, with possible values being Self Reference, Market Starting Point, or Market Ending Point."
"text": "mainUtility determines the type of status dependency, with possible values being Self Reference, MMarket Starting Point, or MMarket Ending Point.",
"updated": 1609787859239
}
]
}
@@ -1,7 +1,8 @@
{
"type": "Status Report",
"definition": {
"text": "Status reports serve as temporal annotations that bots read every time they run to know what was done in the previous cycle and what the state of affairs is at present. Status reports are dynamic, and they change constantly, with updates after every cycle of the associated process."
"text": "\nA status report serves as a temporal annotation that bots read every time they run to know what was done in the previous cycle and what the state of affairs is at present. They are dynamic and change constantly, with updates after every cycle of the associated process.",
"updated": 1609788111201
},
"paragraphs": [
{
@@ -30,11 +30,8 @@
},
{
"style": "Title",
"text": "Configuring Style Condition"
},
{
"style": "Text",
"text": "Select Edit Condition on the menu to access the configuration."
"text": "Style Condition Configuration",
"updated": 1609860654525
},
{
"style": "Text",
@@ -45,7 +42,7 @@
"text": "To continue the example of the Percentage Bandwidth plotter, the following is the condition that determines the newly added styles:"
},
{
"style": "Text",
"style": "Javascript",
"text": "record.previous.movingAverage > record.movingAverage"
},
{
@@ -57,28 +54,9 @@
"text": "The definition of secondary styles is slightly different from that of the default style, as—in such cases—the atMousePosition property may no longer be defined:"
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"opacity\": 0.55,"
},
{
"style": "Text",
"text": " \"lineWidth\": 1,"
},
{
"style": "Text",
"text": " \"lineDash\": [0,0],"
},
{
"style": "Text",
"text": " \"paletteColor\": \"UI_COLOR.RED\""
},
{
"style": "Text",
"text": "}"
"style": "Json",
"text": "{\n \"opacity\": 0.55,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RED\"\n}",
"updated": 1609860800267
}
]
}
+19 -160
View File
@@ -22,115 +22,31 @@
},
{
"style": "Title",
"text": "Configuring Style"
"text": "Style Configuration",
"updated": 1609854042226
},
{
"style": "Text",
"text": "Select Configure Style on the menu to access the configuration."
"style": "Subtitle",
"text": "Properties",
"updated": 1609854059581
},
{
"style": "Text",
"text": "A typical definition for a polygon body style looks like this:"
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"default\": {"
},
{
"style": "Text",
"text": " \"opacity\": 0.2,"
},
{
"style": "Text",
"text": " \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\""
},
{
"style": "Text",
"text": " },"
},
{
"style": "Text",
"text": " \"atMousePosition\": {"
},
{
"style": "Text",
"text": " \"opacity\": 0.3,"
},
{
"style": "Text",
"text": " \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\""
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": "}"
"style": "Json",
"text": "{\n \"default\": {\n \"opacity\": 0.2,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n }\n}",
"updated": 1609854100248
},
{
"style": "Text",
"text": "A typical definition for a polygon border style has a couple more properties:"
},
{
"style": "Text",
"text": "{"
},
{
"style": "Text",
"text": " \"default\": {"
},
{
"style": "Text",
"text": " \"opacity\": 0.2,"
},
{
"style": "Text",
"text": " \"lineWidth\": 1,"
},
{
"style": "Text",
"text": " \"lineDash\": [0,0],"
},
{
"style": "Text",
"text": " \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\""
},
{
"style": "Text",
"text": " },"
},
{
"style": "Text",
"text": " \"atMousePosition\": {"
},
{
"style": "Text",
"text": " \"opacity\": 0.3,"
},
{
"style": "Text",
"text": " \"lineWidth\": 2,"
},
{
"style": "Text",
"text": " \"lineDash\": [0,0],"
},
{
"style": "Text",
"text": " \"paletteColor\": \"UI_COLOR.RUSTED_RED\""
},
{
"style": "Text",
"text": " }"
},
{
"style": "Text",
"text": "}"
"style": "Json",
"text": "{\n \"default\": {\n \"opacity\": 0.2,\n \"lineWidth\": 1,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.DARK_TURQUOISE\"\n },\n \"atMousePosition\": {\n \"opacity\": 0.3,\n \"lineWidth\": 2,\n \"lineDash\": [0,0],\n \"paletteColor\": \"UI_COLOR.RUSTED_RED\"\n }\n}",
"updated": 1609854144329
},
{
"style": "Text",
@@ -142,75 +58,18 @@
},
{
"style": "List",
"text": "opacity is probably self-explanatory: it may range from 0 for a fully transparent object to 1 for a solid object."
"text": "opacity is probably self-explanatory. It may range from 0 for a fully transparent object to 1 for a solid object.",
"updated": 1609854205298
},
{
"style": "Text",
"text": "| Variable Value | RGB Value | Color Sample |"
"style": "List",
"text": "paletteColor sets the color for the fill or stroke in cases of polygon bodies and polygon borders respectively. Use the variable UI_COLOR followed by a dot and any of the properties in the following list for a selection of currently available colors.",
"updated": 1609854289128
},
{
"style": "Text",
"text": "| :--- | :---: | :------------------- |"
},
{
"style": "Text",
"text": "| DARK | 48, 48, 54 | RGB(48, 48, 54) |"
},
{
"style": "Text",
"text": "| LIGHT | 234, 226, 222 | RGB(234, 226, 222); border: 1px black |"
},
{
"style": "Text",
"text": "| GREY | 150, 150, 150 | RGB(150, 150, 150) |"
},
{
"style": "Text",
"text": "| LIGHT_GREY | 247, 247, 247 | RGB(247, 247, 247) |"
},
{
"style": "Text",
"text": "| WHITE | 255, 255, 255 | RGB(255, 255, 255) |"
},
{
"style": "Text",
"text": "| BLACK | 0, 0, 0 | RGB(0, 0, 0) |"
},
{
"style": "Text",
"text": "| GOLDEN_ORANGE | 240, 162, 2 | RGB(240, 162, 2) |"
},
{
"style": "Text",
"text": "| RUSTED_RED | 204, 88, 53 | RGB(204, 88, 53) |"
},
{
"style": "Text",
"text": "| GREEN | 188, 214, 67 | RGB(188, 214, 67) |"
},
{
"style": "Text",
"text": "| RED | 223, 70, 60 | RGB(223, 70, 60) |"
},
{
"style": "Text",
"text": "| PATINATED_TURQUOISE | 27, 153, 139 | RGB(27, 153, 139) |"
},
{
"style": "Text",
"text": "| TITANIUM_YELLOW | 244, 228, 9 | RGB(244, 228, 9) |"
},
{
"style": "Text",
"text": "| MANGANESE_PURPLE | 91,80, 122 | RGB(91,80, 122) |"
},
{
"style": "Text",
"text": "| TURQUOISE | 74, 207, 217 | RGB(74, 207, 217) |"
},
{
"style": "Text",
"text": "| DARK_TURQUOISE | 2, 149, 170 | RGB(2, 149, 170) |"
"style": "Table",
"text": "| Variable Value | RGB Value | Color Sample |\n| DARK | 48, 48, 54 | RGB(48, 48, 54) |\n| LIGHT | 234, 226, 222 | RGB(234, 226, 222) |\n| GREY | 150, 150, 150 | RGB(150, 150, 150) |\n| LIGHT_GREY | 247, 247, 247 | RGB(247, 247, 247) |\n| WHITE | 255, 255, 255 | RGB(255, 255, 255) |\n| BLACK | 0, 0, 0 | RGB(0, 0, 0) |\n| GOLDEN_ORANGE | 240, 162, 2 | RGB(240, 162, 2) |\n| RUSTED_RED | 204, 88, 53 | RGB(204, 88, 53) |\n| GREEN | 188, 214, 67 | RGB(188, 214, 67) |\n| RED | 223, 70, 60 | RGB(223, 70, 60) |\n| PATINATED_TURQUOISE | 27, 153, 139 | RGB(27, 153, 139) |\n| TITANIUM_YELLOW | 244, 228, 9 | RGB(244, 228, 9) |\n| MANGANESE_PURPLE | 91,80, 122 | RGB(91,80, 122) |\n| TURQUOISE | 74, 207, 217 | RGB(74, 207, 217) |\n| DARK_TURQUOISE | 2, 149, 170 | RGB(2, 149, 170) |",
"updated": 1609854356242
},
{
"style": "List",
@@ -1,7 +1,8 @@
{
"type": "Trading Bot",
"definition": {
"text": "A trading bot is a computer program that—based on datasets exposed as products by other bots (counting sensors, indicators and even other trading bots)—applies the trading logic defined on a trading system to, on one side, generate a complete trading simulation (outputting datasets that include trades, the action of strategies, validation of conditions, etc.), and on the other side, manage the execution of orders when on a forward testing or live trading session."
"text": "A trading bot is a computer program that—based on datasets exposed as products by other bots (counting sensors, indicators and even other trading bots)—applies the trading logic defined on a Trading System to, on one side, generate a complete trading simulation (outputting datasets that include trades, the action of strategies, validation of conditions, etc.), and on the other side, manage the execution of orders when on a forward testing or live trading session.",
"updated": 1609861419818
},
"paragraphs": [
{
@@ -30,11 +31,8 @@
},
{
"style": "Title",
"text": "Configuring Trading Bot"
},
{
"style": "Text",
"text": "Select Configure on the menu to access the configuration."
"text": "Trading Bot Configuration",
"updated": 1609861438022
}
]
}
@@ -14,7 +14,8 @@
},
{
"style": "Text",
"text": "Notice that, in the context of Superalgos, a trading bot has nothing to do with the trading logic. Think of trading logic as the business rules which—in Superalgos—are defined in trading systems. Anyone may build trading systems, meaning that creating a trading system and the trading strategies within does not require coding."
"text": "Notice that, in the context of Superalgos, a trading bot has nothing to do with the trading logic. Think of trading logic as the business rules which—in Superalgos—are defined in trading systems. Anyone may build a Trading System, meaning that creating trading systems and the trading strategies within does not require coding.",
"updated": 1609861342619
},
{
"style": "Text",
@@ -26,11 +27,8 @@
},
{
"style": "Title",
"text": "Configuring Trading Mine"
},
{
"style": "Text",
"text": "Select Configure on the menu to access the configuration."
"text": "Trading Mine Configuration",
"updated": 1609861240385
}
]
}
@@ -27,6 +27,10 @@
{
"style": "Note",
"text": "The information that is out of focus, that is, out of the viewport, is not read nor rendered graphically, thus, does not consume resources."
},
{
"style": "Title",
"text": "Viewport Configuration"
}
]
}
@@ -1,16 +0,0 @@
{
"topic": "App Commands Errors",
"pageNumber": "1",
"type": "App Error Contribution Not Sent",
"definition": {
"text": "There was a problmen trying to send your contribution to your fork of the Superalgos repository.",
"updated": 1609859551082
},
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. 2",
"updated": 1609860582103
}
]
}
@@ -1,70 +0,0 @@
{
"topic": "App Commands Errors",
"pageNumber": "2",
"type": "App Error Github Credentials Missing",
"definition": {
"text": "In order to manage contributions from within the app, you first need to provide your Github.com credentials so that we can get authenticated when pushing your changes to the remote repository.",
"updated": 1609855182001
},
"paragraphs": [
{
"style": "Anchor",
"text": "Anchor Github Credentials Missing",
"updated": 1609855373585
},
{
"style": "Error",
"text": "Github Crendentials are Missing. Please solve this issue and try again."
},
{
"style": "Text",
"text": "At the root folder of Superalgos, you will need to create a JSON file called Github.json. Use simple text editor like notepad and configure there your Github credentials. You can copy and paste the following template, replacing the dummy strings with your actual user name and password.",
"updated": 1609856366366
},
{
"style": "Title",
"text": "Github File Template",
"updated": 1609856386094
},
{
"style": "Javascript",
"text": "{\n \"user\": \"Your Github.com Username\",\n \"password\": \"Your Github.com Password\"\n \"repository\": \"\"\n }",
"updated": 1609857106444
},
{
"style": "Title",
"text": "Properties",
"updated": 1609857199167
},
{
"style": "List",
"text": "user: Your Github.com Username."
},
{
"style": "List",
"text": "parrword: Your Github.com Password."
},
{
"style": "List",
"text": "repository: The URL of your Superalgos fork."
},
{
"style": "Title",
"text": "Example"
},
{
"style": "Javascript",
"text": "{\n \"user\": \"john-smith\",\n \"password\": \"john123$\"\n \"repository\": \"github.com/john-smith/Superalgos\"\n }",
"updated": 1609857447825
},
{
"style": "Note",
"text": "Don't worry, your crendentials will not be uploaded to the repository because the file Github.json is listed at the .gitignore file, so it will be ignored and will only be at your local computer."
},
{
"style": "Important",
"text": "The system will use your credentials only to execute a git push command pointing to your Superalgos repository fork, in order to upload all the changes you made to Docs Pages.",
"updated": 1609856824492
}
]
}
@@ -1,14 +0,0 @@
{
"topic": "App Commands Messages",
"pageNumber": "1",
"type": "App Message Contribution Succeed",
"definition": {
"text": "Write here a summary for this topic page."
},
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode."
}
]
}
@@ -1,16 +0,0 @@
{
"topic": "Docs Basics",
"pageNumber": "17",
"type": "Docs Search Engine",
"definition": {
"text": "The Docs contains a search engine that allows users to search through the collection of pages.\n",
"updated": 1609784533352
},
"paragraphs": [
{
"style": "Text",
"text": "The search engine builds a Docs Search Engine Index that is later used to find the phrases typed by users at the search box.",
"updated": 1609784587544
}
]
}
@@ -1,16 +0,0 @@
{
"topic": "Docs Basics",
"pageNumber": "18",
"type": "Docs Search Engine Index",
"definition": {
"text": "The Docs Search Engine builds an in-memory index that contains all the phrases of all Docs Pages, plus the name, type, config and code of all nodes of the current Workspace.",
"updated": 1609784383995
},
"paragraphs": [
{
"style": "Text",
"text": "This index is built when the UI is launched, and rebuilt when users executes the docs.reindex command or they load a new workspace.",
"updated": 1609784471513
}
]
}
@@ -1,7 +1,7 @@
{
"topic": "Docs Commands Messages",
"pageNumber": "1",
"type": "Docs Message Saving Succeed",
"type": "Docs Message Saving Succed",
"definition": {
"text": "The docs.save command you executed was successful and all changes have been saved at the Superalgos Client.",
"updated": 1609783244197
@@ -1,16 +0,0 @@
{
"topic": "Docs Commands Messages",
"pageNumber": "2",
"type": "Docs Message Reindexing Succeed",
"definition": {
"text": "The docs.reindex command you executed succesfully rebuilt the Docs Search Engine Index.",
"updated": 1609783396612
},
"paragraphs": [
{
"style": "Success",
"text": "The index was rebuilt and now includes all the latest changes you have made since you open the UI or since the last time you executed the docs.reindex command. That means that new content created now should affect the search results. Also, changes in the Workspace have been applied to the index too.",
"updated": 1609783508213
}
]
}
@@ -1,16 +0,0 @@
{
"topic": "Docs Commands Messages",
"pageNumber": "3",
"type": "Docs Message Deleting Succeed",
"definition": {
"text": "The docs.delete command you executed successfuly delete the page you requested.",
"updated": 1609783558007
},
"paragraphs": [
{
"style": "Success",
"text": "The page was removed from the in-memory collection of pages, but it is still indexed at the Docs Search Engine Index, and it still exist on disk. To remove it from the index you need to execute docs.reindex and to remove it from disk, you need to execute docs.save. ",
"updated": 1609783652507
}
]
}