Merge pull request #2625 from Superalgos/develop
Develop into Plugins-Docs
This commit is contained in:
83 files changed
+4631
-457
No files matched your search
@@ -17,6 +17,7 @@ exports.newEnvironment = function () {
|
||||
DESKTOP_WEB_SOCKETS_INTERFACE_HOST: 'localhost',
|
||||
PLATFORM_HTTP_INTERFACE_PORT: 34248,
|
||||
DESKTOP_HTTP_INTERFACE_PORT: 33248,
|
||||
NETWORK_HTTP_INTERFACE_PORT: 31248,
|
||||
PATH_TO_DATA_STORAGE: path.join(basePath, './Platform/My-Data-Storage'),
|
||||
PATH_TO_PROJECTS: path.join(basePath, './Projects'),
|
||||
PATH_TO_LOG_FILES: path.join(basePath, './Platform/My-Log-Files'),
|
||||
|
||||
@@ -6,6 +6,7 @@ exports.newNetworkNode = function newNetworkNode() {
|
||||
p2pNetworkPeers: undefined,
|
||||
p2pNetworkNode: undefined,
|
||||
webSocketsInterface: undefined,
|
||||
httpInterface: undefined,
|
||||
socialGraphService: undefined,
|
||||
storage: undefined,
|
||||
run: run
|
||||
@@ -65,6 +66,12 @@ exports.newNetworkNode = function newNetworkNode() {
|
||||
thisObject.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface()
|
||||
thisObject.webSocketsInterface.initialize()
|
||||
console.log('Network Node Web Sockets Interface ........................................... Listening at port ' + JSON.parse(NT.networkNode.p2pNetworkNode.node.config).webSocketsPort)
|
||||
/*
|
||||
Other Network Nodes and Client Apps will communicate with this Network Node via it's HTTP Interface.
|
||||
*/
|
||||
thisObject.httpInterface = NT.projects.network.modules.httpInterface.newNetworkModulesHttpInterface()
|
||||
thisObject.httpInterface.initialize()
|
||||
console.log('Network Node Http Interface .................................................. Listening at port ' + JSON.parse(NT.networkNode.p2pNetworkNode.node.config).webPort)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,6 +47,7 @@ exports.newNetworkRoot = function newNetworkRoot() {
|
||||
fs: require('fs'),
|
||||
path: require('path'),
|
||||
util: require('util'),
|
||||
http: require('http'),
|
||||
nodeFetch: require('node-fetch'),
|
||||
web3: require('web3'),
|
||||
ws: require('ws'),
|
||||
|
||||
@@ -79,7 +79,7 @@ exports.newGithubServer = function newGithubServer() {
|
||||
|
||||
const octokit = new Octokit({
|
||||
auth: token,
|
||||
userAgent: 'Superalgos Beta 12'
|
||||
userAgent: 'Superalgos v.1.0'
|
||||
})
|
||||
await getList()
|
||||
|
||||
@@ -207,7 +207,7 @@ exports.newGithubServer = function newGithubServer() {
|
||||
const { Octokit } = SA.nodeModules.octokit
|
||||
const octokit = new Octokit({
|
||||
auth: token,
|
||||
userAgent: 'Superalgos Beta 12'
|
||||
userAgent: 'Superalgos v.1.0'
|
||||
})
|
||||
await getPrList()
|
||||
await mergePrs()
|
||||
|
||||
@@ -79,6 +79,16 @@ exports.newHttpInterface = function newHttpInterface() {
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
|
||||
return
|
||||
}
|
||||
case 'getUserWalletBalance': {
|
||||
|
||||
let serverResponse = await PL.servers.WEB3_SERVER.getUserWalletBalance(
|
||||
params.walletAddress,
|
||||
params.contractAddress
|
||||
)
|
||||
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
|
||||
return
|
||||
}
|
||||
case 'getWalletBalances': {
|
||||
|
||||
let serverResponse = await PL.servers.WEB3_SERVER.getWalletBalances(
|
||||
@@ -762,7 +772,7 @@ exports.newHttpInterface = function newHttpInterface() {
|
||||
|
||||
const octokit = new Octokit({
|
||||
auth: token,
|
||||
userAgent: 'Superalgos Beta 12'
|
||||
userAgent: 'Superalgos v.1.0'
|
||||
})
|
||||
|
||||
const repo = 'Superalgos'
|
||||
@@ -1337,7 +1347,7 @@ exports.newHttpInterface = function newHttpInterface() {
|
||||
|
||||
const octokit = new Octokit({
|
||||
auth: token,
|
||||
userAgent: 'Superalgos Beta 12'
|
||||
userAgent: 'Superalgos v.1.0'
|
||||
})
|
||||
|
||||
const repo = 'Superalgos'
|
||||
@@ -1851,7 +1861,7 @@ exports.newHttpInterface = function newHttpInterface() {
|
||||
let folder = unescape(requestPath[3])
|
||||
let fileName = unescape(requestPath[4])
|
||||
|
||||
/*Beta 12 Refactoring Code: Remove this before releasing beta 12.*/
|
||||
/*v.1.0 Refactoring Code: Remove this before releasing v.1.0.*/
|
||||
if (fileName === 'Superalgos-CL.json') {
|
||||
fileName = 'Superalgos-PL.json'
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ exports.newWeb3Server = function newWeb3Server() {
|
||||
let thisObject = {
|
||||
getNetworkClientStatus: getNetworkClientStatus,
|
||||
createWalletAccount: createWalletAccount,
|
||||
getUserWalletBalance: getUserWalletBalance,
|
||||
getWalletBalances: getWalletBalances,
|
||||
signData: signData,
|
||||
hashData: hashData,
|
||||
@@ -82,6 +83,31 @@ exports.newWeb3Server = function newWeb3Server() {
|
||||
}
|
||||
}
|
||||
|
||||
async function getUserWalletBalance(walletAddress, contractAddress) {
|
||||
|
||||
const bscUri = 'https://bsc-dataseed.binance.org/'
|
||||
const web3 = new Web3(bscUri)
|
||||
|
||||
let balance
|
||||
|
||||
let ABI = [{ "constant": true, "inputs": [], "name": "name", "outputs": [{ "name": "", "type": "string" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_spender", "type": "address" }, { "name": "_value", "type": "uint256" }], "name": "approve", "outputs": [{ "name": "", "type": "bool" }], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [{ "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" }], "name": "transferFrom", "outputs": [{ "name": "", "type": "bool" }], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "decimals", "outputs": [{ "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "unpause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [{ "name": "account", "type": "address" }, { "name": "amount", "type": "uint256" }], "name": "mint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [{ "name": "_value", "type": "uint256" }], "name": "burn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "paused", "outputs": [{ "name": "", "type": "bool" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_spender", "type": "address" }, { "name": "_subtractedValue", "type": "uint256" }], "name": "decreaseApproval", "outputs": [{ "name": "success", "type": "bool" }], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [{ "name": "_owner", "type": "address" }], "name": "balanceOf", "outputs": [{ "name": "balance", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "listAddress", "type": "address" }, { "name": "isBlackListed", "type": "bool" }], "name": "blackListAddress", "outputs": [{ "name": "success", "type": "bool" }], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "pause", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [{ "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "symbol", "outputs": [{ "name": "", "type": "string" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" }], "name": "transfer", "outputs": [{ "name": "", "type": "bool" }], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [{ "name": "_spender", "type": "address" }, { "name": "_addedValue", "type": "uint256" }], "name": "increaseApproval", "outputs": [{ "name": "success", "type": "bool" }], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [{ "name": "_owner", "type": "address" }, { "name": "_spender", "type": "address" }], "name": "allowance", "outputs": [{ "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "name": "newOwner", "type": "address" }], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "name": "_name", "type": "string" }, { "name": "_symbol", "type": "string" }, { "name": "_decimals", "type": "uint256" }, { "name": "_supply", "type": "uint256" }, { "name": "tokenOwner", "type": "address" }], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "from", "type": "address" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" }], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "burner", "type": "address" }, { "indexed": false, "name": "value", "type": "uint256" }], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Pause", "type": "event" }, { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "previousOwner", "type": "address" }, { "indexed": true, "name": "newOwner", "tLine truncated
|
||||
|
||||
const contractInst = new web3.eth.Contract(ABI, contractAddress)
|
||||
|
||||
async function getBalance() {
|
||||
balance = await contractInst.methods.balanceOf(walletAddress).call().then(result => web3.utils.fromWei(result, 'ether'))
|
||||
return balance
|
||||
}
|
||||
|
||||
await getBalance()
|
||||
|
||||
return {
|
||||
walletAddress: walletAddress,
|
||||
balance: balance,
|
||||
result: 'Ok'
|
||||
}
|
||||
}
|
||||
|
||||
async function getWalletBalances(host, port, interface, walletDefinition) {
|
||||
let key = 'host (' + host + ') at port (' + port + ') via interface (' + interface + ')'
|
||||
|
||||
@@ -303,7 +329,7 @@ exports.newWeb3Server = function newWeb3Server() {
|
||||
|
||||
async function sendTokens(number, userProfile, fromAddress, toAddress, tokenAmount) {
|
||||
try {
|
||||
|
||||
|
||||
tokenAmount = Math.trunc(tokenAmount / 1000000000000000000)
|
||||
|
||||
console.log('')
|
||||
@@ -361,12 +387,12 @@ exports.newWeb3Server = function newWeb3Server() {
|
||||
|
||||
console.log('Transaction:', rawTransaction)
|
||||
let result
|
||||
|
||||
|
||||
result = await web3.eth.sendSignedTransaction('0x' + transaction.serialize().toString('hex'))
|
||||
.catch(err => {
|
||||
console.log('[ERROR] sendSignedTransaction -> err =' + JSON.stringify(err))
|
||||
})
|
||||
|
||||
|
||||
console.log('Result:', result)
|
||||
return result
|
||||
} catch (err) {
|
||||
|
||||
@@ -142,7 +142,7 @@ exports.newPlatformApp = function newPlatformApp() {
|
||||
console.log('Http Interface .............................................. Listening at port ' + global.env.PLATFORM_HTTP_INTERFACE_PORT)
|
||||
|
||||
console.log('')
|
||||
console.log("You are running Superalgos Beta 12")
|
||||
console.log("You are running Superalgos Platform v.1.0")
|
||||
console.log('')
|
||||
console.log("What's new? These are the main new features in this version:")
|
||||
console.log('')
|
||||
@@ -154,7 +154,7 @@ exports.newPlatformApp = function newPlatformApp() {
|
||||
console.log('Superalgos P2P Network ...................................... Will allow algo-traders to share trading signals with Superalgos users consuming these signals via a mobile app.')
|
||||
console.log('Real-time Trading Signals ................................... Will allow users to emit trading signals and be rewarded with SA Tokens.')
|
||||
console.log('Superalgos Mobile ........................................... Will allow users to consume trading signals for free and autonomously execute trades from their mobile phones.')
|
||||
console.log('Ethereum Integration ........................................ Will allow mining data from an Ethereum network node, and bring it into the Superalgos workflow. [Looking for an Ethereum dev that would like to continue this line of development.]')
|
||||
console.log('Portfolio Manager ........................................... Will allow a Portfolio Manager bot to supervize Trading Bots deciding where and when to increase or decrease their position sizes.]')
|
||||
|
||||
console.log('')
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ function newCanvas() {
|
||||
UI.projects.foundations.spaces.sideSpace.finalize()
|
||||
UI.projects.foundations.spaces.chartingSpace.finalize()
|
||||
UI.projects.foundations.spaces.floatingSpace.finalize()
|
||||
UI.projects.foundations.spaces.codeEditorSpace.finalize()
|
||||
thisObject.shorcutNumbers = undefined
|
||||
|
||||
if (browserCanvas.removeEventListener) {
|
||||
@@ -385,6 +386,11 @@ function newCanvas() {
|
||||
if (UI.projects.education !== undefined && UI.projects.education.spaces.docsSpace.isVisible === true) {
|
||||
return
|
||||
}
|
||||
/* When the Code Editor is Visible, we do not process key down events of the Designer Space. */
|
||||
if (UI.projects.foundations.spaces.codeEditorSpace.isVisible === true) {
|
||||
return
|
||||
}
|
||||
|
||||
thisObject.mouse.event = event
|
||||
thisObject.mouse.action = 'key down'
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.5 KiB |
@@ -140,7 +140,7 @@
|
||||
<div id="governance-reports-space-div" class="governance-page" style="position:fixed; top:100000px; left:100000px">
|
||||
<div id="governance-content-div"></div>
|
||||
</div>
|
||||
<div id="code-editor-space-div" class="governance-page" style="position:fixed; top:100000px; left:100000px">
|
||||
<div id="code-editor-space-div" class="docs-page" style="position:fixed; top:100000px; left:100000px">
|
||||
<div id="code-editor-content-div" class="code-editor-content-div">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
"language": "ES",
|
||||
"text": "La infraestructura de Superalgos integra diferentes proyectos. El objetivo principal de estas integraciones es automatizar las operaciones entre proyectos, extrayendo información valiosa del blockchain o el dominio particular de cada proyecto para ser utilizado en los sistemas de Trading.\n",
|
||||
"updated": 1624283023464
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Superalgos-Infrastruktur integriert verschiedene Projekte. Das Hauptziel dieser Integrationen ist es, projektübergreifende Operationen zu automatisieren und wertvolle Informationen aus Blockchains oder der jeweiligen Domäne eines jeden Projekts zu extrahieren, um sie in Trading Systems zu verwenden.",
|
||||
"updated": 1636669199719
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -15,7 +20,14 @@
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The first project is Superalgos itselft, witch provides a lowest level infraestructure that any other integrated project can freely reuse. On the pipeline we have these projects waiting to be integrated soon:",
|
||||
"updated": 1609144390540
|
||||
"updated": 1609144390540,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Das erste Projekt ist Superalgos selbst, das eine Infrastruktur der untersten Ebene bereitstellt, die jedes andere integrierte Projekt frei wiederverwenden kann. In der Pipeline haben wir diese Projekte, die darauf warten, bald integriert zu werden:",
|
||||
"updated": 1636669240132
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Table",
|
||||
@@ -24,7 +36,14 @@
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Once integrated, each project will provide even more infraestructure which can later be used by other projects to be integrated after that. For example, once Ethereum is fully integrated, it will enable DeFi projects to be integrated on top of it."
|
||||
"text": "Once integrated, each project will provide even more infraestructure which can later be used by other projects to be integrated after that. For example, once Ethereum is fully integrated, it will enable DeFi projects to be integrated on top of it.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sobald es integriert ist, wird jedes Projekt noch mehr Infrastruktur bereitstellen, die später von anderen Projekten genutzt werden kann, die danach integriert werden. Sobald beispielsweise Ethereum vollständig integriert ist, können darauf aufbauend DeFi-Projekte integriert werden.",
|
||||
"updated": 1636669265115
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
-4
@@ -11,10 +11,6 @@
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The system allows developers great flexibility as all valid JavaScript code is allowed."
|
||||
},
|
||||
{
|
||||
"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."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,11 @@
|
||||
"language": "ES",
|
||||
"text": "El manage stage se ocupa del establecimiento y la gestión de objetivos de stop loss y take profit, tanto para proteger su capital como para aumentar la eficiencia de su sistema de trading.",
|
||||
"updated": 1629580869439
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "In der \" manage stage\" geht es um das Setzen und Verwalten von Stop Loss und Take Profit Zielen, sowohl zum Schutz Ihres Kapitals als auch zur Steigerung der Effizienz Ihres trading systems.",
|
||||
"updated": 1636665519510
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -18,16 +23,37 @@
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "Optionality",
|
||||
"updated": 1615101510181
|
||||
"updated": 1615101510181,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Optionalität:",
|
||||
"updated": 1636665447488
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "This Stage is optional. That means that if you do not want to deal with Stop Loss or Take Profits at your strategy, you can just delete this node and everything will continue working just fine. If you do remove this node, what will happen at runtime is that as soon as the position is triggered, the system will detect that that the Manage Stage is undefined, and it will jump it by opening the Close Stage (if it exists, because it is also optional)"
|
||||
"text": "This Stage is optional. That means that if you do not want to deal with Stop Loss or Take Profits at your strategy, you can just delete this node and everything will continue working just fine. If you do remove this node, what will happen at runtime is that as soon as the position is triggered, the system will detect that that the Manage Stage is undefined, and it will jump it by opening the Close Stage (if it exists, because it is also optional)",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Diese \"Stage\" ist optional. Das bedeutet, dass Sie diese Node einfach löschen können, wenn Sie keine Stop-Loss- oder Take-Profits in Ihrer Strategie verwenden möchten, und alles wird weiterhin gut funktionieren. Wenn Sie diesen Knoten entfernen, wird das System zur runtime(Laufzeit), sobald die Position ausgelöst wird, feststellen, dass die Manage Stage undefiniert ist, und es wird sie überspringen, indem es zur Close Stage springt und sie öffnet (falls sie existiert, da sie ebenfalls optional ist).",
|
||||
"updated": 1636665947878
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "This is how optionality looks like at the code:",
|
||||
"updated": 1615101627343
|
||||
"updated": 1615101627343,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "So sieht die Optionalität im Code aus:",
|
||||
"updated": 1636666049375
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Javascript",
|
||||
@@ -37,51 +63,135 @@
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "If both the Manage Stage and the Close Stage are undefined, what will happen is that whenever the Open Stage gets closed, you will exit the position.",
|
||||
"updated": 1615103161873
|
||||
"updated": 1615103161873,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Wenn sowohl die Manage Stage als auch die Close Stage undefiniert sind, werden Sie die Position verlassen, sobald die Open Stage geschlossen wird.",
|
||||
"updated": 1636666084552
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "Manage Stage Concept"
|
||||
"text": "Manage Stage Concept",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Manage Stage Konzept:",
|
||||
"updated": 1636666115181
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The first and foremost rule of trading is to preserve capital and its main goal is to increase it."
|
||||
"text": "The first and foremost rule of trading is to preserve capital and its main goal is to increase it.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die erste und wichtigste Regel des Handels ist es, das Kapital zu erhalten, und sein Hauptziel ist es, es zu vermehren.",
|
||||
"updated": 1636666147357
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Conceptually, a position is not an instantaneous event, but an event which has an opening, a period of maturation, and a closing. The management of the position happens throughout the process."
|
||||
"text": "Conceptually, a position is not an instantaneous event, but an event which has an opening, a period of maturation, and a closing. The management of the position happens throughout the process.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Vom Konzept her ist eine Position kein sofortiges Ereignis, sondern ein Ereignis, das eine Eröffnung, eine Reifeperiode und eine Schließung hat. Die Verwaltung der Position erfolgt während dem Prozess.",
|
||||
"updated": 1636666274128
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The concept of managing the position refers to the fact that the formulas that determine the take profit and stop loss targets may change as the position develops. A typical situation in which you may want to change your original take profit and stop loss formulas is when the position seems to be developing well in your favor."
|
||||
"text": "The concept of managing the position refers to the fact that the formulas that determine the take profit and stop loss targets may change as the position develops. A typical situation in which you may want to change your original take profit and stop loss formulas is when the position seems to be developing well in your favor.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Das Konzept der Positionen-managements bezieht sich auf die Tatsache, dass sich die Formeln zur Bestimmung der Take-Profit- und Stop-Loss-Ziele im Laufe der Entwicklung der Position ändern können. Eine typische Situation, in der Sie Ihre ursprünglichen Take-Profit- und Stop-Loss-Formeln ändern möchten, ist, wenn sich die Position zu Ihren Gunsten entwickelt.",
|
||||
"updated": 1636666520021
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "It may be in your best interest to manage the stop loss, moving the target in the direction that would help protect unrealized profits. It may also be in your interest to move the take profit target to extract a larger profit than originally expected. Or you may wish to set up a mechanism that closes the trade as soon as a certain market situation materializes."
|
||||
"text": "It may be in your best interest to manage the stop loss, moving the target in the direction that would help protect unrealized profits. It may also be in your interest to move the take profit target to extract a larger profit than originally expected. Or you may wish to set up a mechanism that closes the trade as soon as a certain market situation materializes.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Es kann in Ihrem Interesse sein, den Stop-Loss zu steuern und das Ziel in die Richtung zu verschieben, die zum Schutz nicht realisierter Gewinne beiträgt. Es kann auch in Ihrem Interesse sein, das Take-Profit-Ziel zu verschieben, um einen größeren Gewinn als ursprünglich erwartet zu erzielen. Oder Sie möchten einen Mechanismus einrichten, der den trade schließt, sobald eine bestimmte Marktsituation eintritt.",
|
||||
"updated": 1636666733738
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The management of take profit and stop loss is done independently of each other, in phases. Therefore, each concept has its own set of management phases."
|
||||
"text": "The management of take profit and stop loss is done independently of each other, in phases. Therefore, each concept has its own set of management phases.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Verwaltung von Take-Profit und Stop-Loss erfolgt unabhängig voneinander, in Phasen. Daher hat jedes Konzept seine eigene Reihe von management phases (Verwaltungsphasen).",
|
||||
"updated": 1636666836988
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Each phase has its formula to describe the corresponding target. Users may define situations in which the current phase shall be abandoned and a different phase—with its formula—shall be implemented."
|
||||
"text": "Each phase has its formula to describe the corresponding target. Users may define situations in which the current phase shall be abandoned and a different phase—with its formula—shall be implemented.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Für jede Phase gibt es eine Formel, die das entsprechende Ziel beschreibt. Die Benutzer können Situationen definieren, in denen die aktuelle Phase aufgegeben und eine andere Phase - mit ihrer Formel - durchgeführt werden soll.",
|
||||
"updated": 1636666931674
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Keep in mind that the position is in constant development, so there may be as many phases as you deem appropriate for your particular strategy."
|
||||
"text": "Keep in mind that the position is in constant development, so there may be as many phases as you deem appropriate for your particular strategy.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Denken Sie daran, dass sich die Position ständig weiterentwickelt, so dass es so viele Phasen geben kann, wie Sie für Ihre spezielle Strategie für angemessen halten.",
|
||||
"updated": 1636667005964
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "The idea of managing targets in phases derives from the notion that big market moves tend to provide clues as to what may come up next. For instance, rallies may accelerate as more traders join the move. Recognizable patterns may emerge. Signs of exhaustion may be identified."
|
||||
"text": "The idea of managing targets in phases derives from the notion that big market moves tend to provide clues as to what may come up next. For instance, rallies may accelerate as more traders join the move. Recognizable patterns may emerge. Signs of exhaustion may be identified.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Idee, Ziele in Phasen zu verwalten, beruht auf der Vorstellung, dass große Marktbewegungen in der Regel Anhaltspunkte dafür liefern, was als Nächstes kommen könnte. So kann sich beispielsweise eine \"Rallye \"beschleunigen, wenn sich mehr trader (Händler) der Bewegung anschließen. Es können sich erkennbare Muster herausbilden. Anzeichen einer Erschöpfung können erkannt werden.",
|
||||
"updated": 1636667250488
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "All of these considerations may feed the dynamic analysis performed in each phase as the position develops."
|
||||
"text": "All of these considerations may feed the dynamic analysis performed in each phase as the position develops.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "All diese Überlegungen können in die dynamische Analyse einfließen, die in jeder Phase der Positionsentwicklung durchgeführt wird.",
|
||||
"updated": 1636667340670
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Upon execution, the system verifies if the current candle has tagged either of the targets. If—or when—it does, the close stage kicks in and closing execution begins."
|
||||
"text": "Upon execution, the system verifies if the current candle has tagged either of the targets. If—or when—it does, the close stage kicks in and closing execution begins.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Bei der Ausführung prüft das System, ob die aktuelle candle eines der Ziele markiert hat. Wenn dies der Fall ist, wird die close stage eingeleitet und die Ausführung der closing execution beginnt.",
|
||||
"updated": 1636667407532
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Callout",
|
||||
|
||||
+81
-10
@@ -1,7 +1,14 @@
|
||||
{
|
||||
"type": "Plotter Module",
|
||||
"definition": {
|
||||
"text": "A plotter module is a device within a plotter that contains the definitions to create the visualization for a product definition."
|
||||
"text": "A plotter module is a device within a plotter that contains the definitions to create the visualization for a product definition.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Ein \"plotter module\" ist ein Modul innerhalb eines Plotters, das die Definitionen zur Erstellung der Visualisierung für eine \"product definition\" enthält.",
|
||||
"updated": 1636659770379
|
||||
}
|
||||
]
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
@@ -10,12 +17,26 @@
|
||||
},
|
||||
{
|
||||
"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."
|
||||
"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.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Ein einzelner Plotter kann mehrere Module haben. Für jedes Produkt des Bots können verschiedene Module verwendet werden, je nachdem, wie es dem erwarteten Nutzungsmuster am besten entspricht.",
|
||||
"updated": 1636659901038
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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.",
|
||||
"updated": 1609790272500
|
||||
"updated": 1609790272500,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Damit ein Bot einen Plotter verwenden kann, muss die entsprechende Produktdefinition eine reference zu dem Plottermodul herstellen, das zur Interpretation des Datensatzes gebaut wurde.",
|
||||
"updated": 1636659964219
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Block",
|
||||
@@ -24,7 +45,14 @@
|
||||
},
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "Plotter Module Configuration"
|
||||
"text": "Plotter Module Configuration",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Konfiguration des Plottermoduls:",
|
||||
"updated": 1636659978962
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Subtitle",
|
||||
@@ -33,13 +61,28 @@
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"text": "codeName is the name used in the code to refer to the module."
|
||||
"text": "codeName is the name used in the code to refer to the module.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "codeName ist der Name, der im Code verwendet wird, um auf das Modul zu verweisen.",
|
||||
"updated": 1636660003241
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"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."
|
||||
"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.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "isLegacy ist wahr für Plotter-Module, die vollständig in JavaScript entwickelt wurden, und ist falsch oder wird in der Konfiguration nicht angezeigt für Plotter, die mit den in der Data-Mine-Hierarchie enthaltenen Tools erstellt wurden.",
|
||||
"updated": 1636660060029
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"style": "List",
|
||||
"text": "<code class=\"docs-code\">icon</code> 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": 1636672891580
|
||||
@@ -51,22 +94,50 @@
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Custom images may be added too. To do that:"
|
||||
"text": "Custom images may be added too. To do that:",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Es können auch eigene Bilder hinzugefügt werden. Um das zu tun:",
|
||||
"updated": 1636660314385
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "1. Name the image in the following format: image-name.png;",
|
||||
"updated": 1609852305205
|
||||
"updated": 1609852305205,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "1. Benennen Sie das Bild in folgendem Format: bild-name.png;",
|
||||
"updated": 1636660337014
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "2. Place images in the WebServer\\Images\\Icons folder;",
|
||||
"updated": 1609852315978
|
||||
"updated": 1609852315978,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "2. Legen Sie die Bilder in den Ordner WebServer\\Images\\Icons;",
|
||||
"updated": 1636660361650
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "3. In the configuration of the module, use the name as is (e.g.: \"icon\": \"image-name\")",
|
||||
"updated": 1609852322876
|
||||
"updated": 1609852322876,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "3. In der Konfiguration des Moduls ist der Name unverändert zu verwenden (z. B.: \"icon\": \"image-name\")",
|
||||
"updated": 1636660481504
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -7,6 +7,11 @@
|
||||
"language": "ES",
|
||||
"text": "Un polygon presenta definiciones que crean las formas y sus estilos.",
|
||||
"updated": 1624414392343
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Полигон содержит определения, из которых состоят фигуры и их стили.",
|
||||
"updated": 1636746899276
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
-5
@@ -9,11 +9,6 @@
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"review": "Superalgos Project Review",
|
||||
"pageNumber": 34,
|
||||
"type": "Superalgos Review - How to Run a Trading Bot",
|
||||
"definition": {
|
||||
"text": "Thus far I have learned alot about how the different crypto trading platforms work and how to get information from them. The tutorials are good for someone with at least some background in working with computer code. Overall I am excited to keep working through the tutorials. I hope to see even more exchanges on superalgos. Great work so far everyone and I hope I can contribute something to the project.",
|
||||
"updated": 1636063209051
|
||||
},
|
||||
"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."
|
||||
}
|
||||
]
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"review": "Superalgos Project Review",
|
||||
"pageNumber": 35,
|
||||
"type": "Superalgos Review - Great Way to Learn to Run a Trading Bot",
|
||||
"definition": {
|
||||
"text": "The tutorials are great and I am learning a lot about how to use Superalgos. The program is very indepth and will probably take me a few more days before I even try a live trade, but I am confident the information I need is available. Superalgos has great documentation and most things are easily available if you know how to find them. Can't wait to contribute.\n\nLiteir",
|
||||
"updated": 1636740066714
|
||||
},
|
||||
"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."
|
||||
}
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Videoserie über die Erstellung eines Indicators wurde für die Beta 5 Version des Systems produziert (inzwischen sind wir bei Beta 12); die Funktionalität funktioniert jedoch immer noch ähnlich. Allerdings kann es geringfügige Unterschiede geben, die noch zu dokumentieren sind. Schauen Sie in der Develop group vorbei und stellen Sie Ihre Fragen, insbesondere wenn etwas nicht wie erwartet oder wie in den Videos beschrieben funktioniert. Die Gruppe ist in der Fußzeile verlinkt.",
|
||||
"text": "Die Videoserie über die Erstellung eines Indicators wurde für die Beta 5 Version des Systems produziert (inzwischen sind wir bei v.1.0); die Funktionalität funktioniert jedoch immer noch ähnlich. Allerdings kann es geringfügige Unterschiede geben, die noch zu dokumentieren sind. Schauen Sie in der Develop group vorbei und stellen Sie Ihre Fragen, insbesondere wenn etwas nicht wie erwartet oder wie in den Videos beschrieben funktioniert. Die Gruppe ist in der Fußzeile verlinkt.",
|
||||
"updated": 1635522983953
|
||||
}
|
||||
]
|
||||
|
||||
+42
-6
@@ -11,6 +11,11 @@
|
||||
"text": "Si bien la documentación esta originalmente escrita en Inglés, el sistema permite a cualquier usuario buscar contenido en su idioma nativo, siempre y cuando otros usuarios hayan contribuído traducciones de los artículos existentes escritos en el idioma por defecto que es el idioma Inglés. Advertencia!!! Los documentos de Superalgos y de otros proyectos integrados están escritos originariamente en Inglés. El sistema permite a los usuarios buscar y navegar en páginas en toros idiomas también , siempre que algunos usuarios hayan contribuido con las correspondientes traduccciones. Por favor actualice esta traucción.",
|
||||
"updated": 1633180141328,
|
||||
"style": "Definition"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Zusammenfassung: Die Docs-Seiten von Superalgos und anderen integrierten Projekten sind ursprünglich in Englisch verfasst. Das System ermöglicht es den Nutzern, die Seiten auch in anderen Sprachen zu suchen und zu durchsuchen, sofern die Nutzer zuvor die entsprechenden Übersetzungen beigetragen haben.",
|
||||
"updated": 1636748741317
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -25,34 +30,65 @@
|
||||
"text": "Es importante notar que por mas que uno seleccione un idioma, el contenido se mostrará en ingles en cada sitio donde todavía no ha sido traducido. El sistema permite a cualquier usuario contribuir traducciones con una granularidad a nivel de párrafos. Esto significa que si una página cualquiera pudiera tener todos, algunos o nigún párrafo traducido. Esto solo depende de cuales hayan sido traducidos previamente por miembros de la comunidad.",
|
||||
"updated": 1609831884941,
|
||||
"style": "Text"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Englisch gilt als Standardsprache. Wenn Sie zu einer anderen Sprache wechseln, versucht das System, den Inhalt in der neuen Sprache anzuzeigen. Wenn die Übersetzung jedoch noch nicht verfügbar ist, wird stattdessen die englische Version angezeigt.",
|
||||
"updated": 1636748766355
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Node types, variable names, the title of pages in the Docs, and a few more elements of Superalgos may not be translated, as they are unique identifiers of the said elements. You will always get those in English."
|
||||
"text": "Node types, variable names, the title of pages in the Docs, and a few more elements of Superalgos may not be translated, as they are unique identifiers of the said elements. You will always get those in English.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Node types, variable names, der Titel von Seiten in den Docs und einige weitere Elemente von Superalgos werden nicht übersetzt, da sie eindeutige Bezeichner der genannten Elemente sind. Sie erhalten diese immer auf Englisch.",
|
||||
"updated": 1636748781667
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page."
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Wenn sie zu den Docs beitragen möchten, lesen sie die How to Contribute Translations Seite.",
|
||||
"updated": 1636748836601
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "Users can switch between languages using the links provided at the footer of every page at the Docs.",
|
||||
"updated": 1609831813025,
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"updated": 1636748942800,
|
||||
"translations": [
|
||||
{
|
||||
"language": "ES",
|
||||
"text": "Para cambiar de un idioma a otro se debe usar los links en el pie de cada página.",
|
||||
"updated": 1609831898619,
|
||||
"style": "Success"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Benutzer können über die Links in der Fußzeile jeder Seite in den Docs zwischen den Sprachen wechseln.",
|
||||
"updated": 1636748881372
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case spanish)",
|
||||
"updated": 1636749198522,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Dokumenten hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten.",
|
||||
"updated": 1636749982716
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+50
-7
@@ -4,30 +4,73 @@
|
||||
"type": "Docs In Russian",
|
||||
"definition": {
|
||||
"text": "The Docs pages of Superalgos and other projects integrated are originally written in English. The system allows users to search and browse pages in other languages as well, as long as users have previously contributed the corresponding translations.",
|
||||
"updated": 1613820592771
|
||||
"updated": 1613820592771,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Docs-Seiten von Superalgos und anderen integrierten Projekten sind ursprünglich in Englisch verfasst. Das System ermöglicht es den Nutzern, die Seiten auch in anderen Sprachen zu suchen und zu durchsuchen, sofern die Nutzer zuvor die entsprechenden Übersetzungen beigetragen haben.",
|
||||
"updated": 1636750003639
|
||||
}
|
||||
]
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "English is considered the default language. When you switch to a different language, the system attempts to show the content in the new language. However, if the translation is not yet available, it shows the English version instead.",
|
||||
"updated": 1613820612132
|
||||
"updated": 1613820612132,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Englisch gilt als Standardsprache. Wenn Sie zu einer anderen Sprache wechseln, versucht das System, den Inhalt in der neuen Sprache anzuzeigen. Wenn die Übersetzung jedoch noch nicht verfügbar ist, wird stattdessen die englische Version angezeigt.",
|
||||
"updated": 1636750015798
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Node types, variable names, the title of pages in the Docs, and a few more elements of Superalgos may not be translated, as they are unique identifiers of the said elements. You will always get those in English."
|
||||
"text": "Node types, variable names, the title of pages in the Docs, and a few more elements of Superalgos may not be translated, as they are unique identifiers of the said elements. You will always get those in English.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Node types, variable names, der Titel von Seiten in den Docs und einige weitere Elemente von Superalgos werden nicht übersetzt, da sie eindeutige Bezeichner der genannten Elemente sind. Sie erhalten diese immer auf Englisch.",
|
||||
"updated": 1636750023487
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page."
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Wenn Sie Übersetzungen beisteuern möchten, lesen Sie die Seite: How to Contribute Translations.",
|
||||
"updated": 1636750035891
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "To switch languages, click on the flags on the footer of the Docs."
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"updated": 1636749141265,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Docs.",
|
||||
"updated": 1636750056716
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case russian)",
|
||||
"updated": 1636749177741,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Docs hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten. ",
|
||||
"updated": 1636750092775
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+39
-4
@@ -11,6 +11,11 @@
|
||||
"text": "I Docs di Superalgos e degli altri progetti integrati sono scritti originariamente in inglese. Il sistema permette agli utenti di cercare e navigare tra le pagine anche in altri linguaggi, purché qualche collaboratore abbia precedentemente inserito le traduzioni corrispondenti.",
|
||||
"updated": 1614709804639,
|
||||
"style": "Definition"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Docs-Seiten von Superalgos und anderen integrierten Projekten sind ursprünglich in Englisch verfasst. Das System ermöglicht es den Nutzern, die Seiten auch in anderen Sprachen zu suchen und zu durchsuchen, sofern die Nutzer zuvor die entsprechenden Übersetzungen beigetragen haben.",
|
||||
"updated": 1636750109773
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -25,6 +30,11 @@
|
||||
"text": "L'inglese é considerata la lingua predefinita. Quando si seleziona un linguaggio differente, il sistema cerca di mostrare il contenuto nel linguaggio selezionato. Se la traduzione non é disponibile, allora verrà mostrata comunque la versione in lingua inglese.",
|
||||
"updated": 1614710023015,
|
||||
"style": "Text"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Englisch gilt als Standardsprache. Wenn Sie zu einer anderen Sprache wechseln, versucht das System, den Inhalt in der neuen Sprache anzuzeigen. Wenn die Übersetzung jedoch noch nicht verfügbar ist, wird stattdessen die englische Version angezeigt.",
|
||||
"updated": 1636750147739
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -37,6 +47,11 @@
|
||||
"text": "I tipi di nodo, i nomi di variabile, il titolo delle pagine dei Docs e alcuni altri elementi di Superalgos non vengono tradotti, in quanto sono identificatori unici di questi elementi all'interno del sistema. Verranno quindi sempre mostrati in inglese.",
|
||||
"updated": 1614710301759,
|
||||
"style": "Text"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Node types, variable names, der Titel von Seiten in den Docs und einige weitere Elemente von Superalgos werden nicht übersetzt, da sie eindeutige Bezeichner der genannten Elemente sind. Sie erhalten diese immer auf Englisch.",
|
||||
"updated": 1636750157611
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -49,6 +64,11 @@
|
||||
"text": "Se vuoi contribuire alle traduzioni, leggi la pagina How to Contribute Translations.",
|
||||
"updated": 1614710364389,
|
||||
"style": "Success"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Wenn Sie Übersetzungen beisteuern möchten, lesen Sie die Seite: How to Contribute Translations.",
|
||||
"updated": 1636750175388
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -62,32 +82,47 @@
|
||||
"text": "Il contenuto dei Docs può essere tradotto da chiunque desideri contribuire. Ciò aiuta gli utenti a leggere il contenuto dei Docs nella loro lingua madre. ",
|
||||
"updated": 1614710559720,
|
||||
"style": "Text"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Der Inhalt der Docs kann von jedem übersetzt werden, der bereit ist, etwas Zeit dafür aufzuwenden. Das hilft den Nutzern, die Inhalte der Docs in ihrer Muttersprache zu lesen.",
|
||||
"updated": 1636750252283
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "To switch languages, click on the flags on the footer of the Docs.",
|
||||
"updated": 1613820592771,
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"updated": 1636749218784,
|
||||
"translations": [
|
||||
{
|
||||
"language": "IT",
|
||||
"text": "Per cambiare la lingua, é sufficiente cliccare sulle bandiere che si trovano in fondo a ogni pagina dei Docs.",
|
||||
"updated": 1614710684503,
|
||||
"style": "Success"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Docs.",
|
||||
"updated": 1636750268351
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230,
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case italian)",
|
||||
"updated": 1636749237058,
|
||||
"translations": [
|
||||
{
|
||||
"language": "IT",
|
||||
"text": "É possible aggiungere o cancellare pagine dei Docs solamente quando la lingua di visualizzazione é in inglese.",
|
||||
"updated": 1614710793433,
|
||||
"style": "Note"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Docs hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten. ",
|
||||
"updated": 1636750280116
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+41
-4
@@ -11,6 +11,11 @@
|
||||
"text": "Halaman Docs dari Superalgos dan proyek lainnya, tertulis dengan bahasa Inggris. Adapun Sistem ini membantu anda untuk mencari dan menjelajah halaman dalam bahasa berbeda, selama anda sebelumnya telah berkontribusi dalam penerjemahan yang sesuai.",
|
||||
"updated": 1613857356680,
|
||||
"style": "Definition"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Docs-Seiten von Superalgos und anderen integrierten Projekten sind ursprünglich in Englisch verfasst. Das System ermöglicht es den Nutzern, die Seiten auch in anderen Sprachen zu suchen und zu durchsuchen, sofern die Nutzer zuvor die entsprechenden Übersetzungen beigetragen haben.",
|
||||
"updated": 1636750464649
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -25,6 +30,11 @@
|
||||
"text": "Bahasa Inggris dianggap sebagai bahasa default. Saat anda beralih ke bahasa lain, sistem mencoba menampilkan konten dalam bahasa baru. Namun, jika terjemahan belum tersedia, maka yang tampil hanya versi bahasa Inggris saja.",
|
||||
"updated": 1613857511193,
|
||||
"style": "Text"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Englisch gilt als Standardsprache. Wenn Sie zu einer anderen Sprache wechseln, versucht das System, den Inhalt in der neuen Sprache anzuzeigen. Wenn die Übersetzung jedoch noch nicht verfügbar ist, wird stattdessen die englische Version angezeigt.",
|
||||
"updated": 1636750474063
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -37,21 +47,48 @@
|
||||
"text": "Tipe Node, nama variable, judul halaman di Docs, dan beberapa elemen Superalgos lainnya tidak boleh diterjemahkan, karena merupakan bagian unik dari elemen Superalgos. Anda akan selalu membacanya dalam bahasa Inggris.",
|
||||
"updated": 1613857742821,
|
||||
"style": "Text"
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Node types, variable names, der Titel von Seiten in den Docs und einige weitere Elemente von Superalgos werden nicht übersetzt, da sie eindeutige Bezeichner der genannten Elemente sind. Sie erhalten diese immer auf Englisch.",
|
||||
"updated": 1636750480917
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page."
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "enn Sie Übersetzungen beisteuern möchten, lesen Sie die Seite: How to Contribute Translations.",
|
||||
"updated": 1636750495638
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "To switch languages, click on the flags on the footer of the Docs."
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"updated": 1636749263074,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Docs.",
|
||||
"updated": 1636750521606
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case bahasa)",
|
||||
"updated": 1636749282438,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Docs hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten. ",
|
||||
"updated": 1636750535105
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+47
-7
@@ -5,32 +5,72 @@
|
||||
"definition": {
|
||||
"text": "The Docs pages of Superalgos and other projects integrated are originally written in English. The system allows users to search and browse pages in other languages as well, as long as users have previously contributed the corresponding translations.",
|
||||
"updated": 1613820592771,
|
||||
"translations": []
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Docs-Seiten von Superalgos und anderen integrierten Projekten sind ursprünglich in Englisch verfasst. Das System ermöglicht es den Nutzern, die Seiten auch in anderen Sprachen zu suchen und zu durchsuchen, sofern die Nutzer zuvor die entsprechenden Übersetzungen beigetragen haben.",
|
||||
"updated": 1636750558018
|
||||
}
|
||||
]
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "English is considered the default language. When you switch to a different language, the system attempts to show the content in the new language. However, if the translation is not yet available, it shows the English version instead.",
|
||||
"updated": 1613820612132,
|
||||
"translations": []
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Englisch gilt als Standardsprache. Wenn Sie zu einer anderen Sprache wechseln, versucht das System, den Inhalt in der neuen Sprache anzuzeigen. Wenn die Übersetzung jedoch noch nicht verfügbar ist, wird stattdessen die englische Version angezeigt.",
|
||||
"updated": 1636750574994
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Node types, variable names, the title of pages in the Docs, and a few more elements of Superalgos may not be translated, as they are unique identifiers of the said elements. You will always get those in English.",
|
||||
"translations": []
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Node types, variable names, der Titel von Seiten in den Docs und einige weitere Elemente von Superalgos werden nicht übersetzt, da sie eindeutige Bezeichner der genannten Elemente sind. Sie erhalten diese immer auf Englisch.",
|
||||
"updated": 1636750589863
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page."
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Wenn Sie Übersetzungen beisteuern möchten, lesen Sie die Seite: How to Contribute Translations.",
|
||||
"updated": 1636750600480
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "To switch languages, click on the flags on the footer of the Docs."
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"updated": 1636749306719,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Docs.",
|
||||
"updated": 1636750616494
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case turkish)",
|
||||
"updated": 1636749321941,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Dokumenten hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten.",
|
||||
"updated": 1636750772952
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+45
-6
@@ -10,6 +10,11 @@
|
||||
"language": "FR",
|
||||
"text": "La documentation de Superalgos et des projets intégrés est à l'origine écrite en Anglais. The system allows users to search and browse pages in other languages as well, as long as users have previously contributed the corresponding translations.",
|
||||
"updated": 1630680264127
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Die Docs-Seiten von Superalgos und anderen integrierten Projekten sind ursprünglich in Englisch verfasst. Das System ermöglicht es den Nutzern, die Seiten auch in anderen Sprachen zu suchen und zu durchsuchen, sofern die Nutzer zuvor die entsprechenden Übersetzungen beigetragen haben.",
|
||||
"updated": 1636750800546
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -18,25 +23,59 @@
|
||||
"style": "Text",
|
||||
"text": "English is considered the default language. When you switch to a different language, the system attempts to show the content in the new language. However, if the translation is not yet available, it shows the English version instead.",
|
||||
"updated": 1613820612132,
|
||||
"translations": []
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Englisch gilt als Standardsprache. Wenn Sie zu einer anderen Sprache wechseln, versucht das System, den Inhalt in der neuen Sprache anzuzeigen. Wenn die Übersetzung jedoch noch nicht verfügbar ist, wird stattdessen die englische Version angezeigt.",
|
||||
"updated": 1636750807278
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
"text": "Node types, variable names, the title of pages in the Docs, and a few more elements of Superalgos may not be translated, as they are unique identifiers of the said elements. You will always get those in English.",
|
||||
"translations": []
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Node types, variable names, der Titel von Seiten in den Docs und einige weitere Elemente von Superalgos werden nicht übersetzt, da sie eindeutige Bezeichner der genannten Elemente sind. Sie erhalten diese immer auf Englisch.",
|
||||
"updated": 1636750815636
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page."
|
||||
"text": "If you wish to contribute translations, read the How to Contribute Translations page.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Wenn Sie Übersetzungen beisteuern möchten, lesen Sie die Seite: How to Contribute Translations.",
|
||||
"updated": 1636750827324
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "To switch languages, click on the flags on the footer of the Docs."
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"updated": 1636749351541,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Docs.",
|
||||
"updated": 1636750837505
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case french)",
|
||||
"updated": 1636749347360,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Dokumenten hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten.",
|
||||
"updated": 1636750848766
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
-8
@@ -50,24 +50,25 @@
|
||||
},
|
||||
{
|
||||
"style": "Success",
|
||||
"text": "To switch languages, click on the flags on the footer of the Docs.",
|
||||
"text": "Users can switch between languages using the links/Flags provided at the footer of every page at the Docs.",
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Dokumente.",
|
||||
"updated": 1634069610043
|
||||
"text": "Um die Sprache zu wechseln, klicken Sie auf die Flaggen in der Fußzeile der Docs.",
|
||||
"updated": 1636750877886
|
||||
}
|
||||
]
|
||||
],
|
||||
"updated": 1636749365748
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English.",
|
||||
"updated": 1613820648230,
|
||||
"text": "You may only add or delete pages to the Docs when the language is set to English. For the translation you have to select the language you want to translate into. (In this case german)",
|
||||
"updated": 1636749376271,
|
||||
"translations": [
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Sie können nur Seiten zu den Dokumenten hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist.",
|
||||
"updated": 1634069626053
|
||||
"text": "Sie können nur Seiten zu den Dokumenten hinzufügen oder löschen, wenn die Sprache auf Englisch eingestellt ist. Für die Übersetzung müssen Sie die Sprache auswählen, in die Sie übersetzen möchten.",
|
||||
"updated": 1636750866679
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
"language": "RU",
|
||||
"text": "Узлы - это объекты, которые существуют в рабочих пространствах и могут быть визуализированы в the Design Space. Узлы могут быть присоединены друг к другу, образуя иерархические структуры.\n",
|
||||
"updated": 1635514669410
|
||||
},
|
||||
{
|
||||
"language": "DE",
|
||||
"text": "Nodes sind Objekte, die im Workspace existieren und im Design Space visualisiert werden können. Nodes können miteinander verbunden/referenziert werden, um hierarchische Strukturen zu bilden.",
|
||||
"updated": 1636744729977
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
+6
-6
@@ -3,8 +3,8 @@
|
||||
"pageNumber": 4,
|
||||
"type": "Ascendex Test Status",
|
||||
"definition": {
|
||||
"text": "Passed Fetch OHLVCs and Backtesting test. Live trading will soon be tested.",
|
||||
"updated": 1635446898934
|
||||
"text": "Passed all tests",
|
||||
"updated": 1636749168642
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
@@ -24,8 +24,8 @@
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"text": "Trading Capability: Unknown. The ability to run strategies in live-trading mode has not been verified.",
|
||||
"updated": 1616003699055
|
||||
"text": "Trading Capability: Yes. The ability to place market orders, create and cancel limit orders for Live Trading purposes has been verified.",
|
||||
"updated": 1636749320010
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
@@ -38,8 +38,8 @@
|
||||
},
|
||||
{
|
||||
"style": "Json",
|
||||
"text": "{\n \"codeName\": \"ascendex\",\n \"rateLimit\": 500,\n \"sandBox\": \"false\"\n}",
|
||||
"updated": 1635446820958
|
||||
"text": "{\n \"codeName\": \"ascendex\"\n}",
|
||||
"updated": 1615204693035
|
||||
},
|
||||
{
|
||||
"style": "Text",
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"topic": "Tested Exchanges",
|
||||
"pageNumber": 15,
|
||||
"type": "OKEX Test Status",
|
||||
"definition": {
|
||||
"text": "Passed Live Trading Test but limited Historical Data ",
|
||||
"updated": 1636810465259
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "Properties",
|
||||
"updated": 1636811142009
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"text": "1-min OHLCVs Capability: No. The ability to fetch historical data for backtesting purposes is not possible.",
|
||||
"updated": 1636811644277
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"text": "Market History: From that day you to start mining historical data",
|
||||
"updated": 1636811635789
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"text": "Trading Capability: Yes The ability to place market orders, create and cancel limit orders in a live-trading mode has been verified.",
|
||||
"updated": 1636811869127
|
||||
},
|
||||
{
|
||||
"style": "List",
|
||||
"text": "Comments: Raw Data mining is limited to a few minutes due to exchange restrictions on their API that limit the number of data it can be requested via Rest API",
|
||||
"updated": 1636812202662
|
||||
},
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "Configuration"
|
||||
},
|
||||
{
|
||||
"style": "Json",
|
||||
"text": "{\n \"codeName\": \"okex\",\n \"API\": [\n {\n \"method\": \"fetchTrades\",\n \"fetchType\": \"by Id\",\n \"fetchTradesMethod\": \"publicGetHistoricalTrades\",\n \"firstId\": \"f\"\n }\n ]\n}",
|
||||
"updated": 1636811208143
|
||||
},
|
||||
{
|
||||
"style": "Title",
|
||||
"text": "User Exchange Account Configuration",
|
||||
"updated": 1636811329265
|
||||
},
|
||||
{
|
||||
"style": "Title",
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"style": "Note",
|
||||
"text": "That your PASSPHRASE is your password in the user exchanger account configuration",
|
||||
"updated": 1636811457247
|
||||
}
|
||||
]
|
||||
}
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wenn alle Nachkommenknoten auf einen Winkel von 180 Grad eingestellt sind, nimmt jeder Knoten einen Platz in einem Bruchteil eines Kreises ein, der sich über 180 Grad erstreckt, normal zum Elternteil.",
|
||||
"updated": 1634297880856
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Tüm yavru düğümler 180 derecelik açıya ayarlandığında, her düğüm, ana düğüme dik olan 180 derecelik bir açıyla konumanır.",
|
||||
"updated": 1636745968751
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Aber was passiert, wenn einer der Nachkommenknoten einen anderen Winkel zum Elternteil hat? Lassen Sie uns ein Experiment durchführen!",
|
||||
"updated": 1634297887613
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Ancak, yavru düğümlerden birinin ana düğüme farklı bir açıyla bağlıysa ne olur? Hadi bir deney yapalım!",
|
||||
"updated": 1636746037914
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -74,6 +84,11 @@
|
||||
"language": "DE",
|
||||
"text": "Klicken Sie einmal auf die Einstellung \"Trading Parameters\" Winkel zu Elternteil und verlassen Sie das Menü!",
|
||||
"updated": 1634297909566
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Trading Parameters düğümünde açı butonuna bir kez tıklayın ve menüden çıkın!",
|
||||
"updated": 1636746260797
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -98,6 +113,11 @@
|
||||
"language": "DE",
|
||||
"text": "Der Knoten nimmt einen Platz in einem kleineren Winkel ein - 90 Grad! Machen Sie dasselbe mit den Knoten \"Trading System Reference\" und \"Trading Engine Reference\"!",
|
||||
"updated": 1634297917131
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Düğüm daha küçük bir açıda pozisyon alır (- 90 derece)! Aynısını İşlem Sistemi Referansı ( Trading System Reference ) ve İşlem Motoru Referansı ( Trading Engine Reference ) düğümleri ile yapın!",
|
||||
"updated": 1636746373655
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Beachten Sie, wie Sie die Einstellung \"Angle to Parent\" bei verschiedenen Geschwistern geändert haben und jedes von ihnen unabhängig von den anderen auf die neue Einstellung reagierte!",
|
||||
"updated": 1634298018896
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Farklı alt düğümlerin açı ayarının ana düğüme göre nasıl değiştirdiğinize ve her birinin yeni ayara diğerlerinden bağımsız olarak nasıl tepki verdiğine dikkat edin!",
|
||||
"updated": 1636746759816
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Sie steuern die Position jedes Knotens über das Menü des Knotens. Weder der übergeordnete Knoten noch die Geschwister können die Position beeinflussen... mit dieser coolen Ausnahme:",
|
||||
"updated": 1634298027723
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Düğümler menüsünden her bir düğümün konumunu kontrol edersiniz. Ne ana düğüm ne de alt düğümlerin konumu etkileyemez... bu harika istisna dışında:",
|
||||
"updated": 1636746814955
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -74,6 +84,11 @@
|
||||
"language": "DE",
|
||||
"text": "Rufen Sie die Lightning Strike \"Backtesting Session\" auf und wählen Sie \"Add Missing Children\" auf der rechten Seite des Menüs!",
|
||||
"updated": 1634298035258
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Lightning Strike Backtesting Oturumuna gidin ve menünün sağ tarafından Kayıp Çocukları Ekle'yi ( Add Missing Children ) seçin!",
|
||||
"updated": 1636746977214
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -98,6 +113,11 @@
|
||||
"language": "DE",
|
||||
"text": "Beachten Sie, dass der Knoten \"Social Bots\" die Einstellung \"Winkel zum Elternteil\" von seinem nächsten Geschwisterknoten geerbt hat!",
|
||||
"updated": 1634298043102
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Sosyal Botlar ( Social Bots ) düğümünün, ana düğüm ayarını en yakın kardeşinden nasıl devraldığına dikkat edin!",
|
||||
"updated": 1636747051481
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
+15
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wenn Sie die Option zum Aufheben der Einstellung \"Angle to Parent\" wählen, kann der Knoten jeden beliebigen Winkel relativ zu seinem Elternteil und seinen Geschwistern einnehmen!",
|
||||
"updated": 1634298097508
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Ana düğüm açısı ayarını iptal ettiğinizde , düğüm ebeveynine ve kardeşlerine göre herhangi bir açıyı almakta serbesttir!",
|
||||
"updated": 1636747810405
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Rufen Sie das Menü des Knotens \"Trading Parameters\" auf, wählen Sie die Option zum Aufheben der Einstellung \"Angle to Parent\" und bewegen Sie den Knoten in eine beliebige Richtung!",
|
||||
"updated": 1634298112868
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "İşlem Parametreleri ( Trading Parameters ) düğümünün menüsüne girin, düğüm açısı ayarını iptal etme seçeneğini seçin ve düğümü herhangi bir yöne hareket ettirin!",
|
||||
"updated": 1636747904764
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wie Sie sehen können, bleibt der Knoten an der Stelle, an der Sie ihn verlassen haben, und die gepunktete Linie, die ihn mit seinem übergeordneten Knoten verbindet, wird gelb. Beachten Sie, dass sowohl der Winkel zum übergeordneten Knoten als auch der Abstand willkürlich werden.",
|
||||
"updated": 1634298120484
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Gördüğünüz gibi, düğüm bıraktığınız yerde kalıyor ve ebeveynine bağlanan noktalı çizgi sarıya dönüyor. Hem ana düğüme olan açının hem de uzaklığın keyfi hale geldiğine dikkat edin.",
|
||||
"updated": 1636747945735
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+40
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Die nächste Option im Menü steuert den Abstand zwischen dem Unterknoten und seinem Übergeordneten Knoten. Durch Klicken auf die Schaltfläche werden die Optionen durchlaufen.",
|
||||
"updated": 1634332176300
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Menüdeki bir sonraki seçenek, düğümden ebeveynine olan mesafeyi kontrol eder. Düğmeye tıklamak seçenekler arasında geçiş yapar.",
|
||||
"updated": 1636748818153
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Der Abstand eines Knotens zu seinem übergeordneten Knoten wird relativ zum Abstand des übergeordneten Knotens zu seinem übergeordneten Knoten festgelegt. Die verfügbaren Optionen sind:",
|
||||
"updated": 1634332213957
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bir düğümden ebeveynine olan mesafe, ebeveynden ebeveyn düğümüne olan mesafeye göre ayarlanır. Mevcut seçenekler şunlardır:",
|
||||
"updated": 1636748858484
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -69,6 +79,11 @@
|
||||
"language": "DE",
|
||||
"text": "Rosa: 0.25X",
|
||||
"updated": 1634332245055
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Pink (Pembe): 0.25X",
|
||||
"updated": 1636748869618
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -81,6 +96,11 @@
|
||||
"text": "Arancione: 0.5X",
|
||||
"updated": 1619460530100,
|
||||
"style": "List"
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Orange (Kavuniçi): 0.5X",
|
||||
"updated": 1636748886700
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -98,6 +118,11 @@
|
||||
"language": "DE",
|
||||
"text": "Grün: 1X",
|
||||
"updated": 1634332224238
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Green (Yeşil): 1X",
|
||||
"updated": 1636748898393
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -115,6 +140,11 @@
|
||||
"language": "DE",
|
||||
"text": "Blau: 1.5X",
|
||||
"updated": 1634332228958
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Blue (Mavi): 1.5X",
|
||||
"updated": 1636749062176
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -132,6 +162,11 @@
|
||||
"language": "DE",
|
||||
"text": "Rot: 2X",
|
||||
"updated": 1634332233805
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Red (Kırmızı): 2X",
|
||||
"updated": 1636749080979
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -156,6 +191,11 @@
|
||||
"language": "DE",
|
||||
"text": "Nehmen wir an, Sie wählen die grüne Option. Der Abstand des Knotens zu seinem übergeordneten Knoten ist derselbe Abstand, der den übergeordneten Knoten von seinem übergeordneten Knoten trennt!",
|
||||
"updated": 1634332187256
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Diyelim ki yeşil seçeneği seçtiniz. Düğümden ebeveynine olan mesafe, ebeveyn düğümünden ayıran mesafeyle aynı olacaktır!",
|
||||
"updated": 1636749146092
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Probieren Sie die verschiedenen Entfernungseinstellungen des Lightning Strike Trading System Reference Knoten aus! Machen Sie weiter! Klicken Sie auf die Schaltfläche mit dem \"Maßband\"!",
|
||||
"updated": 1634332512924
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Lightning Strike Ticaret Sistemi Referans düğümünün ( Trading System Reference Node ) farklı mesafe ayarlarını deneyin! Devam edelim! Bant düğmesine tıklayın!",
|
||||
"updated": 1636749363536
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Ziemlich einfach, oder? Was passiert nun, wenn der Knoten, den Sie einstellen, selbst Ableger hat?",
|
||||
"updated": 1634332545887
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Oldukça basit, değil mi? Şimdi, ayarladığınız düğümün kendi yavruları olduğunda ne olur ona bakalım.",
|
||||
"updated": 1636749391543
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -74,6 +84,11 @@
|
||||
"language": "DE",
|
||||
"text": "Finden wir es heraus! Klicken Sie einmal auf die Schaltfläche Abstand zum Übergeordneten Knoten auf den Knoten Trading Parameters !",
|
||||
"updated": 1634332609115
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Hadi bulalım! İşlem Parametreleri ( Trading Parameters ) düğümünde Ebeveyne Uzaklık ( Distance To Parent ) düğmesine bir kez tıklayın!",
|
||||
"updated": 1636749475116
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -98,6 +113,11 @@
|
||||
"language": "DE",
|
||||
"text": "Da Sie den Abstand zwischen dem Trading Parameters Knoten und dem Backtesting Session Knoten vergrößert haben, haben sich auch die Unterknoten des Trading Parameters Knotens proportional vergrößert!",
|
||||
"updated": 1634332645315
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "İşlem Parametreleri düğümünü Geri Test Oturumu (Backtesting Session Node ) düğümünden ayıran mesafeyi artırdığınız için, İşlem Parametreleri ( Trading Parameters ) düğümünün yavruları da orantılı olarak arttı!",
|
||||
"updated": 1636749564919
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Der Grund, warum der Abstand zum übergeordneten Knoten relativ zum Abstand des übergeordneten Knotens zu seinem übergeordneten Knoten ist, ist, dass Sie lange Strukturen von Knoten beeinflussen können!",
|
||||
"updated": 1634332747191
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Ebeveyn düğüme olan uzaklığın ebeveynin ebeveynine olan mesafesine göre olmasının nedeni, uzun düğüm yapılarını etkileyebilmeniz içindir!",
|
||||
"updated": 1636750239895
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Klicken Sie einmal auf die Schaltfläche Abstand zum übergeordneten Knoten des Netzwerkknotens!",
|
||||
"updated": 1634332754400
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Ağ düğümünün Ebeveyne Uzaklık ( Distance To Parent ) düğmesine bir kez tıklayın!",
|
||||
"updated": 1636750278445
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wahnsinn! Sehen Sie? Mit diesen Werkzeugen haben Sie die volle Kontrolle darüber, wie Sie Hierarchien visuell organisieren!",
|
||||
"updated": 1634332763485
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Vayyy! Gördün mü? Bu araçlar, hiyerarşiler üzerinde görsel olarak tam kontrol sahibi olmanızı sağlar!",
|
||||
"updated": 1636751755132
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -99,6 +114,11 @@
|
||||
"language": "DE",
|
||||
"text": "Versuchen Sie, die Einstellung \"Abstand zum Übergeordneten\" auf dem Knoten Testing Trading Tasks aufzuheben! Wie Sie sehen, können Sie einen beliebigen Abstand zum übergeordneten Knoten einstellen, aber der Winkel zum übergeordneten Knoten bleibt fest.",
|
||||
"updated": 1634332795200
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Ticaret Görevlerini Test Etme ( Testing Trading Tasks ) düğümündeki Ebeveyne Mesafe (Distance To Parent) ayarını iptal etmeyi deneyin! Gördüğünüz gibi, ebeveyn düğüme herhangi bir uzaklık ayarlayabilirsiniz, Ancak ebeveyne olan açı sabit kalır.",
|
||||
"updated": 1636751865776
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+40
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Die Schaltfläche schaltet zwischen verschiedenen Anordnungsoptionen um, die sich darauf auswirken, wo ein Knoten im Verhältnis zu seinem übergeordneten Knoten platziert wird.",
|
||||
"updated": 1634332853777
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bu düğme, düğümün üst öğesiyle ilişkili olarak nereye yerleştirileceğini etkileyen çeşitli düzenleme seçenekleri arasında geçiş yapar.",
|
||||
"updated": 1636752213924
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "In der Zeichnung stellt der orangefarbene Punkt den übergeordneten Knoten dar, und die blauen Punkte repräsentieren den Knoten, der den spezifischen Anordnungsstil annimmt.",
|
||||
"updated": 1634332860892
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Çizimde turuncu nokta üst düğümü, mavi noktalar ise belirli düzenleme stilini benimseyen düğümü temsil eder.",
|
||||
"updated": 1636752246374
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Konkav: Dies ist der Standardstil. Der Knoten nimmt einen Platz auf einem Kreis um seinen übergeordneten Knoten ein.",
|
||||
"updated": 1634332870561
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "İçbükey: Bu, varsayılan stildir. Düğüm, üst düğümünün etrafındaki bir çevre üzerinde konumlanır",
|
||||
"updated": 1636752350927
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -99,6 +114,11 @@
|
||||
"language": "DE",
|
||||
"text": "Konvex: Der Schlitz befindet sich auf einer konvexen Kurve.",
|
||||
"updated": 1634332885678
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dışbükey: Yuva dışbükey bir eğri üzerinde konumlanır.",
|
||||
"updated": 1636752424282
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -123,6 +143,11 @@
|
||||
"language": "DE",
|
||||
"text": "Vertikal-Rechts: Auf einer vertikalen Linie nach rechts.",
|
||||
"updated": 1634332895278
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dikey-Sağ: Sağa dikey bir çizgi üzerinde konumlanır.",
|
||||
"updated": 1636752436742
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -147,6 +172,11 @@
|
||||
"language": "DE",
|
||||
"text": "Vertikal-Links: Der Schlitz befindet sich auf einer vertikalen Linie nach links.",
|
||||
"updated": 1634332902630
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dikey-Sol: Yuva, sola doğru dikey bir çizgi üzerinde konumlanır.",
|
||||
"updated": 1636752467099
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -171,6 +201,11 @@
|
||||
"language": "DE",
|
||||
"text": "Horizontal-unten: Auf einer horizontalen Linie nach unten.",
|
||||
"updated": 1634332909056
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Yatay-Alt: Aşağıda yatay bir çizgi üzerinde konumlanır.",
|
||||
"updated": 1636752488032
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -195,6 +230,11 @@
|
||||
"language": "DE",
|
||||
"text": "Horizontal-Oben: Der Schlitz befindet sich auf einer horizontalen Linie oben.",
|
||||
"updated": 1634332915541
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Yatay-Üst: Yuva, yukarıda yatay bir çizgi üzerinde konumlanır.",
|
||||
"updated": 1636752516000
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
+15
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wenn Sie mit dieser Funktion experimentieren, werden Sie feststellen, dass das Verhalten der einzelnen Einstellungen nicht eindeutig oder vorhersehbar ist.",
|
||||
"updated": 1634333050228
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bu özelliği denerseniz, her bir ayarın davranışının net veya tahmin edilebilir olmadığını fark edeceksiniz.",
|
||||
"updated": 1636752597353
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Die derzeitige Implementierung dieser Funktion ist nicht optimal, und das Verhalten einiger der Optionen ist schwer vorhersehbar. Wenn Sie ein Entwickler sind, könnte dies eine gute Gelegenheit sein, den bestehenden Code zu überarbeiten und diese Funktion in einen brauchbareren Zustand zu bringen!",
|
||||
"updated": 1634333057384
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bu özelliğin mevcut uygulaması optimal değildir ve bazı seçeneklerin davranışını tahmin etmek zordur. Bir geliştiriciyseniz, mevcut kodu tekrarlamak ve bu özelliği daha kullanılabilir bir duruma getirmek için bu harika bir fırsat olabilir!",
|
||||
"updated": 1636752636392
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Sie können diese Funktion gerne ausprobieren, aber Sie werden höchstwahrscheinlich zur Standardeinstellung zurückkehren wollen!",
|
||||
"updated": 1634333066060
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bu özelliği denemekten çekinmeyin, ancak büyük olasılıkla varsayılan ayara geri dönmek isteyeceksiniz!",
|
||||
"updated": 1636752653398
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Die Schaltfläche \"Einfrieren\" ist nur unter ganz bestimmten Umständen sinnvoll: wenn die Physik auf der Ebene des Design Space aktiviert ist.",
|
||||
"updated": 1634333134069
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dondur düğmesi çok özel koşullar altında anlamlıdır.",
|
||||
"updated": 1636752747872
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Der Design Space bietet einige Anpassungsmöglichkeiten, von denen eine die Aktivierung der Physik des Universums ist. Wenn die Physik aktiviert ist, wird der ganze Raum lebendig!",
|
||||
"updated": 1634333140802
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Tasarım Alanı ( Design Space ), biri evrenin fiziğini etkinleştiren bazı özelleştirme özellikleri sunar. Fizik açıkken, tüm uzay canlanır!",
|
||||
"updated": 1636752835468
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wir werden an dieser Stelle nicht auf dieses Thema eingehen, da es nicht im Lehrplan für die Grundausbildung enthalten ist!",
|
||||
"updated": 1634333147196
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Temel eğitim müfredatında olmadığı için bu noktada o tavşan deliğine girmeyeceğiz!",
|
||||
"updated": 1636752855204
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -99,6 +114,11 @@
|
||||
"language": "DE",
|
||||
"text": "Die Option Einfrieren friert die Kettenverbindungen des Knotens mit seinen Über- und Unterknoten ein, und die Verbindungslinien werden blau. Das Einfrieren setzt CPU-Ressourcen frei, wenn die Physik-Animationen eingeschaltet sind, da das System aufhört, die Positionen und den Status der Knoten zu berechnen.",
|
||||
"updated": 1634333202786
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dondur seçeneği, düğümün ebeveyni ile zincir bağlantılarını dondurur ve yavrular ve bağlantı hatları maviye döner. Fizik animasyonları açıkken dondurma işlemi, sistem düğümlerin konumlarını ve durumunu hesaplamayı durdurduğundan CPU kaynaklarını serbest bırakır.",
|
||||
"updated": 1636752891025
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Backups sind sehr leistungsfähig, und es gibt mehrere Anwendungsfälle! Wenn Sie auf die Schaltfläche \"Backup\" klicken, werden der Knoten und seine Unterknoten in einer JSON-Datei gespeichert!",
|
||||
"updated": 1634333266362
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Yedeklemeler ( Backups ) çok güçlüdür ve çeşitli kullanım durumları vardır! Düğmeye tıkladığınızda, düğüm ve yavruları bir JSON dosyasına kaydedilir!",
|
||||
"updated": 1636789947185
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Sie können eine Struktur von Knoten sichern, um Ihre Arbeit zu schützen oder um eine Kopie der Struktur in ihrem aktuellen Zustand zu erhalten.",
|
||||
"updated": 1634333291426
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Çalışmanızı korumak veya yapının bir kopyasını mevcut durumunda tutmak için bir düğüm yapısını yedeklemek isteyebilirsiniz.",
|
||||
"updated": 1636789960355
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -69,6 +79,11 @@
|
||||
"language": "DE",
|
||||
"text": "Machen Sie ein Backup des Lightning Strike trading system und überprüfen Sie Ihren Download-Ordner!",
|
||||
"updated": 1634333312934
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Lightning Strike ticaret sisteminin yedeğini alın ve indirilenler klasörünüzü kontrol edin!",
|
||||
"updated": 1636789977365
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -93,6 +108,11 @@
|
||||
"language": "DE",
|
||||
"text": "Die Datei wird vom Browser heruntergeladen und im Standardordner Downloads gespeichert. Wenn Sie mehrere Sicherungskopien der gleichen Datei erstellen, benennt der Browser die Datei mit fortlaufenden Nummern um.",
|
||||
"updated": 1634333320554
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dosya tarayıcı tarafından indirilir ve varsayılan İndirilenler klasöründe saklanır. Aynı dosyanın birden çok yedeğini alırsanız, tarayıcı dosyayı sıralı sayılarla yeniden adlandırır.",
|
||||
"updated": 1636789994542
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Angenommen, Sie wollen eine Strategie mit verschiedenen Parametersätzen testen, dann erstellen Sie ein Backup des Knotens Trading Parameters!",
|
||||
"updated": 1634333373800
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Diyelim ki farklı parametre setleriyle bir stratejiyi test etmek istiyorsunuz, bu nedenle İşlem Parametreleri düğümünün yedeğini alabilirsiniz!",
|
||||
"updated": 1636790169192
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Machen Sie weiter und nehmen Sie die Sicherung! Jetzt, da Sie eine Sicherungskopie aller Trading Parameter haben, können Sie jede Änderung vornehmen, denn Sie wissen, dass Sie jederzeit auf Ihre Sicherungskopie zurückgreifen können! Wenn Sie mit Chrome arbeiten, muss das Backup in der unteren linken Ecke des Browserfensters sichtbar sein.",
|
||||
"updated": 1634333390672
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Devam edin ve yedeği alın! Artık tüm İşlem Parametrelerinin ( Trading Parameter ) bir yedeğine sahip olduğunuza göre, her zaman yedeğinize geri dönebileceğinizi bilerek herhangi birini değiştirebilirsiniz! Chrome kullanıyorsanız, yedekleme, tarayıcı penceresinin sol alt köşesinde görünmelidir.",
|
||||
"updated": 1636790152231
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Ziehen Sie nun die Sicherungsdatei und legen Sie sie im Design Space ab! So stellen Sie ein Backup wieder her!",
|
||||
"updated": 1634333401730
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Şimdi yedekleme dosyasını sürükleyin ve Tasarım Alanına ( Design Space ) bırakın! Bir yedeği bu şekilde geri yüklersiniz!",
|
||||
"updated": 1636790223553
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -99,6 +114,11 @@
|
||||
"language": "DE",
|
||||
"text": "Einfach, oder? Im nächsten Schritt zeige ich Ihnen, wie Sie wieder die Originalversion verwenden können!",
|
||||
"updated": 1634333412661
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Kolay değil mi? Bir sonraki adımda, orijinal sürümü kullanmaya nasıl geri döneceğinizi göstereceğim!",
|
||||
"updated": 1636790201614
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+15
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Jetzt folgen Sie meinem Beispiel! Wir werden die Strategie nicht wirklich mit verschiedenen Parametern testen... wir simulieren nur einen Anwendungsfall!",
|
||||
"updated": 1634333486436
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Şimdi beni takip et! Stratejiyi farklı parametrelerle gerçekten test etmeyeceğiz... sadece bir kullanım senaryosunu simüle ediyoruz!",
|
||||
"updated": 1636790394665
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Nehmen wir an, wir haben die Trading Parameter geändert und wollen nun wieder die ursprünglichen Parameter verwenden. Die Sicherungskopie befindet sich bereits im Design Space - losgelöst von der Hierarchie - und wir müssen den bestehenden Knoten Trading Parameters durch die Sicherungskopie ersetzen.",
|
||||
"updated": 1634333510680
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Alım Satım Parametrelerini ( Trading Parameters ) değiştirdiğimizi varsayalım ve şimdi orijinal olanları kullanmaya geri dönmek istiyoruz. Hiyerarşiden ayrılmış tasarım alanında yedeğimiz zaten var ve mevcut İşlem Parametreleri düğümünü yedekle değiştirmemiz gerekiyor.",
|
||||
"updated": 1636790758208
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Gehen Sie zu dem derzeit verwendeten Knoten Trading Parameters, der mit dem Knoten Backtesting Session verbunden ist, und doppelklicken Sie auf die Schaltfläche Detach Node. Der Knoten wird von der Hierarchie getrennt! Sie können ihn nun zur Seite schieben!",
|
||||
"updated": 1634333522271
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Şu anda kullanımda olan - Geri Test Oturumu düğümüne ( Backtesting Session Node ) bağlı olan - İşlem Parametreleri ( Trading Parameter ) düğümüne gidin ve Düğümü Ayır ( Detach Node ) düğmesine çift tıklayın. Düğüm hiyerarşiden ayrılıyor! Şimdi yana kaydırabilirsiniz!",
|
||||
"updated": 1636790630805
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Nun müssen wir die Sicherung des Knotens Trading Parameters an die Backtesting Session anhängen. Wie machen wir das?",
|
||||
"updated": 1634333572735
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Şimdi İşlem Parametreleri ( Trading Parameters ) düğümünün yedeğini Geri Test Oturumuna ( Backtesting Session ) eklememiz gerekiyor. Bunu nasıl yaparız?",
|
||||
"updated": 1636791281138
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -50,6 +55,11 @@
|
||||
"language": "DE",
|
||||
"text": "Klicken Sie mit der rechten Maustaste auf den Knoten Trading Parameters und ziehen Sie ihn näher an den Knoten Backtesting Session! Lassen Sie los, wenn Sie einen orangefarbenen Ring um den Backtesting Session Knoten sehen!",
|
||||
"updated": 1634333597218
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "İşlem Parametreleri düğümüne ( Trading Parameters ) sağ tıklayın ve Geriye Dönük Test oturumu (Backtesting Session Node ) düğümüne yaklaştırın! Geriye Dönük Test Oturumu düğümünü çevreleyen turuncu bir halka gördüğünüzde bırakın!",
|
||||
"updated": 1636791340589
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -74,6 +84,11 @@
|
||||
"language": "DE",
|
||||
"text": "Das war's! Die Sicherung des Knotens Trading Parameters ist wiederhergestellt und kann wieder verwendet werden.",
|
||||
"updated": 1634333609241
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bu kadar! İşlem Parametreleri düğümünün ( Trading Parameters ) yedeği geri yüklenir ve tekrar kullanıma açılır.",
|
||||
"updated": 1636791375829
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -98,6 +113,11 @@
|
||||
"language": "DE",
|
||||
"text": "Beachten Sie, dass Sie den zweiten Trading Parameters-Knoten löschen können, wenn Sie möchten, oder Sie können ihn für eine spätere Verwendung beiseite legen.",
|
||||
"updated": 1634333617512
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Dilerseniz ikinci İşlem Parametreleri düğümünü ( Trading Parameters ) silebileceğinizi veya daha sonra kullanmak üzere bir tarafta tutabileceğinizi unutmayın.",
|
||||
"updated": 1636791408211
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+15
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Knoten, die nicht mit einer Hierarchie verbunden sind, werden nicht berechnet. Sie sind zwar im Workspace vorhanden, haben aber keinen Einfluss auf die Funktionsweise des Systems auf irgendeiner Ebene.",
|
||||
"updated": 1634333669893
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bir hiyerarşiye bağlı olmayan düğümler hesaplanmaz. Çalışma alanında bulunurlar, ancak sistemin işleyişini hiçbir düzeyde etkilemezler.",
|
||||
"updated": 1636791617905
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Das bedeutet, dass Sie beliebig viele Strukturen von Knoten losgelöst von Hierarchien aufbewahren können, um sie für eine spätere Verwendung oder aus anderen Gründen zur Verfügung zu haben.",
|
||||
"updated": 1634333676692
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bu, hiyerarşilerden kopuk sayıda düğüm yapısını istediğiniz kadar tutabileceğiniz, bunları daha sonra kullanmak üzere veya herhangi bir nedenle elinizin altında tutabileceğiniz anlamına gelir.",
|
||||
"updated": 1636792301822
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Ein häufiges Szenario ist die Aufbewahrung mehrerer Versionen bestimmter Definitionen bei der Erstellung von Strategien, so dass Sie einen Satz von Regeln testen und beim nächsten Durchlauf zu anderen Regeln wechseln können. Sie können sogar mehrere Versionen von ganzen Strategien aufbewahren!",
|
||||
"updated": 1634333685177
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Ortak bir senaryo, stratejiler oluştururken belirli tanımların birden çok sürümünü tutmaktır, böylece bir sonraki çalıştırma için bir dizi kuralı test edebilir ve diğer kurallara geçebilirsiniz. Tüm stratejilerin birden fazla versiyonunu bile tutabilirsiniz!",
|
||||
"updated": 1636792469596
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -26,6 +26,11 @@
|
||||
"language": "DE",
|
||||
"text": "Klicken Sie auf die Hilfe-Schaltfläche des Knotens Trading Parameters, um die Seite Docs des Knotens aufzurufen. Ich werde Ihnen jetzt etwas zeigen...",
|
||||
"updated": 1634333867183
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Düğümün Yardım/Dokümanlar sayfasına erişmek için İşlem Parametreleri ( Trading Parameters ) düğümündeki yardım düğmesine tıklayın. Sana bir şey göstereceğim...",
|
||||
"updated": 1636792560853
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -51,6 +56,11 @@
|
||||
"language": "DE",
|
||||
"text": "Blättern Sie die Seite ganz nach unten, bis Sie den Titel \"Trading Parameters Attaching Rules\" finden.",
|
||||
"updated": 1634333875335
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "\"Ticaret Parametreleri Ekleme Kuralları\" ( Trading Parameters Attaching Rules ) başlığını bulana kadar sayfayı sonuna kadar kaydırın.",
|
||||
"updated": 1636792599389
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -75,6 +85,11 @@
|
||||
"language": "DE",
|
||||
"text": "Jeder Knoten kann an bestimmte Knotentypen angehängt werden. Diese Verknüpfungsregeln sind auf der Seite des Knotens in den Docs aufgeführt.",
|
||||
"updated": 1634333881601
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Her düğüm belirli düğüm türlerine eklenebilir. Bu ekleme kuralları, Dokümanlar'da düğümün sayfasında listelenir.",
|
||||
"updated": 1636792641639
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -99,6 +114,11 @@
|
||||
"language": "DE",
|
||||
"text": "Wenn es mehrere Knoten gibt, die die Verbindung annehmen können, zeigt jeder Kandidat einen grauen Ring an, der anzeigt, dass er bereit ist, die Verbindung anzunehmen. Nur der Kandidat, der sich näher am zu verbindenden Knoten befindet, ist orange markiert.",
|
||||
"updated": 1634333887983
|
||||
},
|
||||
{
|
||||
"language": "TR",
|
||||
"text": "Bağlantıyı kabul edebilecek birkaç düğüm olduğunda, her aday eki almaya hazır olduklarını belirten gri bir halka görüntüler. Yalnızca eklenecek düğüme daha yakın olan aday turuncu renkle vurgulanır.",
|
||||
"updated": 1636792767216
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+15
@@ -30,6 +30,11 @@
|
||||
"language": "TR",
|
||||
"text": "Ve Plotter'lar bu şekilde inşa edilir! Plotter'lar, mumlardan diğer şeylere kadar verilerin grafiksel temsillerini oluşturur!",
|
||||
"updated": 1636106406315
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "И вот как строятся плоттеры! Плоттеры создают графические представления данных... от свечей до всего остального!",
|
||||
"updated": 1636746375089
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -59,6 +64,11 @@
|
||||
"language": "TR",
|
||||
"text": "Bunu yapmanın en iyi yolu görsel komut dosyasıdır! Plotter'lar, verileri temsil eden çizgileri ve şekilleri işaretlemek için koordinat noktalarından yapılmış stilize çokgenler kullanır. Grafiklerde kullanıma sunulan her katman, şu anda baktığınız türden bir dizi tanımla oluşturulur. Dirençler ve Destekler botunun özel durumu oldukça karmaşıktır, ancak aracın gücünü sergilemektedir.!",
|
||||
"updated": 1636106574620
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Опять же, визуальное описание в лучшем виде! Плоттеры используют стилизованные полигоны, произведенные из координатных точек для окрашивания линий и фигур, представляющих данные. Каждый слой произвел доступ на диаграммах, создавая наборы определений того типа, на который Вы смотрите прямо сейчас. Каждый случай бота сопротивления и поддержки является довольно сложным, но показывает мощность инструмента!",
|
||||
"updated": 1636746631697
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -88,6 +98,11 @@
|
||||
"language": "TR",
|
||||
"text": "Direnç Bölgesi 5 Poligonunu (Resistances Zone) (solda) bulun, genişletin ve bu güzelliğin nasıl inşa edildiğine bir göz atın.",
|
||||
"updated": 1636106823729
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Найдите Polygon Зоны сопротивления 5 (Zone 5) - слева, разверните его и поднимайтесь вверх по ветвям, чтобы взглянуть украдкой на то, как была построена эта красота!",
|
||||
"updated": 1636746844784
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+20
@@ -30,6 +30,11 @@
|
||||
"language": "TR",
|
||||
"text": "Şimdi Ticaret Botu'nda ( Trading Bot ) yerleşik olarak bulunan temel strateji test kaynaklarından birini göstermek için Ağ hiyerarşisine geri dönelim.",
|
||||
"updated": 1636106918357
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Мы вернулись к сетевой иерархии, чтобы показать Вам один из основных ресурсов для тестирования стратегий, встроенных в Trading Bot.",
|
||||
"updated": 1636747011896
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -60,6 +65,11 @@
|
||||
"language": "TR",
|
||||
"text": "Ancak ilk Geri Test Oturumunuzu ( Backtesting Session ) çalıştırmadan önce, Ticaret Görevlerini Test Etme düğümünün ( Testing Trading Tasks) nasıl kurulduğunu kavramak için hızlı bir keşif görevine başlayalım.",
|
||||
"updated": 1636106975655
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Но прежде чем Вы запустите свою первую Backtesting Session, давайте быстро продолжим разведочную миссию, чтобы понять, как настроен узел Testing Trading Tasks.",
|
||||
"updated": 1636747139887
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -89,6 +99,11 @@
|
||||
"language": "TR",
|
||||
"text": "Ticaret Görevlerini Test Etme düğümünü ( Testing Trading Tasks ) genişletin ve yavru düğümlerin yapısına bakın... Tanıdık geliyor mu?",
|
||||
"updated": 1636107045004
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Разверните узел Testing Trading Tasks и посмотрите на структуру узлов-потомков... Выглядит знакомо?",
|
||||
"updated": 1636747199218
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -117,6 +132,11 @@
|
||||
"language": "TR",
|
||||
"text": "Aslında Veri Görevleri (Data Tasks) bölümüne benzerdir. Görevler borsa, piyasa ve ticaret madeni tarafından düzenlenir, böylece farklı pazarlar için optimize edilmiş herhangi bir sayıda stratejiyi birden fazla borsada test edebilirsiniz.",
|
||||
"updated": 1636107114239
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Действительно! Это похоже на раздел Data Tasks: задачи организованы по бирже, рынку и торговой шахте, вот поэтому Вы можете протестировать любое количество стратегий, оптимизированных для разных рынков и на нескольких биржах.",
|
||||
"updated": 1636747320904
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+21
-1
@@ -30,6 +30,11 @@
|
||||
"language": "TR",
|
||||
"text": "Birden çok borsa, pazar ve stratejiyle çalışan, bir ağ üzerinden ticaret çiftliğinizin olduğunu ve burada çalışan bir robot ordusu hayal edin.",
|
||||
"updated": 1636108738487
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Представьте себе армию ботов, работающих с множеством биржей, рынков и стратегий в сети а-ля торговая ферма.",
|
||||
"updated": 1636747931667
|
||||
}
|
||||
],
|
||||
"updated": 1622200549490
|
||||
@@ -61,6 +66,11 @@
|
||||
"language": "TR",
|
||||
"text": "Ağ Düğümü bununla ilgili. Şimdiye kadar gördükleriniz tek bir makinede çalışıyor. Fakat...",
|
||||
"updated": 1636109072742
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Вот, что такое Network Node. То, что Вы видели до сих пор - работает на одной машине. Но...",
|
||||
"updated": 1636747649665
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -90,6 +100,11 @@
|
||||
"language": "TR",
|
||||
"text": "Superalgos, İstemciyi çalıştıran düğüm ağları arasında görevlerin dağıtılmasını ve koordine edilmesini destekler! Bu, akıllı ve ölçeklenebilir operasyonlar sağlar. GUI çalıştıran herhangi bir makine işletmeyi kontrol edebilir! Bu farklı makinelerde aynı operasyonları çalıştırabieceğiniz çiflikler kurabilmeniz anlamına gelir.",
|
||||
"updated": 1636109149775
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Superalgos поддерживает распределения и координацию задач между сетями узлов, на которых работает Client! Это обеспечивает интеллектуальные и масштабные операции. Любая машина, на которой работает графический интерфейс, может управлять предприятием!",
|
||||
"updated": 1636747776256
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -118,9 +133,14 @@
|
||||
"language": "TR",
|
||||
"text": "Birkaç Raspberry Pi, endüstriyel düzeyde bir veri merkezi veya bunların arasında herhangi bir şey ile bir ağ kurabilirsiniz.",
|
||||
"updated": 1636109177686
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Вы можете настроить сеть с несколькими Raspberry Pi, центром обработки данных промышленного уровня или чем-то средним.",
|
||||
"updated": 1636747852002
|
||||
}
|
||||
],
|
||||
"updated": 1629821982211
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+21
-1
@@ -31,6 +31,11 @@
|
||||
"language": "TR",
|
||||
"text": "Superalgos'un en son sürümü, uygulama içinden Makine öğrenimi'nden (ML)yararlanmak için deneysel bir TensorFlow entegrasyonuna sahiptir!",
|
||||
"updated": 1636109475710
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Последняя версия Superalgos включает эксперементальную интеграцию TensorFlow \nдля использования ML из приложения!",
|
||||
"updated": 1636748037813
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -61,6 +66,11 @@
|
||||
"language": "TR",
|
||||
"text": "Entegrasyon, Superalgos'a özgü düğümlerin yapısında bir Öğrenme algoritması ( Supervised Learning ) ve Yapay Sinir Ağı ( Artificial Neural Network ) içeren bir NodeJS TensorFlow Kitaplığı tanımını eşler.",
|
||||
"updated": 1636109802947
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Интеграция отображает определение NodeJS TensorFlow Library с алгоритмом Supervised Learning и его Artificial Neural Network в той же структуре узлов, типичной для Superalgos.",
|
||||
"updated": 1636749421416
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -90,6 +100,11 @@
|
||||
"language": "TR",
|
||||
"text": "Entegrasyon, Superalgos altyapısından yararlanır, böylece veri kümelerinizi Makine öğrenimi (ML) algoritmalarını eğitmek için kullanabilir ve elde edilen modelleri ticaret sistemlerinizde kullanabilirsiniz!",
|
||||
"updated": 1636109892078
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Интеграция использует остальную инфраструктуру Superalgos, поэтому Вы можете использовать свои наборы данных для обучения алгоритмов ML и использовать полученные модели в торговых системах.",
|
||||
"updated": 1636749603540
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -119,8 +134,13 @@
|
||||
"language": "TR",
|
||||
"text": "Daha sonra, ML CrossCategoricalEntropy Demo Plugin Workspace'e bir göz atın!",
|
||||
"updated": 1636109933292
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Позже взгляните на ML CrossCategoricalEntropy Demo Plugin Workspace!",
|
||||
"updated": 1636749639894
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+18
-2
@@ -30,6 +30,11 @@
|
||||
"language": "TR",
|
||||
"text": "Arada bir \"Under Construction\" tabelası görürseniz şaşırmayın...",
|
||||
"updated": 1636110077834
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Не удивляйтесь, если Вы найдете над этой конструкцией знак \"Здесь и там\"...",
|
||||
"updated": 1636749753795
|
||||
}
|
||||
],
|
||||
"updated": 1622200773527
|
||||
@@ -60,6 +65,11 @@
|
||||
"language": "TR",
|
||||
"text": "Daha önce bahsettiğim gibi, Superalgos sürekli büyüyor ve gelecek sürüm için tasarlanan altyapı, gerekli düzeltmeler ve küçük iyileştirmelerle birlikte zaman zaman bir hizmet paketindeki mevcut sürümle birleştiriliyor.",
|
||||
"updated": 1636110110844
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Как я упоминал ранее, Superalgos постоянно растет и инфраструктура выстраивается для предстоящей версии, иногда может быть объединена с текущей версией в пакете обновления вместе с необходимыми исправлениями и незначительными улучшениями.",
|
||||
"updated": 1636749912452
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -88,8 +98,14 @@
|
||||
"language": "TR",
|
||||
"text": "Bir sonraki sürüm içeriğini öğrenebilmek için Telegram Grubumuza Katılın. https://t.me/superalgosdevelop",
|
||||
"updated": 1636119227691
|
||||
},
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Если Вам интересно, что готовится к предстоящему выпуску Superalgos, присоединяйтесь к группе в телеграмме SuperalgosDevelop.",
|
||||
"updated": 1636750362265
|
||||
}
|
||||
]
|
||||
],
|
||||
"updated": 1636750158168
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ function newFoundationsCodeEditorSpace() {
|
||||
sidePanelTab: undefined,
|
||||
container: undefined,
|
||||
editorPage: undefined,
|
||||
isVisible: undefined,
|
||||
reset: reset,
|
||||
openSpaceArea: openSpaceArea,
|
||||
physics: physics,
|
||||
draw: draw,
|
||||
@@ -23,15 +25,24 @@ function newFoundationsCodeEditorSpace() {
|
||||
return thisObject
|
||||
|
||||
function finalize() {
|
||||
thisObject.sidePanelTab = undefined
|
||||
if (isInitialized === false) { return }
|
||||
|
||||
thisObject.container.finalize()
|
||||
thisObject.container = undefined
|
||||
|
||||
|
||||
canvas.eventHandler.stopListening(browserResizedEventSubscriptionId)
|
||||
thisObject.sidePanelTab.container.eventHandler.stopListening(openingEventSubscriptionId)
|
||||
thisObject.sidePanelTab.container.eventHandler.stopListening(closingEventSubscriptionId)
|
||||
UI.projects.foundations.spaces.sideSpace.deleteSidePanelTab('Foundations', 'javascript-code', 'Code', 'right')
|
||||
|
||||
thisObject.editorPage.finalize()
|
||||
thisObject.editorPage = undefined
|
||||
|
||||
isInitialized = false
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
|
||||
thisObject.container = newContainer()
|
||||
thisObject.container.name = MODULE_NAME
|
||||
thisObject.container.initialize()
|
||||
@@ -43,10 +54,7 @@ function newFoundationsCodeEditorSpace() {
|
||||
resize()
|
||||
|
||||
thisObject.editorPage = newFoundationsCodeEditorEditorPage()
|
||||
thisObject.footer = newGovernanceReportsFooter() // Reuse simple footer
|
||||
|
||||
thisObject.editorPage.initialize()
|
||||
thisObject.footer.initialize()
|
||||
|
||||
thisObject.sidePanelTab = UI.projects.foundations.spaces.sideSpace.createSidePanelTab(thisObject.container, 'Foundations', 'javascript-code', 'Code', 'right')
|
||||
|
||||
@@ -66,6 +74,11 @@ function newFoundationsCodeEditorSpace() {
|
||||
thisObject.editorPage.render(originatingNode, codeEditorType)
|
||||
}
|
||||
|
||||
function reset() {
|
||||
finalize()
|
||||
initialize()
|
||||
}
|
||||
|
||||
function physics() {
|
||||
if (isInitialized === false) {
|
||||
return
|
||||
@@ -92,11 +105,11 @@ function newFoundationsCodeEditorSpace() {
|
||||
}
|
||||
|
||||
function onOpening() {
|
||||
|
||||
thisObject.isVisible = true
|
||||
}
|
||||
|
||||
function onClosing() {
|
||||
|
||||
thisObject.isVisible = false
|
||||
}
|
||||
|
||||
function draw() {
|
||||
|
||||
@@ -3,6 +3,7 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
originatingNode: undefined,
|
||||
editorType: undefined,
|
||||
render: render,
|
||||
reset:reset,
|
||||
initialize: initialize,
|
||||
finalize: finalize
|
||||
}
|
||||
@@ -10,9 +11,10 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
let monacoInitialized = false
|
||||
let monacoEditor = undefined
|
||||
let codeString = ''
|
||||
let stringObjects = []
|
||||
let tradingEngineObj = undefined
|
||||
let recordFormulasObj = {}
|
||||
let chartObj = {}
|
||||
let chartMarketExchangeObj = {}
|
||||
|
||||
return thisObject
|
||||
|
||||
@@ -27,13 +29,19 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
monacoInitialized = false
|
||||
monacoEditor = undefined
|
||||
codeString = ''
|
||||
stringObjects = []
|
||||
tradingEngineObj = undefined
|
||||
recordFormulasObj = {}
|
||||
chartMarketExchangeObj = {}
|
||||
thisObject.originatingNode = undefined
|
||||
thisObject.editorType = undefined
|
||||
|
||||
}
|
||||
|
||||
function reset() {
|
||||
finalize()
|
||||
initialize()
|
||||
}
|
||||
|
||||
function render(originatingNode, editorType) {
|
||||
|
||||
@@ -56,7 +64,7 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
function initMonacoEditor() {
|
||||
if (monacoEditor === undefined) {
|
||||
document.getElementById('no-content').remove()
|
||||
document.getElementById('code-path').insertAdjacentHTML('afterend',`<div class="docs-summary"><b>Notes:</b> Changes are saved automatically</div>`)
|
||||
document.getElementById('code-path').insertAdjacentHTML('afterend', `<div class="docs-summary"><b>Notes:</b> Changes are saved automatically</div>`)
|
||||
monacoEditor = monaco.editor.create(document.querySelector('#editor'), {
|
||||
model: null,
|
||||
theme: 'vs-dark',
|
||||
@@ -67,7 +75,7 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
monaco.editor.createModel(codeString, "javascript")
|
||||
createAutocompletionFor(tradingEngineObj)
|
||||
createAutocompletionFor(recordFormulasObj)
|
||||
createAutocompletionFor(chartObj)
|
||||
createAutocompletionFor(chartMarketExchangeObj)
|
||||
|
||||
monaco.languages.typescript.javascriptDefaults.setEagerModelSync(true)
|
||||
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
|
||||
@@ -116,7 +124,7 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
return (isMember) ? monaco.languages.CompletionItemKind.Method : monaco.languages.CompletionItemKind.Function;
|
||||
|
||||
default:
|
||||
return (isMember) ? monaco.languages.CompletionItemKind.Property : monaco.languages.CompletionItemKind.Variable;
|
||||
return monaco.languages.CompletionItemKind.Variable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +175,6 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
return result[0] = '';
|
||||
}
|
||||
}
|
||||
prefix += '.';
|
||||
}
|
||||
|
||||
// Get all the child properties of the last token
|
||||
@@ -212,13 +219,19 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
/**
|
||||
* The autocomplete models will be based on:
|
||||
* 1. Existing code in the data mines -> we will create models for each code node (it's like opening multiple files in vscode)
|
||||
* 2. Formulas from data mines by creating an object representation of all formulas see implementation below than passing it to the monaco registerCompletionItemProvider
|
||||
* 2. Formulas from data mines by creating an object representation of all formulas see implementation below then passing it to the monaco registerCompletionItemProvider
|
||||
* 2. Trading engine loaded into the workspace - we create an obj. representation using getProtocolNode and we are using monaco registerCompletionItemProvider
|
||||
*
|
||||
*/
|
||||
function buildIntelliSenseModels() {
|
||||
|
||||
|
||||
let chartObjectPrefix = 'chart.'
|
||||
let marketPrefix = 'market.'
|
||||
let exchangePrefix = 'exchange.'
|
||||
let dot = '.'
|
||||
let numberOfPreviousSuffixes = 5
|
||||
|
||||
UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes.forEach(node => {
|
||||
if (node.type === 'Data Mine') {
|
||||
// Getting all the Javascript code nodes into one single model
|
||||
@@ -266,19 +279,13 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
let validTimeFrames = UI.projects.visualScripting.utilities.nodeConfig.loadConfigProperty(dataset.payload, 'validTimeFrames')
|
||||
if (validTimeFrames !== undefined) {
|
||||
validTimeFrames.forEach(tf => {
|
||||
let prop = 'chart.at' + tf.replace('-', '') + '.' + productName + '.' + propertyName
|
||||
// This will let us to enhance the autocomplete logic to add as many previous kids as we want to
|
||||
let propWithPrevious = 'chart.at' + tf.replace('-', '') + '.previous.' + productName + '.' + propertyName
|
||||
let propWithTwoPrevious = 'chart.at' + tf.replace('-', '') + '.previous.previous.' + productName + '.' + propertyName
|
||||
let propWithThreePrevious = 'chart.at' + tf.replace('-', '') + '.previous.previous.previous.' + productName + '.' + propertyName
|
||||
let propWithFourPrevious = 'chart.at' + tf.replace('-', '') + '.previous.previous.previous.previous.' + productName + '.' + propertyName
|
||||
let propWithFivePrevious = 'chart.at' + tf.replace('-', '') + '.previous.previous.previous.previous.previous.' + productName + '.' + propertyName
|
||||
objectMerge(chartObj, prop.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
objectMerge(chartObj, propWithPrevious.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
objectMerge(chartObj, propWithTwoPrevious.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
objectMerge(chartObj, propWithThreePrevious.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
objectMerge(chartObj, propWithFourPrevious.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
objectMerge(chartObj, propWithFivePrevious.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
let timeFrame = 'at' + tf.replace('-', '')
|
||||
|
||||
stringObjects.push(chartObjectPrefix + timeFrame + '.' + productName + '.' + propertyName)
|
||||
for (let i = 1; i <= numberOfPreviousSuffixes; i++) {
|
||||
stringObjects.push(chartObjectPrefix + timeFrame + getPreviousSuffixTimes(i) + productName + dot + propertyName)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
@@ -318,6 +325,36 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
}
|
||||
})
|
||||
|
||||
// Enrich chart data with market and exchange structure
|
||||
UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes.forEach(node => {
|
||||
if (node.type === 'Crypto Ecosystem') {
|
||||
node.cryptoExchanges.forEach(cxs => {
|
||||
cxs.exchanges.forEach(exchange => {
|
||||
let exchangeName = UI.projects.visualScripting.utilities.nodeConfig.loadConfigProperty(exchange.payload, 'codeName')
|
||||
exchange.exchangeMarkets.markets.forEach(market => {
|
||||
let marketPair = UI.projects.visualScripting.utilities.nodeConfig.loadConfigProperty(market.payload, 'codeName')
|
||||
let baseAsset = marketPair.split('/')[0]
|
||||
let quotedAsset = marketPair.split('/')[1]
|
||||
stringObjects.forEach(chartObj => {
|
||||
/**
|
||||
* We will provide auto-complete only for assets pair found in Markets
|
||||
* Doing so we will avoid providing completion for assets that are not used in a market
|
||||
*/
|
||||
let market = marketPrefix + baseAsset + dot + quotedAsset + dot + chartObj
|
||||
stringObjects.push(market)
|
||||
stringObjects.push(exchangePrefix + exchangeName + dot + market)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
//Actually building the objects for chart, market and exchange, no need for multiple objects, as one is enough for the autocomplete to work
|
||||
stringObjects.forEach(stringRepresentation => {
|
||||
objectMerge(chartMarketExchangeObj, stringRepresentation.split('.').reduceRight((o, x) => ({[x]: o}), ""))
|
||||
})
|
||||
|
||||
|
||||
function objectMerge(target, source) {
|
||||
for (const key of Object.keys(source)) {
|
||||
@@ -340,6 +377,20 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
return target;
|
||||
}
|
||||
|
||||
function getPreviousSuffixTimes(number) {
|
||||
let result = ''
|
||||
let previousString = 'previous.'
|
||||
let dotString = '.'
|
||||
for (let i = 0; i < number; i++) {
|
||||
if (i === 0) {
|
||||
result += dotString
|
||||
}
|
||||
result += previousString
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function buildEditorHTML() {
|
||||
@@ -363,7 +414,7 @@ function newFoundationsCodeEditorEditorPage() {
|
||||
function footer() {
|
||||
let HTML = ''
|
||||
|
||||
HTML += HTML + '<div id="governance-footer" class="governance-node-html-footer-container">' // Container Starts
|
||||
HTML += '<div id="governance-footer" class="governance-node-html-footer-container">' // Container Starts
|
||||
|
||||
// Buttons Section
|
||||
|
||||
|
||||
@@ -343,6 +343,7 @@ function newWorkspace() {
|
||||
|
||||
UI.projects.education.spaces.docsSpace.sidePanelTab.close()
|
||||
UI.projects.foundations.spaces.workspaceSpace.sidePanelTab.close()
|
||||
UI.projects.foundations.spaces.codeEditorSpace.sidePanelTab.close()
|
||||
UI.projects.foundations.spaces.floatingSpace.inMapMode = true
|
||||
workingAtTask = 2
|
||||
break
|
||||
@@ -446,7 +447,7 @@ function newWorkspace() {
|
||||
|
||||
UI.projects.governance.spaces.reportsSpace.reset()
|
||||
UI.projects.governance.spaces.userProfileSpace.reset()
|
||||
|
||||
UI.projects.foundations.spaces.codeEditorSpace.reset()
|
||||
await UI.projects.education.spaces.docsSpace.reset()
|
||||
await UI.projects.education.spaces.tutorialSpace.reset()
|
||||
|
||||
@@ -704,6 +705,9 @@ function newWorkspace() {
|
||||
executeAction({ node: droppedNode, name: 'Create UI Object', project: 'Visual-Scripting', extraParameter: positionOffset })
|
||||
executeAction({ name: 'Connect Children to Reference Parents', project: 'Visual-Scripting' })
|
||||
|
||||
// Recreate autocomplete models
|
||||
UI.projects.foundations.spaces.codeEditorSpace.editorPage.reset()
|
||||
|
||||
droppedNode = undefined
|
||||
} catch (err) {
|
||||
if (ERROR_LOG === true) { logger.write('[ERROR] spawn -> err = ' + err.stack) }
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
* Entire functionality is provided by CodeEditor Space
|
||||
*/
|
||||
function newCodeEditor() {
|
||||
const MODULE_NAME = 'Code Editor'
|
||||
|
||||
let thisObject = {
|
||||
activate: activate,
|
||||
@@ -14,11 +13,6 @@ function newCodeEditor() {
|
||||
|
||||
return thisObject
|
||||
|
||||
|
||||
function finalize() {
|
||||
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
* Entire functionality is provided by CodeEditor Space
|
||||
*/
|
||||
function newConfigEditor() {
|
||||
const MODULE_NAME = 'Config Editor'
|
||||
|
||||
let thisObject = {
|
||||
activate: activate,
|
||||
@@ -15,10 +14,6 @@ function newConfigEditor() {
|
||||
return thisObject
|
||||
|
||||
|
||||
function finalize() {
|
||||
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
* Entire functionality is provided by CodeEditor Space
|
||||
*/
|
||||
function newFormulaEditor() {
|
||||
const MODULE_NAME = 'Formula Editor'
|
||||
|
||||
let thisObject = {
|
||||
activate: activate,
|
||||
@@ -15,10 +14,6 @@ function newFormulaEditor() {
|
||||
return thisObject
|
||||
|
||||
|
||||
function finalize() {
|
||||
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ function newFoundationsTopSpace() {
|
||||
logoImage = new Image()
|
||||
|
||||
loadImage('superalgos-header-background', backgroundImage)
|
||||
loadImage('sa-beta12-logo-horiz-dark', logoImage)
|
||||
loadImage('sa-v10-logo-horiz-dark', logoImage)
|
||||
|
||||
function loadImage(name, image) {
|
||||
const PATH = 'Images/'
|
||||
|
||||
@@ -0,0 +1,619 @@
|
||||
{
|
||||
"type": "User Profile",
|
||||
"name": "JasonDeSouza",
|
||||
"config": "{\"signature\":{\"message\":\"JasonDeSouza\",\"messageHash\":\"0x479f72be9636bd4657cf69e20e7bf9792498402fafe6b6d84fb17624fa00f01b\",\"v\":\"0x1b\",\"r\":\"0x1178553e0ca9e2deabf417ddbfd72bd7b2b24df6b915e59f9a1ec61b8a4dd75c\",\"s\":\"0x7e45104055427252b1fa465a3a66e23cd1bed614eca8ae7047db4785ca6afbc0\",\"signature\":\"0x1178553e0ca9e2deabf417ddbfd72bd7b2b24df6b915e59f9a1ec61b8a4dd75c7e45104055427252b1fa465a3a66e23cd1bed614eca8ae7047db4785ca6afbc01b\"},\"codeName\":\"JasonDeSouza\"}",
|
||||
"project": "Governance",
|
||||
"tokenPowerSwitch": {
|
||||
"type": "Token Power Switch",
|
||||
"name": "New Token Power Switch",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokenPowerSwitch": [],
|
||||
"onboardingPrograms": {
|
||||
"type": "Onboarding Programs",
|
||||
"name": "New Onboarding Programs",
|
||||
"config": "{\n \"percentage\": 0\n }",
|
||||
"project": "Governance",
|
||||
"airdropProgram": {
|
||||
"type": "Airdrop Program",
|
||||
"name": "New Airdrop Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "f110c342-61d3-4a6c-867e-cc10a252de5c",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4497.826086956522,
|
||||
"y": 27620.577136594
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4647.826086956522,
|
||||
"y": 27880.384757729335
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "9a58486c-7829-4f71-a9b3-ff944b077d31",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4647.826086956522,
|
||||
"y": 27880.384757729335
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28140.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"githubProgram": {
|
||||
"type": "Github Program",
|
||||
"name": "New Github Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "c0a783e3-b9f4-4da3-a02b-55437190dd49",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5397.826086956522,
|
||||
"y": 28140.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 5097.826086956522,
|
||||
"y": 28140.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "4012d361-f9d1-49c4-89c2-591a508b6392",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5097.826086956522,
|
||||
"y": 28140.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28140.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "ce0ff7b8-9c7d-44f6-bc44-ed442f702560",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28140.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4647.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"communityBuildingPrograms": {
|
||||
"type": "Community Building Programs",
|
||||
"name": "New Community Building Programs",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"referralProgram": {
|
||||
"type": "Referral Program",
|
||||
"name": "New Referral Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userReferrers": [
|
||||
{
|
||||
"type": "User Referrer",
|
||||
"name": "Raplh2502",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "202d991f-be8f-4d44-a29c-079bb0a429dd",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5135.27942162261,
|
||||
"y": 28220.02987324861
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 5057.633708091854,
|
||||
"y": 28509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Raplh2502",
|
||||
"id": "b6d4c2fe-f1ec-4d05-9897-c6bf0571c4f3"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Raplh2502",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "cfaf8545-2c1d-4663-9c1c-04b898c56e04",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5317.441329227186,
|
||||
"y": 28359.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 5057.633708091854,
|
||||
"y": 28509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "3506b5b8-6930-4c44-a143-2cae7d6cba06",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5347.411455978574,
|
||||
"y": 28587.45333466609
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 5057.633708091854,
|
||||
"y": 28509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "9cbd39ea-833a-4451-8994-df8d103ae5b2",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5057.633708091854,
|
||||
"y": 28509.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"supportProgram": {
|
||||
"type": "Support Program",
|
||||
"name": "New Support Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userSupporters": [
|
||||
{
|
||||
"type": "User Supporter",
|
||||
"name": "Raplh2502",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "5063f487-4531-4b92-a776-1065d3a1fbdb",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5237.603834843242,
|
||||
"y": 28997.260955801423
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4947.826086956522,
|
||||
"y": 28919.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Raplh2502",
|
||||
"id": "b6d4c2fe-f1ec-4d05-9897-c6bf0571c4f3"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Raplh2502",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "5c695947-d5df-4620-b658-a455a6d3f46b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 5097.826086956522,
|
||||
"y": 29179.422863406
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4947.826086956522,
|
||||
"y": 28919.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "b7b4459c-5ced-4157-818d-653dd24136af",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4870.1803734257655,
|
||||
"y": 29209.392990157387
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4947.826086956522,
|
||||
"y": 28919.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "f69bc41a-b13e-46e9-a497-afe5eaf6362f",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4947.826086956522,
|
||||
"y": 28919.615242270665
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"mentorshipProgram": {
|
||||
"type": "Mentorship Program",
|
||||
"name": "New Mentorship Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userMentors": [
|
||||
{
|
||||
"type": "User Mentor",
|
||||
"name": "Raplh2502",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "c4e606cf-4995-4eec-a946-3ae3930f6c4a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4460.372752290434,
|
||||
"y": 29099.585369022054
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4538.01846582119,
|
||||
"y": 28809.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Raplh2502",
|
||||
"id": "b6d4c2fe-f1ec-4d05-9897-c6bf0571c4f3"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Raplh2502",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "866c00f4-4696-499b-966e-e2333cd229f3",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4278.210844685858,
|
||||
"y": 28959.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4538.01846582119,
|
||||
"y": 28809.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "4ab5ad3b-f523-4069-bdbe-73e48a9e455b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4248.24071793447,
|
||||
"y": 28732.161907604575
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4538.01846582119,
|
||||
"y": 28809.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "00aa87c7-97d3-4583-856c-ef54563c0f8d",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4538.01846582119,
|
||||
"y": 28809.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "ece481a5-b55b-40e9-85a6-ed152a75a1a2",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4797.826086956522,
|
||||
"y": 28659.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4647.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "e2c35622-a37b-40e1-b9f5-d3c0a57903c7",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4647.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4347.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensMined": {
|
||||
"type": "Tokens Mined",
|
||||
"name": "New Tokens Mined",
|
||||
"project": "Governance",
|
||||
"id": "e8914cd2-6e2b-46fd-ad3a-d0633b639194",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4047.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4347.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "642bc2e8-044d-46ca-87a9-200467f5154e",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 4347.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 4347.826086956522,
|
||||
"y": 28400
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17236,7 +17236,7 @@
|
||||
"signingAccountChild": {
|
||||
"type": "P2P Network Node",
|
||||
"name": "P2P Network Node # 1",
|
||||
"config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18042\"\n}",
|
||||
"config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18042\",\n \"webPort\": \"31248\"\n}",
|
||||
"project": "Governance",
|
||||
"id": "bb0f0417-9dfb-47a3-941f-dcfa82fbaea1",
|
||||
"savedPayload": {
|
||||
@@ -17292,7 +17292,7 @@
|
||||
"signingAccountChild": {
|
||||
"type": "P2P Network Node",
|
||||
"name": "P2P Network Node # 2",
|
||||
"config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18043\"\n}",
|
||||
"config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18043\",\n \"webPort\": \"31248\"\n}",
|
||||
"project": "Governance",
|
||||
"id": "76fa8a24-9ab4-4eaf-82f2-458ba557b204",
|
||||
"savedPayload": {
|
||||
@@ -17348,7 +17348,7 @@
|
||||
"signingAccountChild": {
|
||||
"type": "P2P Network Node",
|
||||
"name": "P2P Network Node # 3",
|
||||
"config": "{\n \"codeName\": \"P2P-Network-Node-3\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18044\"\n}",
|
||||
"config": "{\n \"codeName\": \"P2P-Network-Node-3\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"18044\",\n \"webPort\": \"31248\"\n}",
|
||||
"project": "Governance",
|
||||
"id": "297e57c2-3c1a-4170-b710-d2705804205b",
|
||||
"savedPayload": {
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -23,15 +23,15 @@
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "fadb430d-3b64-49db-8025-3a4c9ad6d643",
|
||||
"id": "887d3aed-0bd1-491b-8c19-86d462797019",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14593.000000000002,
|
||||
"y": 5291.443065262876
|
||||
"x": 13799.000000000002,
|
||||
"y": 5123.635444127544
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14443.000000000002,
|
||||
"y": 5551.250686398208
|
||||
"x": 13949.000000000002,
|
||||
"y": 5383.443065262876
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -46,15 +46,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "1a3e3e9c-f561-4371-91a8-0567fc9be15a",
|
||||
"id": "8af67f19-3406-4f1f-9dbd-ae5ae6ddc2de",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14443.000000000002,
|
||||
"y": 5551.250686398208
|
||||
"x": 13949.000000000002,
|
||||
"y": 5383.443065262876
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14293.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 14099.000000000002,
|
||||
"y": 5643.250686398208
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -78,15 +78,15 @@
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "1923cf8d-1b92-40a1-ad9f-bc8b2e470d13",
|
||||
"id": "26e414c9-b056-4913-8174-f0ce00509318",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14593.000000000002,
|
||||
"y": 6330.6735498042035
|
||||
"x": 14699.000000000002,
|
||||
"y": 5643.250686398208
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14443.000000000002,
|
||||
"y": 6070.865928668872
|
||||
"x": 14399.000000000002,
|
||||
"y": 5643.250686398208
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -101,15 +101,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "780fba83-3015-4331-a4df-d6896f4e93c7",
|
||||
"id": "0034f78a-6f45-4f72-a738-e4498657fa4b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14443.000000000002,
|
||||
"y": 6070.865928668872
|
||||
"x": 14399.000000000002,
|
||||
"y": 5643.250686398208
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14293.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 14099.000000000002,
|
||||
"y": 5643.250686398208
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -124,15 +124,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "78bc0c92-a129-4d1a-97b5-e23dbfe614c4",
|
||||
"id": "3faced00-65f6-4a65-b60c-d4f7730041fa",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14293.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 14099.000000000002,
|
||||
"y": 5643.250686398208
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13993.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13949.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -147,15 +147,238 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "d7b5bc8b-3949-4eef-bc85-a91fa6b60576",
|
||||
"communityBuildingPrograms": {
|
||||
"type": "Community Building Programs",
|
||||
"name": "New Community Building Programs",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"referralProgram": {
|
||||
"type": "Referral Program",
|
||||
"name": "New Referral Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userReferrers": [
|
||||
{
|
||||
"type": "User Referrer",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "2a8aae14-f444-4c92-b121-948b31632f04",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14399.000000000002,
|
||||
"y": 5862.865928668872
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14399.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "a8aa0bd9-a20d-4564-9a9f-574820ecff3a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14699.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14399.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "b6155f25-ac26-4beb-a0bc-6a88a3b222b6",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14399.000000000002,
|
||||
"y": 6462.865928668872
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14399.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "4d3c4aa1-be4d-4d53-908f-2f7050d06649",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14399.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14099.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"supportProgram": {
|
||||
"type": "Support Program",
|
||||
"name": "New Support Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userSupporters": [],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "631d7aa4-3e5c-4778-a794-bbcff354b9a8",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14099.000000000002,
|
||||
"y": 6682.481170939535
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13949.000000000002,
|
||||
"y": 6422.6735498042035
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "76d1f2d4-f1ec-4315-92cc-22a5fe10b402",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13649.000000000002,
|
||||
"y": 6422.6735498042035
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13949.000000000002,
|
||||
"y": 6422.6735498042035
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "a55d9360-9e6b-47d5-8946-258d42d57aeb",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13949.000000000002,
|
||||
"y": 6422.6735498042035
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14099.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "d7b73568-ad0f-4d53-bc22-b21732e47191",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14099.000000000002,
|
||||
"y": 6162.865928668872
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13949.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "bfcd5faf-d1cd-4f52-8b75-3b4d8fd80fc5",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13993.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13949.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13693.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13649.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -174,15 +397,15 @@
|
||||
"type": "Tokens Mined",
|
||||
"name": "New Tokens Mined",
|
||||
"project": "Governance",
|
||||
"id": "c0055dab-08de-4cc0-a1aa-472d9d6afc5f",
|
||||
"id": "fc36ec93-af4e-4d5a-8e3b-5a02d4d1192b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13393.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13349.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13693.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13649.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -197,15 +420,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "eb948dc1-0071-4704-8fc3-7aa7d5bd2302",
|
||||
"id": "6b027e4e-32c9-4847-8f74-90aac9c738c0",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13693.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13649.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13693.000000000002,
|
||||
"y": 5811.05830753354
|
||||
"x": 13649.000000000002,
|
||||
"y": 5903.05830753354
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{ \n\"codeName\": \"localhost\", \n\"host\": \"localhost\", \n\"webSocketsPort\": \"18042\"\n}"
|
||||
"config": "{ \n\"codeName\": \"localhost\", \n\"host\": \"localhost\", \n\"webPort\": \"31248\", \n\"webSocketsPort\": \"18042\"\n}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
|
||||
@@ -8,7 +8,7 @@ function newGovernanceGlobalsSaToken() {
|
||||
SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BNB_CONTRACT_ADDRESS: '0xd4a05523839d0d175289054022ee4e01e3dae854',
|
||||
SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BUSD_CONTRACT_ADDRESS: '0xf9e8ce74058d872f7688665885826c3d5e1d0a27',
|
||||
SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_ETH_CONTRACT_ADDRESS: '0x4f25B8aB3f8c66Ce4C507C058B7040F6d58202b4',
|
||||
SA_TOKEN_BSC_PANCAKE_LIQUIDITY_ASSETS: ['BTCB', 'BNB', 'BUSD']
|
||||
SA_TOKEN_BSC_PANCAKE_LIQUIDITY_ASSETS: ['BTCB', 'BNB', 'BUSD', 'ETH']
|
||||
}
|
||||
return thisObject
|
||||
}
|
||||
@@ -161,7 +161,7 @@ function newGovernanceUserProfileSpace() {
|
||||
if (tokenTransfers.length > 9000) {
|
||||
console.log('[WARN] The total amount of BSC SA Token transfers is above 9000. After 10k this method will need pagination or otherwise users will not get their reputation calculated correctly.')
|
||||
} else {
|
||||
console.log('[INFO] ' + tokenTransfers.length + ' reputation trasactions found at the blockchain. ')
|
||||
console.log('[INFO] ' + tokenTransfers.length + ' reputation transactions found at the blockchain. ')
|
||||
}
|
||||
waitingForResponses--
|
||||
}).catch(function (err) {
|
||||
@@ -446,89 +446,91 @@ function newGovernanceUserProfileSpace() {
|
||||
userProfile.payload.liquidityTokens = {
|
||||
BTCB: 0,
|
||||
BNB: 0,
|
||||
BUSD: 0
|
||||
BUSD: 0,
|
||||
ETH: 0
|
||||
}
|
||||
|
||||
waitingForResponses++
|
||||
waitingForResponses++
|
||||
waitingForResponses++
|
||||
waitingForResponses++
|
||||
setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 6 * 1, userProfile, blockchainAccount, 'BTCB', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BTCB_CONTRACT_ADDRESS)
|
||||
setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 6 * 2, userProfile, blockchainAccount, 'BNB', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BNB_CONTRACT_ADDRESS)
|
||||
setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 6 * 3, userProfile, blockchainAccount, 'BUSD', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BUSD_CONTRACT_ADDRESS)
|
||||
setTimeout(getBPancakeTokens, BSC_SCAN_RATE_LIMIT_DELAY / 6 * 4, userProfile, blockchainAccount, 'ETH', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_ETH_CONTRACT_ADDRESS)
|
||||
getBPancakeTokens(userProfile, blockchainAccount, 'BTCB', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BTCB_CONTRACT_ADDRESS)
|
||||
getBPancakeTokens(userProfile, blockchainAccount, 'BNB', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BNB_CONTRACT_ADDRESS)
|
||||
getBPancakeTokens(userProfile, blockchainAccount, 'BUSD', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_BUSD_CONTRACT_ADDRESS)
|
||||
getBPancakeTokens(userProfile, blockchainAccount, 'ETH', UI.projects.governance.globals.saToken.SA_TOKEN_BSC_PANCAKE_LIQUIDITY_POOL_ETH_CONTRACT_ADDRESS)
|
||||
|
||||
/*
|
||||
Now we get the SA Tokens Balance.
|
||||
*/
|
||||
waitingForResponses++
|
||||
setTimeout(getBlockchainTokens, BSC_SCAN_RATE_LIMIT_DELAY / 6 * 5, userProfile, blockchainAccount)
|
||||
getBlockchainTokens(userProfile, blockchainAccount)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getBlockchainTokens(userProfile, blockchainAccount) {
|
||||
console.log('[INFO] Loading Blockachain Balance for User Profile: ', userProfile.name, 'blockchainAccount: ', blockchainAccount)
|
||||
const url = "https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=" + UI.projects.governance.globals.saToken.SA_TOKEN_BSC_CONTRACT_ADDRESS + "&address=" + blockchainAccount + "&tag=latest&apikey=YourApiKeyToken"
|
||||
console.log('[INFO] Loading Blockchain Balance for User Profile: ', userProfile.name, 'blockchainAccount: ', blockchainAccount)
|
||||
|
||||
fetch(url).then(function (response) {
|
||||
return response.json();
|
||||
}).then(function (data) {
|
||||
let request = {
|
||||
url: 'WEB3',
|
||||
params: {
|
||||
method: "getUserWalletBalance",
|
||||
walletAddress: blockchainAccount,
|
||||
contractAddress: UI.projects.governance.globals.saToken.SA_TOKEN_BSC_CONTRACT_ADDRESS
|
||||
}
|
||||
}
|
||||
|
||||
httpRequest(JSON.stringify(request.params), request.url, onResponse)
|
||||
|
||||
function onResponse(err, data) {
|
||||
userProfile.payload.bloackchainBalancesLoading = false
|
||||
userProfile.payload.isLoading = false
|
||||
if (data.result === "Max rate limit reached, please use API Key for higher rate limit") {
|
||||
if (err.result === GLOBAL.DEFAULT_FAIL_RESPONSE) {
|
||||
console.log('[WARN] Error fetching blockchain tokens of user profile ' + userProfile.name)
|
||||
userProfile.payload.blockchainTokens = undefined
|
||||
} else {
|
||||
userProfile.payload.uiObject.setInfoMessage('Blockchan Balance Succesfully Loaded.',
|
||||
let commandResponse = JSON.parse(data)
|
||||
if (commandResponse.result !== "Ok") {
|
||||
console.log('[WARN] Web3 Error fetching blockchain tokens of user profile ' + userProfile.name)
|
||||
return
|
||||
}
|
||||
userProfile.payload.uiObject.setInfoMessage('Blockchain Balance Successfully Loaded.',
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
userProfile.payload.blockchainTokens = Number(data.result) / 1000000000000000000
|
||||
userProfile.payload.blockchainTokens = Number(commandResponse.balance)
|
||||
console.log('[INFO] SA Balance of ' + userProfile.name + ' is ', userProfile.payload.blockchainTokens)
|
||||
userProfile.payload.reputation = Math.min(reputationByAddress.get(blockchainAccount.toLowerCase()) | 0, userProfile.payload.blockchainTokens)
|
||||
console.log('[INFO] Reputation of ' + userProfile.name + ' is ', userProfile.payload.reputation)
|
||||
}
|
||||
waitingForResponses--
|
||||
}).catch(function (err) {
|
||||
const message = err.message + ' - ' + 'Can not access BSC SCAN servers.'
|
||||
console.log(message)
|
||||
if (userProfile.payload !== undefined) {
|
||||
userProfile.payload.uiObject.setErrorMessage(message,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
}
|
||||
waitingForResponses--
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getBPancakeTokens(userProfile, blockchainAccount, asset, marketContract) {
|
||||
console.log('[INFO] Loading Pancake Balance for User Profile: ', userProfile.name, 'blockchainAccount: ', blockchainAccount, 'asset: ', asset)
|
||||
const url = "https://api.bscscan.com/api?module=account&action=tokenbalance&contractaddress=" + marketContract + "&address=" + blockchainAccount + "&tag=latest&apikey=YourApiKeyToken"
|
||||
|
||||
fetch(url).then(function (response) {
|
||||
return response.json();
|
||||
}).then(function (data) {
|
||||
//console.log(data)
|
||||
if (data.result === "Max rate limit reached, please use API Key for higher rate limit") {
|
||||
console.log('[WARN] Rate Limit Reached fetching liquidity tokens for asset ' + asset + ' of user profile ' + userProfile.name)
|
||||
let request = {
|
||||
url: 'WEB3',
|
||||
params: {
|
||||
method: "getUserWalletBalance",
|
||||
walletAddress: blockchainAccount,
|
||||
contractAddress: marketContract
|
||||
}
|
||||
}
|
||||
|
||||
httpRequest(JSON.stringify(request.params), request.url, onResponse)
|
||||
|
||||
function onResponse(err, data) {
|
||||
if (err.result === GLOBAL.DEFAULT_FAIL_RESPONSE) {
|
||||
console.log('[WARN] Error fetching liquidity tokens for asset ' + asset + ' of user profile ' + userProfile.name)
|
||||
userProfile.payload.blockchainTokens = undefined
|
||||
} else {
|
||||
userProfile.payload.uiObject.setInfoMessage('Pancake Balance Succesfully Loaded for asset ' + asset,
|
||||
let commandResponse = JSON.parse(data)
|
||||
if (commandResponse.result !== "Ok") {
|
||||
console.log('[WARN] Web3 Error fetching liquidity tokens for asset ' + asset + ' of user profile ' + userProfile.name)
|
||||
return
|
||||
}
|
||||
userProfile.payload.uiObject.setInfoMessage('Pancake Balance Successfully Loaded for asset ' + asset,
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
userProfile.payload.liquidityTokens[asset] = Number(data.result) / 1000000000000000000
|
||||
userProfile.payload.liquidityTokens[asset] = Number(commandResponse.balance)
|
||||
console.log('[INFO] Liquidity of ' + userProfile.name + ' for asset ' + asset + ' is ', userProfile.payload.liquidityTokens[asset])
|
||||
}
|
||||
waitingForResponses--
|
||||
}).catch(function (err) {
|
||||
const message = err.message + ' - ' + 'Can not access BSC SCAN servers.'
|
||||
console.log(message)
|
||||
if (userProfile.payload !== undefined) {
|
||||
userProfile.payload.uiObject.setErrorMessage(message,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
}
|
||||
waitingForResponses--
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,12 +4,14 @@ exports.newNetworkGlobalsMemory = function () {
|
||||
*/
|
||||
let thisObject = {
|
||||
maps: {
|
||||
EVENTS: new Map() // This is the registry of all events received that prevents processing them more than once.
|
||||
EVENTS: new Map(), // This is the registry of all events received that prevents processing them more than once.
|
||||
SIGNALS: new Map() // This is the registry of all signals received that prevents processing them more than once.
|
||||
},
|
||||
arrays: {
|
||||
NETWORK_CLIENTS: [], // These are the Network Clients connected to this Network Node ordered by Ranking.
|
||||
NETWORK_PEERS: [], // These are the Network Peers connected to this Network Node ordered by Ranking.
|
||||
EVENTS: [] // This is the registry of all events in order that prevents ordering them more than once.
|
||||
EVENTS: [], // This is the registry of all events in order that prevents ordering them more than once.
|
||||
SIGNALS: [] // This is the registry of all signals in order that prevents ordering them more than once.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
exports.newNetworkModulesHttpInterface = function newNetworkModulesHttpInterface() {
|
||||
/*
|
||||
This module represent the HTTP API of the
|
||||
NNetwork Node. All HTTP request are processed
|
||||
by this module.
|
||||
*/
|
||||
let thisObject = {
|
||||
initialize: initialize,
|
||||
finalize: finalize
|
||||
}
|
||||
|
||||
return thisObject
|
||||
|
||||
function finalize() {
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
let port = JSON.parse(NT.networkNode.p2pNetworkNode.node.config).webPort
|
||||
/*
|
||||
We will create an HTTP Server and leave it running forever.
|
||||
*/
|
||||
SA.nodeModules.http.createServer(onHttpRequest).listen(port)
|
||||
}
|
||||
|
||||
async function onHttpRequest(httpRequest, httpResponse) {
|
||||
try {
|
||||
let requestPathAndParameters = httpRequest.url.split('?') // Remove version information
|
||||
let requestPath = requestPathAndParameters[0].split('/')
|
||||
let endpointOrFile = requestPath[1]
|
||||
|
||||
switch (endpointOrFile) {
|
||||
case 'Signal':
|
||||
{
|
||||
let message = requestPath[2]
|
||||
let response = await thisObject.clientInterface.messageReceived(message)
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(response), httpResponse)
|
||||
}
|
||||
break
|
||||
case 'Stats':
|
||||
{
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify([]), httpResponse)
|
||||
}
|
||||
break
|
||||
default:
|
||||
{
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err.stack)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -573,7 +573,7 @@
|
||||
"functionName": "newFoundationsCodeEditorSpace",
|
||||
"animationPhysicsIndex": 8,
|
||||
"animationDrawIndex": 8,
|
||||
"onMouseWheelIndex": 5,
|
||||
"onMouseWheelIndex": 7,
|
||||
"onMouseOverIndex": 6,
|
||||
"onMouseClickIndex": 8,
|
||||
"onMouseDownIndex": 8
|
||||
@@ -1389,6 +1389,12 @@
|
||||
"propertyName": "webSocketsInterface",
|
||||
"functionName": "newNetworkModulesWebSocketsInterface",
|
||||
"fileName": "WebSocketsInterface.js"
|
||||
},
|
||||
{
|
||||
"name": "Http Interface",
|
||||
"propertyName": "httpInterface",
|
||||
"functionName": "newNetworkModulesHttpInterface",
|
||||
"fileName": "HttpInterface.js"
|
||||
}
|
||||
],
|
||||
"utilities": []
|
||||
@@ -1528,6 +1534,12 @@
|
||||
"functionName": "newSocialTradingModulesEvent",
|
||||
"fileName": "Event.js"
|
||||
},
|
||||
{
|
||||
"name": "Signal",
|
||||
"propertyName": "signal",
|
||||
"functionName": "newSocialTradingModulesSignal",
|
||||
"fileName": "Signal.js"
|
||||
},
|
||||
{
|
||||
"name": "Client Interface",
|
||||
"propertyName": "clientInterface",
|
||||
@@ -1595,6 +1607,24 @@
|
||||
"propertyName": "eventTypes",
|
||||
"functionName": "newSocialTradingGlobalsEventTypes",
|
||||
"fileName": "EventTypes.js"
|
||||
},
|
||||
{
|
||||
"name": "Signal Types",
|
||||
"propertyName": "eventTypes",
|
||||
"functionName": "newSocialTradingGlobalsSignalTypes",
|
||||
"fileName": "SignalTypes.js"
|
||||
},
|
||||
{
|
||||
"name": "Post Types",
|
||||
"propertyName": "postTypes",
|
||||
"functionName": "newSocialTradingGlobalsPostTypes",
|
||||
"fileName": "PostTypes.js"
|
||||
},
|
||||
{
|
||||
"name": "Reaction Types",
|
||||
"propertyName": "reactionTypes",
|
||||
"functionName": "newSocialTradingGlobalsReactionTypes",
|
||||
"fileName": "ReactionTypes.js"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1605,7 +1635,7 @@
|
||||
"name": "Http Interface",
|
||||
"propertyName": "httpInterface",
|
||||
"functionName": "newDesktopModulesHttpInterface",
|
||||
"fileName": "httpInterface.js"
|
||||
"fileName": "HttpInterface.js"
|
||||
},
|
||||
{
|
||||
"name": "Web Sockets Interface",
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
exports.newSocialTradingModulesClientInterface = function newSocialTradingModulesClientInterface() {
|
||||
/*
|
||||
This module represents the Interface the Network Node have
|
||||
with Network Clients connected to it. There are two things
|
||||
with Network Clients connected to it. There are 3 things
|
||||
Network Clients can do with this Network Node:
|
||||
|
||||
* Send an Event that happened at the Network Client to the Network.
|
||||
* Make a Query to the Network Node for info needed at the Network Client.
|
||||
* Send an Event that happened at the Network Client to the Network.
|
||||
* Send a Signal that needs to be distributed.
|
||||
|
||||
This interface is one layer above the communication protocol interface
|
||||
where actual messages are received through, like for instance the
|
||||
websockets interface.
|
||||
websockets interface or http interface.
|
||||
*/
|
||||
let thisObject = {
|
||||
messageReceived: messageReceived,
|
||||
@@ -47,7 +48,7 @@ exports.newSocialTradingModulesClientInterface = function newSocialTradingModule
|
||||
return response
|
||||
}
|
||||
|
||||
if (messageHeader.requestType !== 'Event' && messageHeader.requestType !== 'Query') {
|
||||
if (messageHeader.requestType !== 'Event' && messageHeader.requestType !== 'Query' && messageHeader.requestType !== 'Signal') {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface requestType Not Supported.'
|
||||
@@ -56,15 +57,99 @@ exports.newSocialTradingModulesClientInterface = function newSocialTradingModule
|
||||
}
|
||||
|
||||
switch (messageHeader.requestType) {
|
||||
case 'Query': {
|
||||
return await queryReceived(messageHeader.queryMessage, userProfile)
|
||||
}
|
||||
case 'Event': {
|
||||
return await eventReceived(messageHeader.eventMessage, userProfile)
|
||||
}
|
||||
case 'Query': {
|
||||
return await queryReceived(messageHeader.queryMessage, userProfile)
|
||||
case 'Signal': {
|
||||
return await signalReceived(messageHeader.eventMessage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function queryReceived(queryMessage, userProfile) {
|
||||
/*
|
||||
We expect here a JSON string with some or all of the following properties:
|
||||
|
||||
{
|
||||
"queryType": 10,
|
||||
"emitterUserProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"targetUserProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"emitterUserProfileHandle": "Luis-Fernando-Molina",
|
||||
"targetUserProfileHandle": "Luis-Fernando-Molina",
|
||||
"emitterBotProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"targetBBotProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"emitterPostHash": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"targetPostHash": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"timestamp": 124234234234,
|
||||
"botAsset": "BTC",
|
||||
"botExchange": "Binance",
|
||||
"botEnabled": true,
|
||||
"initialIndex": 35,
|
||||
"amountRequested": 50,
|
||||
"direction": "Past"
|
||||
}
|
||||
*/
|
||||
|
||||
let queryReceived
|
||||
try {
|
||||
queryReceived = JSON.parse(queryMessage)
|
||||
} catch (err) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface queryMessage Not Correct JSON Format.'
|
||||
}
|
||||
return response
|
||||
}
|
||||
/*
|
||||
At the Client Interface, queries need to be emitted by the same userProfile that is
|
||||
connected at the Network Node.
|
||||
*/
|
||||
if (queryReceived.emitterUserProfileId !== userProfile.userProfileId) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface emitterUserProfileId !== userProfileId Connected to Network Node.'
|
||||
}
|
||||
return response
|
||||
}
|
||||
/*
|
||||
Here we will process the query. This does not change the state of the Social Graph.
|
||||
*/
|
||||
try {
|
||||
let query = NT.projects.socialTrading.modules.query.newSocialTradingModulesQuery()
|
||||
query.initialize(queryReceived)
|
||||
|
||||
// console.log((new Date()).toISOString(), '- Client Interface', '- Query Message Received', queryMessage)
|
||||
|
||||
let response = {
|
||||
result: 'Ok',
|
||||
message: 'Client Interface Query Processed.',
|
||||
data: query.execute()
|
||||
}
|
||||
|
||||
// console.log((new Date()).toISOString(), '- Client Interface', '- Query Response Sent', JSON.stringify(response))
|
||||
|
||||
return response
|
||||
|
||||
} catch (err) {
|
||||
/*
|
||||
Any exception that happens while trying to execute the query.
|
||||
*/
|
||||
if (err.stack !== undefined) {
|
||||
console.log('[ERROR] Client Interface -> err.stack = ' + err.stack)
|
||||
}
|
||||
let errorMessage = err.message
|
||||
if (errorMessage === undefined) { errorMessage = err }
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface ' + errorMessage
|
||||
}
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
async function eventReceived(eventMessage, userProfile) {
|
||||
/*
|
||||
We expect here a JSON string with some or all of the following properties:
|
||||
@@ -160,16 +245,15 @@ exports.newSocialTradingModulesClientInterface = function newSocialTradingModule
|
||||
}
|
||||
}
|
||||
|
||||
async function queryReceived(queryMessage, userProfile) {
|
||||
async function signalReceived(signalMessage) {
|
||||
/*
|
||||
We expect here a JSON string with some or all of the following properties:
|
||||
|
||||
{
|
||||
"queryType": 10,
|
||||
"signalId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"signalType": 10,
|
||||
"emitterUserProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"targetUserProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"emitterUserProfileHandle": "Luis-Fernando-Molina",
|
||||
"targetUserProfileHandle": "Luis-Fernando-Molina",
|
||||
"emitterBotProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"targetBBotProfileId": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"emitterPostHash": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
@@ -177,56 +261,60 @@ exports.newSocialTradingModulesClientInterface = function newSocialTradingModule
|
||||
"timestamp": 124234234234,
|
||||
"botAsset": "BTC",
|
||||
"botExchange": "Binance",
|
||||
"botEnabled": true,
|
||||
"initialIndex": 35,
|
||||
"amountRequested": 50,
|
||||
"direction": "Past"
|
||||
"botEnabled": true
|
||||
}
|
||||
*/
|
||||
|
||||
let queryReceived
|
||||
let signalReceived
|
||||
try {
|
||||
queryReceived = JSON.parse(queryMessage)
|
||||
signalReceived = JSON.parse(signalMessage)
|
||||
} catch (err) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface queryMessage Not Correct JSON Format.'
|
||||
message: 'Client Interface signalMessage Not Correct JSON Format.'
|
||||
}
|
||||
return response
|
||||
}
|
||||
/*
|
||||
At the Client Interface, queries need to be emitted by the same userProfile that is
|
||||
connected at the Network Node.
|
||||
We will not accept signals that don't have an signalId.
|
||||
*/
|
||||
if (queryReceived.emitterUserProfileId !== userProfile.userProfileId) {
|
||||
if (signalReceived.signalId === undefined) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface emitterUserProfileId !== userProfileId Connected to Network Node.'
|
||||
message: 'signalId Not Provided.'
|
||||
}
|
||||
return response
|
||||
}
|
||||
/*
|
||||
Here we will process the query. This does not change the state of the Social Graph.
|
||||
We will not accept signals that have already been processed.
|
||||
*/
|
||||
|
||||
if (NT.projects.network.globals.memory.maps.SIGNALS.get(signalReceived.signalId) !== undefined) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'Client Interface Signal Already Exists.'
|
||||
}
|
||||
return response
|
||||
}
|
||||
/*
|
||||
Here we will process the signal and change the state of the Social Graph.
|
||||
*/
|
||||
try {
|
||||
let query = NT.projects.socialTrading.modules.query.newSocialTradingModulesQuery()
|
||||
query.initialize(queryReceived)
|
||||
|
||||
// console.log((new Date()).toISOString(), '- Client Interface', '- Query Message Received', queryMessage)
|
||||
let signal = NT.projects.socialTrading.modules.signal.newSocialTradingModulesSignal()
|
||||
signal.initialize(signalReceived)
|
||||
NT.projects.network.globals.memory.maps.SIGNALS.set(signalReceived.eventId, signal)
|
||||
NT.projects.network.globals.memory.arrays.SIGNALS.push(signal)
|
||||
|
||||
let response = {
|
||||
result: 'Ok',
|
||||
message: 'Client Interface Query Processed.',
|
||||
data: query.execute()
|
||||
message: 'Client Interface Signal Processed.'
|
||||
}
|
||||
|
||||
// console.log((new Date()).toISOString(), '- Client Interface', '- Query Response Sent', JSON.stringify(response))
|
||||
|
||||
return response
|
||||
|
||||
} catch (err) {
|
||||
/*
|
||||
Any exception that happens while trying to execute the query.
|
||||
Any exception that happens while trying to change the state of the Social Graph,
|
||||
will be returned to the caller without doing anything else here.
|
||||
*/
|
||||
if (err.stack !== undefined) {
|
||||
console.log('[ERROR] Client Interface -> err.stack = ' + err.stack)
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
exports.newSocialTradingModulesEvent = function newSocialTradingModulesEvent() {
|
||||
/*
|
||||
An Event is anything that happens system wide that
|
||||
needs to be delivered to relevant entities via
|
||||
the Superalgos Network.
|
||||
An Event is an action taken by users that triggers a
|
||||
change at the social graph.
|
||||
|
||||
An Event (in contrast to a Query) produces a change
|
||||
on the state of the social graph.
|
||||
@@ -115,7 +114,7 @@ exports.newSocialTradingModulesEvent = function newSocialTradingModulesEvent() {
|
||||
|
||||
function postingEvents() {
|
||||
/*
|
||||
Is is related to Posting?
|
||||
Is it related to Posting?
|
||||
*/
|
||||
if (
|
||||
thisObject.eventType === SA.projects.socialTrading.globals.eventTypes.NEW_USER_POST ||
|
||||
@@ -202,7 +201,7 @@ exports.newSocialTradingModulesEvent = function newSocialTradingModulesEvent() {
|
||||
|
||||
function followingEvents() {
|
||||
/*
|
||||
Is is a following?
|
||||
Is it a following?
|
||||
*/
|
||||
if (
|
||||
thisObject.eventType === SA.projects.socialTrading.globals.eventTypes.FOLLOW_USER_PROFILE ||
|
||||
@@ -292,7 +291,7 @@ exports.newSocialTradingModulesEvent = function newSocialTradingModulesEvent() {
|
||||
|
||||
function reactionEvents() {
|
||||
/*
|
||||
Is is a Reaction?
|
||||
Is it a Reaction?
|
||||
*/
|
||||
let targetPost
|
||||
|
||||
@@ -346,7 +345,7 @@ exports.newSocialTradingModulesEvent = function newSocialTradingModulesEvent() {
|
||||
|
||||
function botEvents() {
|
||||
/*
|
||||
Is is a Bot?
|
||||
Is it a Bot?
|
||||
*/
|
||||
if (
|
||||
thisObject.eventType === SA.projects.socialTrading.globals.eventTypes.ADD_BOT ||
|
||||
|
||||
@@ -72,6 +72,8 @@ exports.newSocialTradingModulesQueriesPostReplies = function newSocialTradingMod
|
||||
targetPostHash: post.targetPostHash,
|
||||
postType: post.postType,
|
||||
timestamp: post.timestamp,
|
||||
signalType: post.signalType,
|
||||
signalData: post.signalData,
|
||||
repliesCount: post.replies.size,
|
||||
reactions: Array.from(post.reactions)
|
||||
}
|
||||
|
||||
@@ -67,6 +67,8 @@ exports.newSocialTradingModulesQueriesUserProfileStats = function newSocialTradi
|
||||
targetPostHash: post.targetPostHash,
|
||||
postType: post.postType,
|
||||
timestamp: post.timestamp,
|
||||
signalType: post.signalType,
|
||||
signalData: post.signalData,
|
||||
repliesCount: post.replies.size,
|
||||
reactions: Array.from(post.reactions)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
exports.newSocialTradingModulesSignal = function newSocialTradingModulesSignal() {
|
||||
/*
|
||||
A Signal is an action taken by a bot that needs to be
|
||||
delivered to all the followers of that bot respecting
|
||||
the rule to deliver it fist to the bots belonging to
|
||||
users with the highers ranking.
|
||||
|
||||
An Signal is attached to the Social Graph as a new post
|
||||
from the Bot producing the signal.
|
||||
*/
|
||||
let thisObject = {
|
||||
/* Unique Key */
|
||||
signalId: undefined,
|
||||
/* Referenced Entities Unique Keys */
|
||||
emitterUserProfileId: undefined,
|
||||
targetUserProfileId: undefined,
|
||||
emitterBotProfileId: undefined,
|
||||
targetBotProfileId: undefined,
|
||||
emitterPostHash: undefined,
|
||||
targetPostHash: undefined,
|
||||
/* Signal Unique Properties */
|
||||
signalType: undefined,
|
||||
signalData: undefined,
|
||||
timestamp: undefined,
|
||||
/* Bot Related Properties */
|
||||
botAsset: undefined,
|
||||
botExchange: undefined,
|
||||
botEnabled: undefined,
|
||||
/* Framework Functions */
|
||||
initialize: initialize,
|
||||
finalize: finalize
|
||||
}
|
||||
|
||||
return thisObject
|
||||
|
||||
function finalize() {
|
||||
|
||||
}
|
||||
|
||||
function initialize(signalReceived) {
|
||||
/*
|
||||
Store the message properties into this object properties.
|
||||
*/
|
||||
thisObject.signalId = signalReceived.signalId
|
||||
thisObject.emitterUserProfileId = signalReceived.emitterUserProfileId
|
||||
thisObject.targetUserProfileId = signalReceived.targetUserProfileId
|
||||
thisObject.emitterBotProfileId = signalReceived.emitterBotProfileId
|
||||
thisObject.targetBotProfileId = signalReceived.targetBotProfileId
|
||||
thisObject.emitterPostHash = signalReceived.emitterPostHash
|
||||
thisObject.targetPostHash = signalReceived.targetPostHash
|
||||
thisObject.signalType = signalReceived.signalType
|
||||
thisObject.signalData = signalReceived.signalData
|
||||
thisObject.timestamp = signalReceived.timestamp
|
||||
thisObject.botAsset = signalReceived.botAsset
|
||||
thisObject.botExchange = signalReceived.botExchange
|
||||
thisObject.botEnabled = signalReceived.botEnabled
|
||||
/*
|
||||
Local Variables
|
||||
*/
|
||||
let emitterUserProfile
|
||||
let targetUserProfile
|
||||
let emitterBotProfile
|
||||
let targetBotProfile
|
||||
/*
|
||||
Validate Emitter User Profile.
|
||||
*/
|
||||
if (thisObject.emitterUserProfileId === undefined) {
|
||||
throw ('Emitter User Profile Id Not Provided.')
|
||||
}
|
||||
emitterUserProfile = SA.projects.network.globals.memory.maps.USER_PROFILES_BY_ID.get(thisObject.emitterUserProfileId)
|
||||
if (emitterUserProfile === undefined) {
|
||||
throw ('Emitter User Profile Not Found.')
|
||||
}
|
||||
/*
|
||||
Validate Target User Profile.
|
||||
*/
|
||||
if (thisObject.targetUserProfileId !== undefined) {
|
||||
targetUserProfile = SA.projects.network.globals.memory.maps.USER_PROFILES_BY_ID.get(thisObject.targetUserProfileId)
|
||||
if (targetUserProfile === undefined) {
|
||||
throw ('Target User Profile Not Found.')
|
||||
}
|
||||
}
|
||||
/*
|
||||
Validate Emitter Bot Profile.
|
||||
*/
|
||||
if (thisObject.emitterBotProfileId !== undefined) {
|
||||
emitterBotProfile = emitterUserProfile.bots.get(thisObject.emitterBotProfileId)
|
||||
if (emitterBotProfile === undefined) {
|
||||
throw ('Emitter Bot Profile Not Found.')
|
||||
}
|
||||
}
|
||||
/*
|
||||
Validate Target Bot Profile.
|
||||
*/
|
||||
if (thisObject.targetBotProfileId !== undefined) {
|
||||
targetBotProfile = emitterUserProfile.bots.get(thisObject.targetBotProfileId)
|
||||
if (targetBotProfile === undefined) {
|
||||
throw ('Target Bot Profile Not Found.')
|
||||
}
|
||||
}
|
||||
|
||||
if (tradingSignals()) {
|
||||
signalCounters()
|
||||
return
|
||||
}
|
||||
|
||||
function tradingSignals() {
|
||||
/*
|
||||
Is it related to Trading?
|
||||
*/
|
||||
if (
|
||||
thisObject.signalType === SA.projects.socialTrading.globals.signalTypes.TRIGGER_ON ||
|
||||
thisObject.signalType === SA.projects.socialTrading.globals.signalTypes.TRIGGER_OFF ||
|
||||
thisObject.signalType === SA.projects.socialTrading.globals.signalTypes.TAKE_POSITION ||
|
||||
thisObject.signalType === SA.projects.socialTrading.globals.signalTypes.CLOSE_POSITION
|
||||
) {
|
||||
/*
|
||||
We will create a new Bot Post with the Signal info attached to it.
|
||||
*/
|
||||
if (emitterBotProfile === undefined) {
|
||||
throw ('Emitter Bot Profile Id Not Provided.')
|
||||
}
|
||||
|
||||
emitterBotProfile.addPost(
|
||||
thisObject.emitterUserProfileId,
|
||||
thisObject.targetUserProfileId,
|
||||
thisObject.emitterBotProfileId,
|
||||
thisObject.targetBotProfileId,
|
||||
thisObject.emitterPostHash,
|
||||
thisObject.targetPostHash,
|
||||
SA.projects.socialTrading.globals.postTypes.SIGNAL_POST,
|
||||
thisObject.timestamp,
|
||||
thisObject.signalType,
|
||||
thisObject.signalData
|
||||
)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
function signalCounters() {
|
||||
emitterUserProfile.emitterSignalsCount++
|
||||
if (targetUserProfile !== undefined) {
|
||||
targetUserProfile.targetSignalsCount++
|
||||
}
|
||||
if (emitterBotProfile !== undefined) {
|
||||
emitterUserProfile.emitterSignalsCount++
|
||||
}
|
||||
if (targetBotProfile !== undefined) {
|
||||
targetBotProfile.targetSignalsCount++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
exports.newSocialTradingGlobalsPostTypes = function () {
|
||||
|
||||
let thisObject = {
|
||||
/* Post Types */
|
||||
NEW_POST: 0,
|
||||
REPLY_TO_POST: 1,
|
||||
REPOST: 2,
|
||||
QUOTE_REPOST: 3,
|
||||
SIGNAL_POST: 4
|
||||
}
|
||||
|
||||
return thisObject
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
exports.newSocialTradingGlobalsReactionTypes = function () {
|
||||
|
||||
let thisObject = {
|
||||
/* Reaction Types */
|
||||
REACTION_LIKE: 0,
|
||||
REACTION_LOVE: 1,
|
||||
REACTION_HAHA: 2,
|
||||
REACTION_WOW: 3,
|
||||
REACTION_SAD: 4,
|
||||
REACTION_ANGRY: 5,
|
||||
REACTION_CARE: 6
|
||||
}
|
||||
|
||||
return thisObject
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
exports.newSocialTradingGlobalsSignalTypes = function () {
|
||||
|
||||
let thisObject = {
|
||||
/* Trading Signals */
|
||||
TRIGGER_ON: 10,
|
||||
TRIGGER_OFF: 11,
|
||||
TAKE_POSITION: 12,
|
||||
CLOSE_POSITION: 13
|
||||
}
|
||||
|
||||
return thisObject
|
||||
}
|
||||
@@ -75,7 +75,9 @@ exports.newSocialTradingModulesSocialGraphBotProfile = function newSocialTrading
|
||||
emitterPostHash,
|
||||
targetPostHash,
|
||||
postType,
|
||||
timestamp
|
||||
timestamp,
|
||||
signalType,
|
||||
signalData
|
||||
) {
|
||||
if (thisObject.posts.get(emitterPostHash) !== undefined) {
|
||||
throw ('Post Already Exists.')
|
||||
@@ -89,7 +91,9 @@ exports.newSocialTradingModulesSocialGraphBotProfile = function newSocialTrading
|
||||
emitterPostHash,
|
||||
targetPostHash,
|
||||
postType,
|
||||
timestamp
|
||||
timestamp,
|
||||
signalType,
|
||||
signalData
|
||||
)
|
||||
|
||||
thisObject.posts.set(emitterPostHash, post)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
exports.newSocialTradingModulesSocialGraphPost = function newSocialTradingModulesSocialGraphPost() {
|
||||
/*
|
||||
Posts represent a collection of multimedia content sorted somewhere else
|
||||
Posts represent a collection of multimedia content stored somewhere else
|
||||
and identified by that content hash. Posts might belong to:
|
||||
* a User Profile.
|
||||
* a Bot Profile.
|
||||
@@ -23,6 +23,9 @@ exports.newSocialTradingModulesSocialGraphPost = function newSocialTradingModule
|
||||
/* Post Unique Properties */
|
||||
postType: undefined,
|
||||
timestamp: undefined,
|
||||
/* Signal Related Properties */
|
||||
signalType: undefined,
|
||||
signalData: undefined,
|
||||
/* Maps */
|
||||
replies: undefined,
|
||||
reactions: undefined,
|
||||
@@ -34,33 +37,16 @@ exports.newSocialTradingModulesSocialGraphPost = function newSocialTradingModule
|
||||
finalize: finalize
|
||||
}
|
||||
|
||||
const POST_TYPES = {
|
||||
NEW_POST: 0,
|
||||
REPLY_TO_POST: 1,
|
||||
REPOST_: 2,
|
||||
QUOTE_REPOST_: 3
|
||||
}
|
||||
|
||||
const REACTION_TYPES = {
|
||||
REACTION_LIKE: 0,
|
||||
REACTION_LOVE: 1,
|
||||
REACTION_HAHA: 2,
|
||||
REACTION_WOW: 3,
|
||||
REACTION_SAD: 4,
|
||||
REACTION_ANGRY: 5,
|
||||
REACTION_CARE: 6
|
||||
}
|
||||
|
||||
thisObject.replies = new Map()
|
||||
|
||||
thisObject.reactions = new Map()
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_LIKE, 0)
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_LOVE, 0)
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_HAHA, 0)
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_WOW, 0)
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_SAD, 0)
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_ANGRY, 0)
|
||||
thisObject.reactions.set(REACTION_TYPES.REACTION_CARE, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_LIKE, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_LOVE, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_HAHA, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_WOW, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_SAD, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_ANGRY, 0)
|
||||
thisObject.reactions.set(SA.projects.socialTrading.globals.reactionTypes.REACTION_CARE, 0)
|
||||
|
||||
return thisObject
|
||||
|
||||
@@ -77,7 +63,9 @@ exports.newSocialTradingModulesSocialGraphPost = function newSocialTradingModule
|
||||
emitterPostHash,
|
||||
targetPostHash,
|
||||
postType,
|
||||
timestamp
|
||||
timestamp,
|
||||
signalType,
|
||||
signalData
|
||||
) {
|
||||
|
||||
thisObject.emitterUserProfileId = emitterUserProfileId
|
||||
@@ -88,13 +76,15 @@ exports.newSocialTradingModulesSocialGraphPost = function newSocialTradingModule
|
||||
thisObject.targetPostHash = targetPostHash
|
||||
thisObject.postType = postType
|
||||
thisObject.timestamp = timestamp
|
||||
thisObject.signalType = signalType
|
||||
thisObject.signalData = signalData
|
||||
/*
|
||||
Let's find the Target Post
|
||||
*/
|
||||
if (
|
||||
thisObject.postType === POST_TYPES.REPLY_TO_POST ||
|
||||
thisObject.postType === POST_TYPES.REPOST_ ||
|
||||
thisObject.postType === POST_TYPES.QUOTE_REPOST_
|
||||
thisObject.postType === SA.projects.socialTrading.globals.postTypes.REPLY_TO_POST ||
|
||||
thisObject.postType === SA.projects.socialTrading.globals.postTypes.REPOST ||
|
||||
thisObject.postType === SA.projects.socialTrading.globals.postTypes.QUOTE_REPOST
|
||||
) {
|
||||
/*
|
||||
Validate Target User Profile.
|
||||
@@ -113,7 +103,7 @@ exports.newSocialTradingModulesSocialGraphPost = function newSocialTradingModule
|
||||
Let's add this post to the replies of the Target Post
|
||||
*/
|
||||
if (
|
||||
thisObject.postType === POST_TYPES.REPLY_TO_POST
|
||||
thisObject.postType === SA.projects.socialTrading.globals.postTypes.REPLY_TO_POST
|
||||
) {
|
||||
targetPost.replies.set(thisObject.targetPostHash, thisObject.targetPostHash)
|
||||
}
|
||||
|
||||
+8
-1
@@ -2,7 +2,14 @@
|
||||
"type": "Artificial Neural Network",
|
||||
"definition": {
|
||||
"text": "An ANN is based on a collection of connected units or nodes called artificial neurons, which loosely model the neurons in a biological brain. Each connection, like the synapses in a biological brain, can transmit a signal to other neurons. An artificial neuron that receives a signal then processes it and can signal neurons connected to it.",
|
||||
"updated": 1613198337105
|
||||
"updated": 1613198337105,
|
||||
"translations": [
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Искуственные нейронные сети основаны на наборе cоединенных блоков или узлов, называемых искуственными нейронами, которые свободно моделируют нейроны в биологическом мозге. Каждое соедининие, подобно синапсам в биологическом мозге, может передавать сигнал другим нейронам. Искуственный нейрон, который получает сизгнал, обрабатывает его и может передавать сигналы нейронам, подключенным к нему.\n",
|
||||
"updated": 1636749291371
|
||||
}
|
||||
]
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
|
||||
+8
-1
@@ -2,7 +2,14 @@
|
||||
"type": "Supervised Learning",
|
||||
"definition": {
|
||||
"text": "Supervised learning is the machine learning task of learning a function that maps an input to an output based on example input-output pairs. It infers a function from labeled training data consisting of a set of training examples. In supervised learning, each example is a pair consisting of an input object (typically a vector) and a desired output value (also called the supervisory signal).",
|
||||
"updated": 1613197014944
|
||||
"updated": 1613197014944,
|
||||
"translations": [
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "Контролируемое обучение - это задача машинного\nобучения по изучению функции, которая направляет входные данные с выходными на основе пар ввода-вывода. Она вводит функцию из помеченных обучающих данных, состоящих из набора обучающих примеров. В обучении под наблюдением каждый пример представляет пару, состоящую из входного объекта (обычно вектора) и желаемого выходного значения (также называемого управляющий сигналом)",
|
||||
"updated": 1636748807235
|
||||
}
|
||||
]
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
|
||||
+8
-1
@@ -2,7 +2,14 @@
|
||||
"type": "TensorFlow Library",
|
||||
"definition": {
|
||||
"text": "In Node.js, TensorFlow.js supports binding directly to the TensorFlow API or running with the slower vanilla CPU implementations.",
|
||||
"updated": 1613062988909
|
||||
"updated": 1613062988909,
|
||||
"translations": [
|
||||
{
|
||||
"language": "RU",
|
||||
"text": "В Node.js TensorFlow.js поддерживает привязку непосредственно к API TensorFlow или работает с более медленными реализациями центрального процессора vanilla.",
|
||||
"updated": 1636748173302
|
||||
}
|
||||
]
|
||||
},
|
||||
"paragraphs": [
|
||||
{
|
||||
|
||||
@@ -431,7 +431,7 @@ function newVisualScritingFunctionLibraryUiObjectsFromNodes() {
|
||||
) {
|
||||
node.project = 'Foundations'
|
||||
}
|
||||
/* Migration code from beta 11 to beta 12 */
|
||||
/* Migration code from beta 11 to v.1.0 */
|
||||
if (
|
||||
node.type === 'Network'
|
||||
) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Superalgos Beta 12
|
||||
# Superalgos v.1.0
|
||||
|
||||

|
||||

|
||||
@@ -359,7 +359,7 @@ Once the app finishes loading, an interactive tutorial takes you by the hand and
|
||||
|
||||
Superalgos Platform is a set of tools to automate crypto-trading. It is implemented as a Node JS Client + Web App that runs on your hardware and scales from a single Raspberry Pi to a Trading Farm. The Platform is fully functional and has been used for trading live since 2020.
|
||||
|
||||
At Beta 12, trading signals will be able to be sent to the Suerpalgos Network from the Superalgos Platform.
|
||||
At v.1.0, trading signals will be able to be sent to the Suerpalgos Network from the Superalgos Platform.
|
||||
|
||||
### Superalgos Platform Features
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
|
||||
Total RAM istalled in this system is ........................ 15.85 GB
|
||||
Total RAM available for Superalgos is ....................... 13.47 GB
|
||||
|
||||
If you would like to enable less RAM than that, use the minMemo flag. Note: RAM will be allocated only if needed.
|
||||
|
||||
OPTIONS ACCEPTED:
|
||||
|
||||
none ........................................................ Running without any command line options.
|
||||
|
||||
|
||||
SUPERALGOS PLATFORM CLIENT SERVERS:
|
||||
|
||||
Web Server .................................................. Started
|
||||
UI File Server .............................................. Started
|
||||
Project File Server ......................................... Started
|
||||
Plugin Server ............................................... Started
|
||||
Data File Server ............................................ Started
|
||||
Events Server ............................................... Started
|
||||
Task Manager Server ......................................... Started
|
||||
CCXT Server ................................................. Started
|
||||
WEB3 Server ................................................. Started
|
||||
Github Server ............................................... Started
|
||||
|
||||
SUPERALGOS PLATFORM CLIENT INTERFACES:
|
||||
|
||||
Web Sockets Interface ....................................... Listening at port 18041
|
||||
Http Interface .............................................. Listening at port 34248
|
||||
|
||||
You are running Superalgos Beta 12
|
||||
|
||||
What's new? These are the main new features in this version:
|
||||
|
||||
Governance System ........................................... Automates the distribution of SA Tokens and allow users to vote on the direction of the project.
|
||||
TensorFlow Integration ...................................... Allows creating and training ML models and use them in trading strategies.
|
||||
|
||||
What's next? This is the current development pipeline:
|
||||
|
||||
Superalgos P2P Network ...................................... Will allow algo-traders to share trading signals with Superalgos users consuming these signals via a mobile app.
|
||||
Real-time Trading Signals ................................... Will allow users to emit trading signals and be rewarded with SA Tokens.
|
||||
Superalgos Mobile ........................................... Will allow users to consume trading signals for free and autonomously execute trades from their mobile phones.
|
||||
Ethereum Integration ........................................ Will allow mining data from an Ethereum network node, and bring it into the Superalgos workflow. [Looking for an Ethereum dev that would like to continue this line of development.]
|
||||
|
||||
Superalgos Platform App is Running!
|
||||
+1
-1
@@ -18,7 +18,7 @@ if (
|
||||
|
||||
console.log('Superalgos')
|
||||
console.log('')
|
||||
console.log('VERSION: Beta 12')
|
||||
console.log('VERSION: v.1.0')
|
||||
console.log('')
|
||||
console.log('WEB: https://www.superalgos.org')
|
||||
console.log('')
|
||||
|
||||
Reference in new issue
Block a user