Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop

This commit is contained in:
MarinitaMarina committed 2021-11-06 08:01:41 +01:00
commit 119111732f
39 files changed
+941 -99

No files matched your search

+9 -39
View File
@@ -1,38 +1,16 @@
name: Build/release Binaries
on:
pull_request:
branches: [master]
#release:
# types: [published, created]
release:
types:
- published
workflow_dispatch:
jobs:
create-release:
runs-on: ubuntu-latest
steps:
- name: Download a file
run: curl "https://raw.githubusercontent.com/${{ github.repository }}/master/package.json" -o package.json
- name: get-version
id: version
uses: nyaa8/package-version@v1
with:
path: './package.json'
- name: Create release
id: create_release
uses: viperproject/create-nightly-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.PACKAGE_VERSION }}
release_name: Superalgos-v${{ env.PACKAGE_VERSION }}
build-release:
runs-on: ${{ matrix.os }}
needs: create-release
strategy:
matrix:
os: [windows-latest, macos-latest]
@@ -40,19 +18,15 @@ jobs:
steps:
- name: Check out Git repository
uses: actions/checkout@v2
with:
ref: develop
- name: Install Node.js, NPM and Yarn
uses: actions/setup-node@v1
with:
node-version: 14
- name: get-version
id: version
uses: nyaa8/package-version@v1
with:
path: './package.json'
- name: Get version
id: vars
run: echo "::set-output name=tag::$(node -p "require('./package.json').version")"
- name: Build/release Electron app
uses: samuelmeuli/action-electron-builder@v1
@@ -60,10 +34,6 @@ jobs:
# GitHub token, automatically provided to the action
# (No need to define this secret in the repo settings)
github_token: ${{ secrets.github_token }}
args: "-c.extraMetadata.version=${{ env.PACKAGE_VERSION }} -c build/electron-builder.json -p always"
# If the commit is tagged with a version (e.g. "v1.0.0"),
# release the app after building
# release: ${{ startsWith(github.ref, 'refs/tags/v') }}
args: "-c.extraMetadata.version=${{ steps.vars.outputs.tag }} -c build/electron-builder.json -p always"
release: true
+10 -14
View File
@@ -17,11 +17,9 @@ jobs:
id: date
run: echo "::set-output name=date::$(date +'%Y%m%d')"
- name: get-version
id: version
uses: nyaa8/package-version@v1
with:
path: './package.json'
- name: Get version
id: vars
run: echo "::set-output name=tag::$(node -p "require('./package.json').version")"
- name: Create nightly release
id: create_release
@@ -29,8 +27,8 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.PACKAGE_VERSION }}.${{ steps.date.outputs.date }}
release_name: Superalgos ${{ env.PACKAGE_VERSION }} Snapshot ${{ steps.date.outputs.date }}
tag_name: ${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }}
release_name: Superalgos-Beta-v${{ steps.vars.outputs.tag }} Snapshot ${{ steps.date.outputs.date }}
keep_num: 5
keep_tags: false
@@ -39,7 +37,7 @@ jobs:
needs: create-release
strategy:
matrix:
os: [windows-latest, macos-latest]
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- name: Get current date
@@ -56,11 +54,9 @@ jobs:
with:
node-version: 14
- name: get-version
id: version
uses: nyaa8/package-version@v1
with:
path: './package.json'
- name: Get version
id: vars
run: echo "::set-output name=tag::$(node -p "require('./package.json').version")"
- name: Build/release Electron app
uses: samuelmeuli/action-electron-builder@v1
@@ -68,7 +64,7 @@ jobs:
# GitHub token, automatically provided to the action
# (No need to define this secret in the repo settings)
github_token: ${{ secrets.github_token }}
args: "-c.extraMetadata.main=electron-wrapper.js -c.extraMetadata.version=${{ env.PACKAGE_VERSION }}.${{ steps.date.outputs.date }} -c build/electron-builder.json -p onTagOrDraft"
args: "-c.extraMetadata.version=${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }} -c build/electron-builder.json -p onTagOrDraft"
# If the commit is tagged with a version (e.g. "v1.0.0"),
# release the app after building
+10
View File
@@ -0,0 +1,10 @@
{
"folders": [
{
"path": "C:\\Superalgos"
}
],
"settings": {
"search.maintainFileSearchCache": true
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"folders": [
{
"path": "C:\\Superalgos"
}
],
"settings": {
"search.maintainFileSearchCache": true
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"folders": [
{
"path": "C:\\Superalgos"
}
],
"settings": {
"search.maintainFileSearchCache": true
}
}
+5 -5
View File
@@ -2,7 +2,7 @@ exports.newDesktopApp = function newDesktopApp() {
let thisObject = {
socialGraph: undefined,
p2pMetwork: undefined,
p2pNetwork: undefined,
webSocketsClient: undefined,
webSocketsInterface: undefined,
run: run
@@ -21,18 +21,18 @@ exports.newDesktopApp = function newDesktopApp() {
/*
We can join now the P2P Network as a client app.
*/
thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork()
await thisObject.p2pMetwork.initialize('Network Client')
thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork()
await thisObject.p2pNetwork.initialize('Network Client')
/*
Here we will pick a Network Node from all users profiles available that do have a Network Node running.
*/
let selectedNetworkNode = thisObject.p2pMetwork.p2pNodesToConnect[0]
let selectedNetworkNode = thisObject.p2pNetwork.p2pNodesToConnect[0]
/*
This is the Web Sockets client that interacts with the Superalgos Network.
*/
thisObject.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient()
await thisObject.webSocketsClient.initialize('Network Client', selectedNetworkNode)
console.log('Desktop Client Connected to Network Node via Web Sockets ................... Connected to port ' + global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT)
/*
These are the Network Interfaces by which the Web App interacts with this Desktop Client.
*/
+19 -8
View File
@@ -1,20 +1,19 @@
exports.newNetworkNode = function newNetworkNode() {
let thisObject = {
webSocketsInterface: undefined,
socialGraphService: undefined,
storage: undefined,
p2pMetwork: undefined,
p2pNetwork: undefined,
p2pNetworkPeers: undefined,
run: run
}
NT.networkNode = thisObject
return thisObject
async function run() {
/*
Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface.
*/
NT.webSocketsInterface = NT.projects.network.modules.webSocketsInterface.newNetworkModulesWebSocketsInterface()
NT.webSocketsInterface.initialize()
/*
The Social Graph Service is the first and for now, the only service this Network Node provides.
*/
@@ -26,9 +25,21 @@ exports.newNetworkNode = function newNetworkNode() {
thisObject.storage = NT.projects.socialTrading.modules.storage.newSocialTradingModulesStorage()
thisObject.storage.initialize()
/*
Let's discover who is at the p2p network.
*/
thisObject.p2pNetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork()
await thisObject.p2pNetwork.initialize('Network Peer')
/*
We can join now the P2P Network as a new peer there.
*/
thisObject.p2pMetwork = SA.projects.network.modules.p2pNetwork.newNetworkModulesP2PNetwork()
await thisObject.p2pMetwork.initialize('Network Peer')
thisObject.p2pNetworkPeers = SA.projects.network.modules.p2pNetworkPeers.newNetworkModulesP2PNetworkPeers()
await thisObject.p2pNetworkPeers.initialize()
/*
Other Network Nodes and Client Apps will communicate with this Network Node via it's Websocket Interface.
*/
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.p2pNetwork.thisNetworkNode.node.config).webSocketsPort)
}
}
+5 -1
View File
@@ -10,7 +10,7 @@ exports.newNetworkRoot = function newNetworkRoot() {
return thisObject
async function run() {
async function run(debugSettings) {
/*
The NT object is accessible everywhere at the Superalgos Network.
It provides access to all modules built for this Network.
@@ -25,6 +25,10 @@ exports.newNetworkRoot = function newNetworkRoot() {
let ENVIRONMENT = require('./Environment.js');
let ENVIRONMENT_MODULE = ENVIRONMENT.newEnvironment()
global.env = ENVIRONMENT_MODULE
if (debugSettings !== undefined && debugSettings.P2P_NETWORK_NODE_SIGNING_ACCOUNT !== undefined) {
global.env.P2P_NETWORK_NODE_SIGNING_ACCOUNT = debugSettings.P2P_NETWORK_NODE_SIGNING_ACCOUNT
}
/*
First thing is to load the project schema file.
*/
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Sie haben gerade die Grundlagen über die drei Skalen gelernt, die die Charts bestimmen, aber es gibt noch mehr!",
"updated": 1634217561414
},
{
"language": "TR",
"text": "Tabloları yöneten üç ölçekle ilgili temel bilgileri az önce öğrendiniz, ancak dahası da var!",
"updated": 1636112760510
}
]
},
@@ -49,6 +54,11 @@
"language": "DE",
"text": "Erinnern Sie sich, dass ich erwähnt habe, dass eine Time Machine mehrere Charts von verschiedenen Börsen und Märkten enthalten kann? Es gibt keine Grenzen für die Visualisierung von Daten in Superalgos, und die Skalen spielen eine wichtige Rolle in komplexeren Konfigurationen als denen, die wir an dieser Stelle erkunden.",
"updated": 1634217567611
},
{
"language": "TR",
"text": "Bir Zaman Makinesinin ( Time Machine ) birden fazla borsadan ve piyasadan birden fazla grafik içerebileceğini söylediğimi hatırlıyor musunuz? Superalgos'ta verileri nasıl görselleştireceğinizin bir sınırı yoktur ve ölçekler, bu noktada araştırdığımızdan daha karmaşık konfigürasyonlarda önemli bir rol oynar.",
"updated": 1636112585521
}
]
},
@@ -73,6 +83,11 @@
"language": "DE",
"text": "Wenn Sie alle Details erfahren möchten, lesen Sie bitte den Abschnitt Scales in der Dokumentation.",
"updated": 1634217573618
},
{
"language": "TR",
"text": "Tüm detayları öğrenmek istiyorsanız, dokümantasyonun Ölçekler ( Scales ) bölümünü incelemekten çekinmeyin.",
"updated": 1636112742089
}
]
}
@@ -26,6 +26,11 @@
"text": "Dies ist der Aufbau der Charting Space Hierarchie der Time Machine, mit der wir in den Charts gespielt haben.",
"updated": 1634218294649,
"style": "Definition"
},
{
"language": "TR",
"text": "Bu, grafiklerde oynadığımız Zaman Makinesinin Grafik Alanı hiyerarşi kurulumudur.",
"updated": 1636103063884
}
]
},
@@ -51,6 +56,11 @@
"text": "Nehmen Sie sich ein paar Minuten Zeit, um diese Definitionen zu erkunden! Werfen Sie einen Blick auf die Menüs der verschiedenen Knoten!",
"updated": 1634218308224,
"style": "Callout"
},
{
"language": "TR",
"text": "Bu tanımları keşfetmek için birkaç dakikanızı ayırın! Farklı düğümlerin menülerine bir göz atın!",
"updated": 1636103083297
}
]
},
@@ -75,6 +85,11 @@
"language": "DE",
"text": "Ich hoffe, die Struktur der Knoten ist intuitiv genug, um zu verstehen, wie leistungsfähig das Konzept des Design Space ist. Sie richten eine Time Machine ein, indem Sie Timeline Chart Knoten und die gewünschten Skalen hinzufügen. Dann richten Sie Layer Manager und Layer ein, die auf die entsprechenden Data Mine Products verweisen, so dass die gewünschten Daten auf einem bestimmten Layer Manager in den Charts verfügbar werden. Es ist wie das Legoland® der Handelsdiagramme! Später werden Sie lernen, wie man Charts schneidet!",
"updated": 1634221688170
},
{
"language": "TR",
"text": "Umarım düğümlerin yapısı, Tasarım Alanı ( Design Space ) kavramının ne kadar güçlü olduğunu kavramaya yetecek kadar sezgiseldir. Zaman Çizelgesi Grafiği ( Timeline Chart ) düğümlerini ve istenen ölçekleri ekleyerek bir zaman makinesi kurarsınız. Ardından, istenen verilerin grafiklerdeki belirli bir katman yöneticisinde kullanılabilir hale gelmesi için ilgili Veri Madeni Ürünleri'ne ( Data Mine Products ) başvuran katman yöneticilerini ve katmanları ayarlarsınız. Ticaret listelerinin Legoland®'ı gibi! Daha sonra çizelgeleri özelleştirmeyi öğreneceksiniz!",
"updated": 1636103227563
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Apropos Blockbildung: Wir befinden uns jetzt in der Masters Data Mine. Zu Ihrer Linken sehen Sie die Definition eines der Bots, die Sie vor einigen Minuten zum Abbau geschickt haben.",
"updated": 1634218419044
},
{
"language": "TR",
"text": "Blok oluşturma hakkında konuşurken, artık Masters Data Mine'ın sınırlarındayız. Solunuzda, dakikalar önce madenciliğe gönderdiğiniz botlardan birini görüyorsunuz.",
"updated": 1636105640974
}
]
},
@@ -49,6 +54,11 @@
"language": "DE",
"text": "Ähnlich wie bei den Lego-ähnlichen Definitionen des Charting Space werden auch die Bots in einer visuellen Umgebung definiert.",
"updated": 1634218423345
},
{
"language": "TR",
"text": "Grafik alanının ( Charting Space )'in Lego benzeri olduğu gibi, botlarda görsel bir ortamda tanımlanmıştır.",
"updated": 1636105839670
}
]
},
@@ -72,6 +82,11 @@
"language": "DE",
"text": "Alles, was die Entwickler programmieren müssen, ist die eigentliche Data Building Procedure.",
"updated": 1634218433837
},
{
"language": "TR",
"text": "Veri oluşturma prosedürleri ( Data Building Procedure ) geliştiriciler tarafından tanımlanmıştır.",
"updated": 1636106164354
}
]
},
@@ -95,6 +110,11 @@
"language": "DE",
"text": "Alles andere wird in einer visuellen Umgebung definiert: Prozesse mit ihren Abhängigkeiten, Ausgaben usw. und Produkte mit ihren Datensatz- und Datasetdefinitionen usw.",
"updated": 1634218442797
},
{
"language": "TR",
"text": "Diğer her şey görsel bir ortamda tanımlanır: bağımlılıklar, çıktılar, süreçler, kayıt, veri seti tanımları, ürünler vb.",
"updated": 1636106291422
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Und so werden Plotter gebaut! Plotter erstellen grafische Darstellungen von Daten... von Kerzen bis hin zu allem anderen!",
"updated": 1634218493534
},
{
"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
}
]
},
@@ -49,6 +54,11 @@
"language": "DE",
"text": "Wiederum visuelles Skripting in seiner besten Form! Plotter verwenden stilisierte Polygone aus Koordinatenpunkten, um Linien und Formen zu zeichnen, die Daten darstellen. Jede Ebene, die in den Diagrammen zur Verfügung steht, wird mit einer Reihe von Definitionen erstellt, so wie Sie sie gerade sehen. Der besondere Fall des Bot Resistenzen und Unterstützungen ist ziemlich komplex, zeigt aber die Leistungsfähigkeit des Tools!",
"updated": 1634218497006
},
{
"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
}
]
},
@@ -73,6 +83,11 @@
"language": "DE",
"text": "Suchen Sie das Polygon der Widerstandszone 5 (links), erweitern Sie es und krabbeln Sie die Äste hinauf, um zu sehen, wie diese Schönheit entstanden ist!",
"updated": 1634218503528
},
{
"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
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Wir sind zurück in der Netzwerkhierarchie, um Ihnen eine der wichtigsten Ressourcen für Strategietests zu zeigen, die in den Trading Bot integriert sind.",
"updated": 1634218612347
},
{
"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
}
]
},
@@ -50,6 +55,11 @@
"language": "DE",
"text": "Doch bevor Sie Ihre erste Backtesting Session starten, wollen wir uns erst einmal einen Überblick verschaffen, wie der Knoten Testing Trading Tasks aufgebaut ist.",
"updated": 1634218620382
},
{
"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
}
]
},
@@ -74,6 +84,11 @@
"language": "DE",
"text": "Erweitern Sie den Testing Trading Tasks und sehen Sie sich die Struktur der Nachfolgeknoten an... Kommt Ihnen das bekannt vor?",
"updated": 1634218627346
},
{
"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
}
]
},
@@ -97,6 +112,11 @@
"language": "DE",
"text": "In der Tat! Sie ähnelt dem Abschnitt Data Tasks : Die Aufgaben sind nach Börse, Markt und Handelsmine geordnet, so dass Sie eine beliebige Anzahl von Strategien testen können, die für verschiedene Märkte an mehreren Börsen optimiert sind.",
"updated": 1634218636921
},
{
"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
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Stellen Sie sich eine Armee von Bots vor, die mit mehreren Börsen, Märkten und Strategien arbeiten und in einem Netzwerk à la Trading Farm laufen.",
"updated": 1634220019128
},
{
"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
}
],
"updated": 1622200549490
@@ -51,6 +56,11 @@
"language": "DE",
"text": "Genau darum geht es beim Network Node. Was Sie bisher gesehen haben, läuft auf einer einzigen Maschine. Aber...",
"updated": 1634220028409
},
{
"language": "TR",
"text": "Ağ Düğümü bununla ilgili. Şimdiye kadar gördükleriniz tek bir makinede çalışıyor. Fakat...",
"updated": 1636109072742
}
]
},
@@ -75,6 +85,11 @@
"language": "DE",
"text": "Superalgos unterstützt die Verteilung und Koordinierung von Aufgaben über Netzwerke von Knoten, auf denen der Client läuft! Dies ermöglicht intelligente und skalierbare Operationen. Jeder Rechner, auf dem die GUI läuft, kann das Unternehmen steuern!",
"updated": 1634220039839
},
{
"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
}
]
},
@@ -98,6 +113,11 @@
"language": "DE",
"text": "Sie können ein Netzwerk mit ein paar Raspberry Pi, einem industriellen Rechenzentrum oder irgendetwas dazwischen einrichten.",
"updated": 1634220046648
},
{
"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
}
],
"updated": 1629821982211
@@ -26,6 +26,11 @@
"language": "DE",
"text": "Die neueste Version von Superalgos bietet eine experimentelle Integration von TensorFlow zur Nutzung von ML innerhalb der App!",
"updated": 1634220174054
},
{
"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
}
]
},
@@ -51,6 +56,11 @@
"language": "DE",
"text": "Die Integration bildet die Definition einer NodeJS TensorFlow Library mit einem Supervised Learning Algorithmus und seinem Artificial Neural Network in der gleichen Art von Knotenstruktur ab, wie sie für Superalgos typisch ist.",
"updated": 1634220190097
},
{
"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
}
]
},
@@ -75,6 +85,11 @@
"language": "DE",
"text": "Die Integration nutzt den Rest der Superalgos-Infrastruktur, so dass Sie Ihre Datensätze verwenden können, um ML-Algos zu trainieren und die resultierenden Modelle innerhalb von Handelssystemen zu verwenden!",
"updated": 1634220194628
},
{
"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
}
]
},
@@ -99,6 +114,11 @@
"language": "DE",
"text": "Werfen Sie später einen Blick auf den ML CrossCategoricalEntropy Demo Plugin Workspace!",
"updated": 1634220207869
},
{
"language": "TR",
"text": "Daha sonra, ML CrossCategoricalEntropy Demo Plugin Workspace'e bir göz atın!",
"updated": 1636109933292
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Wundern Sie sich nicht, wenn Sie hier und da ein \"under construction\"-Schild finden...",
"updated": 1634220290367
},
{
"language": "TR",
"text": "Arada bir \"Under Construction\" tabelası görürseniz şaşırmayın...",
"updated": 1636110077834
}
],
"updated": 1622200773527
@@ -50,11 +55,16 @@
"language": "DE",
"text": "Wie ich bereits erwähnt habe, wächst Superalgos ständig, und die Infrastruktur, die für die kommende Version entworfen wurde, kann gelegentlich in die aktuelle Version in einem Service Pack integriert werden, zusammen mit notwendigen Korrekturen und kleineren Verbesserungen.",
"updated": 1634220302814
},
{
"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
}
]
},
{
"style": "Callout",
"style": "Note",
"text": "If you are curious about what is cooking for the upcoming Superalgos release, join the <a href='https://t.me/superalgosdevelop' target='_blank' style='color:blue;'>Superalgos Develop</a> Telegram group.",
"translations": [
{
@@ -73,6 +83,11 @@
"language": "DE",
"text": "Wenn Sie neugierig sind, was für die kommende Superalgos Version geplant ist, treten Sie der <a href='https://t.me/superalgosdevelop' target='_blank' style='color:blue;'>Superalgos Develop</a> Telegram Gruppe bei. ",
"updated": 1634220334096
},
{
"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
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Wir führen eine Backtesting Session mit einer Reihe von vorkonfigurierten Parametern durch, damit Sie einen kurzen Einblick in die Funktionsweise von Simulationen erhalten.",
"updated": 1634221802413
},
{
"language": "TR",
"text": "Simülasyonların nasıl çalıştığına hızlıca bir göz atabilmeniz için bir dizi önceden yapılandırılmış parametre ile bir Geri Test Oturumu ( Backtesting Session ) çalıştıracağız.",
"updated": 1636117912488
}
]
},
@@ -50,6 +55,11 @@
"language": "DE",
"text": "Wie Sie rechts sehen können, hat eine Handelssitzung einen Verweis auf ein Trading System. Das heißt, der Trading Bot wird die Regeln des referenzierten Handelssystems anwenden, um Entscheidungen zu treffen. Es gibt auch einen Verweis auf eine Trading Engine, ein Thema, das ein eigenes Kapitel wert ist, also lasse ich es für später!",
"updated": 1634221812093
},
{
"language": "TR",
"text": "Sağda görebileceğiniz gibi, bir ticaret oturumunun bir Ticaret Sistemine ( Tading System ) referansı vardır. Yani Ticaret Botu ( Trading Bot ), karar vermek için referans verilen ticaret sisteminin kurallarını uygulayacaktır. Trading Engine'e (Trading Engine) konusunu sonraya bırakacağım!",
"updated": 1636118809271
}
]
},
@@ -73,6 +83,11 @@
"language": "DE",
"text": "Die Trading Session wird von mehreren Parametern beeinflusst. Werfen Sie einen kurzen Blick auf deren Konfigurationen, indem Sie im Menü Konfigurieren wählen!",
"updated": 1634221844095
},
{
"language": "TR",
"text": "İşlem seansı birkaç parametreden (Trading Parameters) oluşur. Menüden Yapılandır'ı seçerek konfigürasyonlarına hızlıca göz atın!",
"updated": 1636118950433
}
]
}
@@ -19,6 +19,11 @@
"language": "DE",
"text": "Die Trading Parameters bestimmen wichtige Aspekte des Ablaufs einer Handelssitzung. Werfen wir einen kurzen, oberflächlichen Blick darauf...",
"updated": 1634222050905
},
{
"language": "TR",
"text": "Alım Satım Parametreleri ( Trading Parameters ), alım satım seansının nasıl yürütüldüğünün temel yönlerini belirler. Hızlı, yüzeysel bir göz atalım...",
"updated": 1636120903968
}
]
},
@@ -43,6 +48,11 @@
"language": "DE",
"text": "Session Base Asset: Es wird kein Kapital in BTC zugewiesen.",
"updated": 1634222067587
},
{
"language": "TR",
"text": "Session Base Asset (Oturum Temel Varlığı:): BTC'ye sermaye tahsis edilmez.",
"updated": 1636121181916
}
]
},
@@ -66,6 +76,11 @@
"language": "DE",
"text": "Session Quoted Asset: 1000 USDT des Anfangskapitals.",
"updated": 1634222071545
},
{
"language": "TR",
"text": "Session Quoted Asset (Oturumda Kote Edilen Varlık): 1000 USDT başlangıç sermayesi.",
"updated": 1636121192365
}
]
},
@@ -89,6 +104,11 @@
"language": "DE",
"text": "Time Range: Wir testen einen einzigen Tag, 2020-09-01.",
"updated": 1634222083921
},
{
"language": "TR",
"text": "Time Range (Zaman Aralığı): Tek bir günü test edeceğiz, 01 Eylül 2020",
"updated": 1636121263576
}
]
},
@@ -112,6 +132,11 @@
"language": "DE",
"text": "Time Frame: Aufträge werden jede Minute erteilt/storniert, daher ist 01-min angemessen.",
"updated": 1634222093512
},
{
"language": "TR",
"text": "Time Frame (Zaman periyodu): siparişler her dakika verilir/iptal edilir, bu nedenle 01 dakika uygundur.",
"updated": 1636121307468
}
]
},
@@ -136,6 +161,11 @@
"language": "DE",
"text": "Slippage: ist in diesem Fall irrelevant, da dieses spezielle Handelssystem nur Limit-Orders verwendet.",
"updated": 1634222103935
},
{
"language": "TR",
"text": "Slippage (Kayma): Bu özel ticaret sistemi sadece limit emirleri kullandığından, bu durum için önemsizdir.",
"updated": 1636121458592
}
]
},
@@ -159,6 +189,11 @@
"language": "DE",
"text": "Fee Structure: 0,1% ist die niedrigste Binance-Stufe.",
"updated": 1634222115242
},
{
"language": "TR",
"text": "Fee Structure (Komisyon): Binance için %0,1 olduğunu varsayalım.",
"updated": 1636121571785
}
]
},
@@ -183,6 +218,11 @@
"language": "DE",
"text": "Die übrigen Parameter haben keinen Einfluss auf die Simulation. Um mehr über Trading Parameters zu erfahren, werfen Sie einen Blick in die Dokumentation.",
"updated": 1634222122265
},
{
"language": "TR",
"text": "Kalan parametreler simülasyonu etkilemez. İşlem Parametreleri hakkında daha fazla bilgi edinmek için belgelere bakın.",
"updated": 1636121544786
}
]
}
@@ -25,6 +25,11 @@
"language": "DE",
"text": "Los geht's! Dies wird ohnehin schnell gehen, da wir nur einen einzigen Tag mit historischen Daten testen.",
"updated": 1634222237362
},
{
"language": "TR",
"text": "Haydi gidelim! Bir günlük zaman dilimi için Backtest yapacağımız için bu hızlı olacak.",
"updated": 1636122670075
}
]
},
@@ -44,6 +49,11 @@
"text": "Ejecutar un Trading Task es bastante similar a ejecutar una tarea de minería de datos. La diferencia radica en que, después de ejecutar la tarea, también debe ejecutar lel Trading Session.",
"updated": 1624454018479,
"style": "Text"
},
{
"language": "TR",
"text": "Bir ticaret görevi yürütmek ( Trading Tasks ), bir veri madenciliği (Data Mining Tasks ) görevi yürütmeye oldukça benzer. Aradaki fark, görevi çalıştırdıktan sonra, ticaret oturumunu da çalıştırmanız gerektiğidir.",
"updated": 1636122738568
}
]
},
@@ -68,6 +78,11 @@
"language": "DE",
"text": "Wählen Sie im Menü Lightning Strike Task die Option Run! <br/>Wählen Sie nun Run im Menü Backtesting Session!",
"updated": 1634222444040
},
{
"language": "TR",
"text": "Önce Lightning Strike Task menüsünde Run'ı seçin! Sonra Backtesting Session menüsünde Run'ı seçin!",
"updated": 1636122946019
}
]
},
@@ -91,6 +106,11 @@
"language": "DE",
"text": "Wenn die Backtesting Session anzeigt, dass die Verarbeitung abgeschlossen ist, beenden Sie die Aufgabe und klicken Sie auf Weiter.",
"updated": 1634222377772
},
{
"language": "TR",
"text": "Geriye Dönük Test Oturumu ( Backtesting Session ), işlemin tamamlandığını gösterdiğinde, Görevi ( Task) durdurun ve İleri'ye tıklayın.",
"updated": 1636122871481
}
],
"updated": 1622201246283
@@ -0,0 +1,373 @@
{
"type": "User Profile",
"name": "9v5ij",
"config": "{\"signature\":{\"message\":\"9v5ij\",\"messageHash\":\"0x9c8b42b80d96d62eb8db071c53bc015a0355fdb50c28e88b782cc837586e96d8\",\"v\":\"0x1b\",\"r\":\"0x3158d81f055ca53ba0eaa7f1944988b0ca9aed61c217c9ea514b776a7f804cc7\",\"s\":\"0x640ae44d03c13a9ce7a2f5bcb6ee69fd7efe21d04e3d8ce50e34bfeecd0c7427\",\"signature\":\"0x3158d81f055ca53ba0eaa7f1944988b0ca9aed61c217c9ea514b776a7f804cc7640ae44d03c13a9ce7a2f5bcb6ee69fd7efe21d04e3d8ce50e34bfeecd0c74271b\"},\"codeName\":\"9v5ij\"}",
"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": "{}",
"project": "Governance",
"airdropProgram": {
"type": "Airdrop Program",
"name": "New Airdrop Program",
"config": "{}",
"project": "Governance",
"tokensAwarded": {
"type": "Tokens Awarded",
"name": "New Tokens Awarded",
"project": "Governance",
"id": "15ecf9d0-e46d-4289-8784-df9ec18ba341",
"savedPayload": {
"position": {
"x": 14068,
"y": 5572.1354441275425
},
"targetPosition": {
"x": 14218,
"y": 5831.943065262874
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "0e1cefa3-8794-457c-9a0c-fe1fd1a9d120",
"savedPayload": {
"position": {
"x": 14218,
"y": 5831.943065262874
},
"targetPosition": {
"x": 14368,
"y": 6091.750686398206
},
"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": "4eb2d74a-ef56-43c2-a5a3-b49daa517607",
"savedPayload": {
"position": {
"x": 14968,
"y": 6091.750686398206
},
"targetPosition": {
"x": 14668,
"y": 6091.750686398206
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "7b1b42d4-0dda-47a9-bb0d-bd548ca461ff",
"savedPayload": {
"position": {
"x": 14668,
"y": 6091.750686398206
},
"targetPosition": {
"x": 14368,
"y": 6091.750686398206
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "a647510e-f151-4619-b489-1366f318e9c1",
"savedPayload": {
"position": {
"x": 14368,
"y": 6091.750686398206
},
"targetPosition": {
"x": 14218,
"y": 6351.558307533538
},
"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": "MarinitaMarina",
"config": "{}",
"project": "Governance",
"id": "84748fd0-9e15-41af-a28c-d9f321bf1afa",
"savedPayload": {
"position": {
"x": 14777.807621135331,
"y": 6721.173549804202
},
"targetPosition": {
"x": 14518,
"y": 6871.173549804202
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
},
"referenceParent": {
"type": "User Profile",
"name": "MarinitaMarina",
"id": "21252c86-67c4-4b29-a5ec-d4c3abf66286"
},
"referenceParentCombinedNodePath": [
[
"MarinitaMarina",
"User Profile"
]
]
}
}
],
"tokensAwarded": {
"type": "Tokens Awarded",
"name": "New Tokens Awarded",
"project": "Governance",
"id": "ba75161c-d035-4f39-8f0b-dadfde24bb9b",
"savedPayload": {
"position": {
"x": 14668,
"y": 7130.9811709395335
},
"targetPosition": {
"x": 14518,
"y": 6871.173549804202
},
"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": "1161aa98-cc1c-4ffc-83b5-e27b0e89ab3d",
"savedPayload": {
"position": {
"x": 14258.192378864669,
"y": 7021.173549804202
},
"targetPosition": {
"x": 14518,
"y": 6871.173549804202
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "7c8d0d67-2cb5-4bc0-90a5-92b123c1075d",
"savedPayload": {
"position": {
"x": 14518,
"y": 6871.173549804202
},
"targetPosition": {
"x": 14368,
"y": 6611.36592866887
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "174aecbe-65ec-4792-9942-a488142c9c18",
"savedPayload": {
"position": {
"x": 14368,
"y": 6611.36592866887
},
"targetPosition": {
"x": 14218,
"y": 6351.558307533538
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "41f19b40-6a69-4456-9f33-2db82b8b1fb2",
"savedPayload": {
"position": {
"x": 14218,
"y": 6351.558307533538
},
"targetPosition": {
"x": 13918,
"y": 6351.558307533538
},
"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": "acdf5494-cde0-471e-b321-498710b0f4e9",
"savedPayload": {
"position": {
"x": 13618,
"y": 6351.558307533538
},
"targetPosition": {
"x": 13918,
"y": 6351.558307533538
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "711c385c-cb76-4627-9dce-92fb13b0fd97",
"savedPayload": {
"position": {
"x": 13918,
"y": 6351.558307533538
},
"targetPosition": {
"x": 13918,
"y": 6351.558307533538
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
}
@@ -6,8 +6,8 @@
"translations": [
{
"language": "ES",
"text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que ha solicitado con cualquiera de los tipos existentes de solicitudes : Position Contribution Claim (Contribución de posición), Feature Contribution Claim Contribución de función), y Asset Contribution Claim( contribución de activo).",
"updated": 1636039210184
"text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que está solicitando con cualquiera de las solicitudes existentes: Position Contribution Claim, Feature Contribution Claim y Asset Contribution Claim.",
"updated": 1636110904315
}
]
},
@@ -24,8 +24,8 @@
"translations": [
{
"language": "ES",
"text": "Claim Power es el Token Power los Claims Program, y determina el número de tokens que ha solicitado con cualquiera de los tipos existentes de solicitudes: Position Contribution Claim, Feature Contribution Claim, y Asset Contribution Claim.",
"updated": 1636039401303
"text": "Claim Power (poder de la solicitud) es el Token Power que va al Claims Program, y determina el número de tokens que está solicitando con cualquiera de las solicitudes existentes: Position Contribution Claim, Feature Contribution Claim y Asset Contribution Claim.",
"updated": 1636110927536
}
]
}
@@ -2,12 +2,26 @@
"type": "Claim Support Power",
"definition": {
"text": "Claim Support Power is the Voting Power that goes into a Claim Votes Switch or Claim Votes in general and is a measure of how much you wish to support the Contribution Claims you are voting for.",
"updated": 1630355883567
"updated": 1630355883567,
"translations": [
{
"language": "ES",
"text": "Claim Support Power ( el poder de soporte de a solicitud) es el Voting Power (poder del voto) que va a un Claim Votes Switch (interruptor de voto de solcitud) o Claim Votes (votos de la solicitud) en general y es una medida de cuanto desea apoyar las Contribution Claims ( solicitu de contribución) que está votando.",
"updated": 1636107974372
}
]
},
"paragraphs": [
{
"style": "Text",
"text": "Right click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode. Then you can use docs.save to save your changes and app.contribute to send it to the main repository."
"text": "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.",
"translations": [
{
"language": "ES",
"text": "Click derecho y Editar para entrar al modo edición y cambiar este texto. ENTER para ingresar nuevos párrafos . ESC para salir del modo edición. Entonces puede usar docs.save para gardar los cambios y app.contribute para enviarlos al repositorio principal.",
"updated": 1636108181276
}
]
}
]
}
@@ -2,7 +2,14 @@
"type": "Claim Votes",
"definition": {
"text": "In general terms, Claim Votes allow you to support the claims of other users. The term Claim Votes is a generalization referring to either or all of the existing types: Position Claim Vote, Feature Claim Vote, and Asset Claim Vote nodes.",
"updated": 1630343978470
"updated": 1630343978470,
"translations": [
{
"language": "ES",
"text": "En términos generales Claim Votes le permite apoyar as solicitudes de otros usuarios. El término Claim Votes es una generalización que hace referencia a cualquiera a todos los tipos de nodos existentes: Position Claim Vote, Feature Claim Vote, y Asset Claim Vote.",
"updated": 1636109631180
}
]
},
"paragraphs": [
{
@@ -13,7 +20,14 @@
{
"style": "Callout",
"text": "In general terms, Claim Votes allow you to support the claims of other users. The term Claim Votes is a generalization referring to either or all of the existing particular types: Position Claim Vote, Feature Claim Vote, and Asset Claim Vote nodes.",
"updated": 1630343984130
"updated": 1630343984130,
"translations": [
{
"language": "ES",
"text": "En términos generales Claim Votes le permite apoyar as solicitudes de otros usuarios. El término Claim Votes es una generalización que hace referencia a cualquiera a todos los tipos de nodos existentes: Position Claim Vote, Feature Claim Vote, y Asset Claim Vote.",
"updated": 1636109637753
}
]
}
]
}
@@ -2,7 +2,14 @@
"type": "Claims Folder",
"definition": {
"text": "The different types of Claims Folder nodes serve as organizational devices. They also allow mapping entire sections of project definition hierarchies to place multiple claims at once.",
"updated": 1630258380621
"updated": 1630258380621,
"translations": [
{
"language": "ES",
"text": "Los diferentes tipos de nodos de Claims Folder (carpeta de solicitudes) sirven como dispositivos organizacionales. Ellos también permiten mapear secciones enteras de las jerarquías de definición del proyecto para colocar varias solicitudes al mismo tiempo.",
"updated": 1636109869528
}
]
},
"paragraphs": [
{
@@ -12,7 +19,14 @@
},
{
"style": "Text",
"text": "Project Definition Hierarchies have four types of Class nodes that serve as organizational devices:"
"text": "Project Definition Hierarchies have four types of Class nodes that serve as organizational devices:",
"translations": [
{
"language": "ES",
"text": "Project Definition Hierarchies ( jerarquías de definición de proyecto) tiene 4 tipos de clases de nodos que sirven como dispositivos organizacionales:",
"updated": 1636109968314
}
]
},
{
"style": "List",
@@ -34,7 +48,14 @@
{
"style": "Text",
"text": "Similarly, the Claims Program features a matching set of organizational devices:",
"updated": 1630259570492
"updated": 1630259570492,
"translations": [
{
"language": "ES",
"text": "De forma similar, el Claims Program (programa de solicitudes) un conjunto coincidente de dispositivos organizacionales:",
"updated": 1636110069861
}
]
},
{
"style": "List",
@@ -52,21 +73,49 @@
{
"style": "Important",
"text": "Notice that you can't place claims on an entire Pool. You may place claims on granular definitions only. That is why there are no pool claims folders or pool claims for that matter.",
"updated": 1630258341920
"updated": 1630258341920,
"translations": [
{
"language": "ES",
"text": "Note que no puede colocar solicitudes en un Pool entero. Puede colocar solicitudes solamente en definiciones granulares. Este es el porqué no hay un pool claims folders o pool claims en ese sentido.",
"updated": 1636110260349
}
]
},
{
"style": "Text",
"text": "You may use these folder nodes to organize your claims in arbitrary arrangements, but you can also make a more sophisticated use of them!",
"updated": 1630259141082
"updated": 1630259141082,
"translations": [
{
"language": "ES",
"text": "Puede usar estos nodos de carpetas para organizar sus solicitudes en arreglos arbitrarios, pero también puede hacer un uso más sofisticado de ellos!",
"updated": 1636110356848
}
]
},
{
"style": "Callout",
"text": "Use a Claims Folder node to establish a reference with the corresponding type of Class node. Then use the Install Missing Claims option on the menu of the Claims Folder to map the entire Class! The process creates a Claims Folder for each Class, and a claim for each Asset, Feature, or Position defined within each Class. ",
"updated": 1630357212192
"updated": 1630357212192,
"translations": [
{
"language": "ES",
"text": "Use un nodo Claims Folder para establecer una referencia con el correspondiente tipo de clase de nodo. Entonces use la opción de Install Missing Claims (Instalar solicitudes faltantes) del menú de Claims Folderpara mapear la clase entera! El porceso crea un Claims Folder para cada clase, y una solicitud para cada Asset, Feature, o Position definido en cada clase.",
"updated": 1636110581415
}
]
},
{
"style": "Success",
"text": "If something changes on the side of the definitions, you may always go back a run the Install Missing Claims process again. The process will remap the structure with the appropriate claims and folders."
"text": "If something changes on the side of the definitions, you may always go back a run the Install Missing Claims process again. The process will remap the structure with the appropriate claims and folders.",
"translations": [
{
"language": "ES",
"text": "Si algo cambia del lado de las definiciones, puede siempre regresar y hacer correr el proceso Install Missing Claims nevamente. El proceso remapeará la estructura con las solicitudes y carpetas adecuadas.",
"updated": 1636110709352
}
]
}
]
}
@@ -2,7 +2,14 @@
"type": "Asset Claim Vote",
"definition": {
"text": "Use this node to establish a reference with an Asset Contribution Claim placed by your colleague in the Claims Program section of their User Profile. This vote means that you support your colleague's claim with the Claim Support Power you drive into the Claim Votes node!",
"updated": 1630356280267
"updated": 1630356280267,
"translations": [
{
"language": "ES",
"text": "Use este nodo para establecer una referencia con una Asset Contribution Claim (slicitud decontribución de activo) colocada por un clega en la sección Claims Program de sur User Profile( perfil de usuario). Este voto significa que apoya a la solicitud de su colega con el Support Power que dirija al nodo de Claim Votes!",
"updated": 1636111162787
}
]
},
"paragraphs": [
{
@@ -2,7 +2,14 @@
"type": "Asset Claims Folder",
"definition": {
"text": "Use this node as an organizational device, to spawn Asset Contribution Claim nodes, and to map entire structures in an Assets hierarchy to place multiple Contribution Claims at once.",
"updated": 1630352114041
"updated": 1630352114041,
"translations": [
{
"language": "ES",
"text": "Use este nodo como un dispositivo organizacional, para crear nodos de Asset Contribution Claim, y a mapear estructuras enteras en una jerarquía de Assets ( activo) para colocar múltiples solicitudes de contrbucion al mismo tiempo.",
"updated": 1636111484600
}
]
},
"paragraphs": [
{
@@ -2,7 +2,14 @@
"type": "Feature Claim Vote",
"definition": {
"text": "Use this node to establish a reference with a Feature Contribution Claim placed by your colleague in the Claims Program section of their User Profile. This vote means that you support your colleague's claim with the Claim Support Power you drive into the Claim Votes node!",
"updated": 1630356075429
"updated": 1630356075429,
"translations": [
{
"language": "ES",
"text": "Use este nodo para establecer una referrencia con una Feature Contribution Claim ( solicitud de contribución de función) colocada por un colega en la sección del Claims Program sde su User Profile. Este voto significa que apoya a la slicitud de su colega con el Claim Support Power que dirija a su nodo de Claim Votes!",
"updated": 1636111740902
}
]
},
"paragraphs": [
{
@@ -2,7 +2,14 @@
"type": "Feature Claims Folder",
"definition": {
"text": "Use this node as an organizational device, to spawn Feature Contribution Claim nodes, and to map entire structures in a Features hierarchy to place multiple Contribution Claims at once.",
"updated": 1630352152356
"updated": 1630352152356,
"translations": [
{
"language": "ES",
"text": "Use este nodo como un dispositivo organizacional, para abrir nodos Feature Contribution Claim (solicitud de contribución de función), y para mapear estructuras enteras en una jerarquía de Feature (función) y colocar múltiples solicitudes de Contribution Claims al mismo tiempo.",
"updated": 1636112015354
}
]
},
"paragraphs": [
{
@@ -2,7 +2,14 @@
"type": "Position Claim Vote",
"definition": {
"text": "Use this node to establish a reference with a Position Contribution Claim placed by your colleague in the Claims Program section of their User Profile. This vote means that you support your colleague's claim with the Claim Support Power you drive into the Claim Votes node!",
"updated": 1630356265895
"updated": 1630356265895,
"translations": [
{
"language": "ES",
"text": "Use este nodo para establecer una referencia con una Position Contribution Claim (solicitud de contribución de posición) colocada por un colega en la sección Claims Program de su User Profile. Este voto significa que apoya la solicitud de su colega con el Claim Support Power que dirija a su nodo de Claim Votes!",
"updated": 1636112479494
}
]
},
"paragraphs": [
{
@@ -2,7 +2,14 @@
"type": "Position Claims Folder",
"definition": {
"text": "Use this node as an organizational device, to spawn Position Contribution Claim nodes, and to map entire structures in a Positions hierarchy to place multiple Contribution Claims at once.",
"updated": 1630352182572
"updated": 1630352182572,
"translations": [
{
"language": "ES",
"text": "Use este nodo como un dispositivo organizacional, para abrir nodos Position Contribution Claim (solicitud de contribución de posición), para mapear estructuras enteras en una jerarquía de Positions (posiciones) para colocar múltiples solcitudes de Contribution al mismo tiempo.",
"updated": 1636112230234
}
]
},
"paragraphs": [
{
@@ -40,7 +40,9 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock
}
function initialize() {
socketServer = new SA.nodeModules.ws.Server({ port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT })
let port = JSON.parse(NT.networkNode.p2pNetwork.thisNetworkNode.node.config).webSocketsPort
socketServer = new SA.nodeModules.ws.Server({ port: port })
clientInterface = NT.projects.socialTrading.modules.clientInterface.newSocialTradingModulesClientInterface()
peerInterface = NT.projects.socialTrading.modules.peerInterface.newSocialTradingModulesPeerInterface()
@@ -6,6 +6,7 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() {
let thisObject = {
joinTheNetworkAsNetworkPeer: joinTheNetworkAsNetworkPeer,
p2pNodesToConnect: undefined,
thisNetworkNode: undefined,
/* Framework Functions */
initialize: initialize,
finalize: finalize
@@ -37,6 +38,8 @@ exports.newNetworkModulesP2PNetwork = function newNetworkModulesP2PNetwork() {
let p2pNetworkNode = SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES[i]
if (thisP2PNodeId !== p2pNetworkNode.node.id) {
thisObject.p2pNodesToConnect.push(p2pNetworkNode)
} else {
thisObject.thisNetworkNode = p2pNetworkNode
}
}
break
@@ -0,0 +1,50 @@
exports.newNetworkModulesP2PNetworkPeers = function newNetworkModulesP2PNetworkPeers() {
/*
This module represents the P2P Nodes we are connected to.
*/
let thisObject = {
peers: undefined,
/* Framework Functions */
initialize: initialize,
finalize: finalize
}
return thisObject
function finalize() {
thisObject.peers = undefined
}
async function initialize() {
/*
On a first iteration, we will try to connect to 2 Network Peers, one upstream and one downstream,
meaning one with higher ranking that us, and the other with lower ranking than us.
*/
thisObject.peers = []
let totalConnected = 0
for (let i = 0; i < NT.networkNode.p2pNetwork.p2pNodesToConnect.length; i++) {
if (totalConnected === 2) { break }
let peer = {}
peer.p2pNetworkNode = NT.networkNode.p2pNetwork.p2pNodesToConnect[i]
peer.webSocketsClient = SA.projects.network.modules.webSocketsNetworkClient.newNetworkModulesWebSocketsNetworkClient()
await peer.webSocketsClient.initialize('Network Peer', peer.p2pNetworkNode)
.then(addPeer)
.catch(onError)
function addPeer() {
thisObject.peers.push(peer)
totalConnected++
}
function onError(err) {
if (err !== undefined) {
console.log('[ERROR] P2P Network Peers -> onError -> While connecting to node -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name + ' -> ' + err.message)
} else {
console.log('[WARN] P2P Network Peers -> onError -> Peer Not Available at the Moment -> ' + peer.p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + peer.p2pNetworkNode.node.name)
}
}
}
}
}
@@ -1,6 +1,8 @@
exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWebSocketsNetworkClient() {
let thisObject = {
host: undefined,
port: undefined,
sendMessage: sendMessage,
initialize: initialize,
finalize: finalize
@@ -29,11 +31,13 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
web3 = new SA.nodeModules.web3()
let host = JSON.parse(p2pNetworkNode.node.config).host
let port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort
thisObject.host = JSON.parse(p2pNetworkNode.node.config).host
thisObject.port = JSON.parse(p2pNetworkNode.node.config).webSocketsPort
socketClient = new SA.nodeModules.ws('ws://' + host + ':' + port)
socketClient = new SA.nodeModules.ws('ws://' + thisObject.host + ':' + thisObject.port)
await setUpWebsocketClient(callerRole, p2pNetworkNode)
console.log('Websockets Client Connected to Network Node via Web Sockets .............. Connected to ' + p2pNetworkNode.userProfile.userProfileHandle + ' -> ' + p2pNetworkNode.node.name + ' -> ' + thisObject.host + ':' + thisObject.port)
}
async function setUpWebsocketClient(callerRole, p2pNetworkNode) {
@@ -197,8 +201,15 @@ exports.newNetworkModulesWebSocketsNetworkClient = function newNetworkModulesWeb
}
function onError(err) {
if (err.message.indexOf('ECONNREFUSED') >= 0) {
console.log('[WARN] Web Sockets Client -> onError -> Nobody home at ' + thisObject.host + ':' + thisObject.port)
reject()
return
}
console.log('[ERROR] Web Sockets Client -> onError -> err.message = ' + err.message)
console.log('[ERROR] Web Sockets Client -> onError -> err.stack = ' + err.stack)
reject()
return
}
} catch (err) {
+6
View File
@@ -1413,6 +1413,12 @@
"propertyName": "p2pNetworkNode",
"functionName": "newNetworkModulesP2PNetworkNode",
"fileName": "P2PNetworkNode.js"
},
{
"name": "P2P Network Peers",
"propertyName": "p2pNetworkPeers",
"functionName": "newNetworkModulesP2PNetworkPeers",
"fileName": "P2PNetworkPeers.js"
}
],
"utilities": [
+10 -6
View File
@@ -1,7 +1,7 @@
{
"appId": "org.superalgos.platform",
"productName": "Superalgos",
"asar": false,
"asar": true,
"generateUpdatesFilesForAllChannels": true,
"files": [
"**/*",
@@ -54,12 +54,16 @@
"target": [
{
"target": "dmg",
"arch": "x64"
},
"arch": ["x64", "arm64"]
}
]
},
"linux": {
"target": [
{
"target": "dmg",
"arch": "arm64"
}
"target": "AppImage",
"arch": ["x64", "armv7l"]
}
]
},
"extraMetadata": {
+16
View File
@@ -0,0 +1,16 @@
/*
The Superalgos Network offers 3 types of services:
* Social Graph Service
* Search Index Service
* Private Message Service
Users can decide which services to run at their node.(TODO)
This module represents the Nodejs command that users have to start the Network Node..
*/
let APP_ROOT = require('./NetworkRoot.js')
let APP_ROOT_MODULE = APP_ROOT.newNetworkRoot()
APP_ROOT_MODULE.run({P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-1'})
+16
View File
@@ -0,0 +1,16 @@
/*
The Superalgos Network offers 3 types of services:
* Social Graph Service
* Search Index Service
* Private Message Service
Users can decide which services to run at their node.(TODO)
This module represents the Nodejs command that users have to start the Network Node..
*/
let APP_ROOT = require('./NetworkRoot.js')
let APP_ROOT_MODULE = APP_ROOT.newNetworkRoot()
APP_ROOT_MODULE.run({P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-2'})
+16
View File
@@ -0,0 +1,16 @@
/*
The Superalgos Network offers 3 types of services:
* Social Graph Service
* Search Index Service
* Private Message Service
Users can decide which services to run at their node.(TODO)
This module represents the Nodejs command that users have to start the Network Node..
*/
let APP_ROOT = require('./NetworkRoot.js')
let APP_ROOT_MODULE = APP_ROOT.newNetworkRoot()
APP_ROOT_MODULE.run({P2P_NETWORK_NODE_SIGNING_ACCOUNT: 'P2P-Network-Node-3'})