Shareholder R/2 Börsensoftware
Space shortcuts

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Die Scripting-Engine erweitert die bisherigen Filter-Module, um eine freie programmierbare Script-Engine. Es soll hiermit ein sehr hohen Freiheitsgrad in der Umsetzung eigener Filter gegeben werden und Routineaufgaben in der Titel-und Kurspflege automatisiert werden können. Eine Dokumentation der aktuell zur Verfügung stehenden Methoden finden sich unter: httphttps://www.shareholder24.de/docs/classes.html

Siehe zur Nutzung:

Highlights

  • Zugriff auf (alle) internen Datenobjekte
  • Syntax-Highlighting
  • Support einer produktiven und einer Entwicklungs-Version
  • Support für Script-Bibliotheken, womit jedes Script von einem anderen aufgerufen werden kann. Dieser Mechanismus wird auch genutzt, um eine gemeinsame Bibliothek zu pflegen
  • Hohe Ausführungsgeschwindigkeit (hier 0.4s über alle Aktien inkl. Log-Ausgaben)
  • Source-Explorer

Überblick

Die Scripting-Engin führte freie geschriebene Scripte aus. Die Skripte sind in einem Pascal-Syntax, wobei spätere Alternativ-Sprachen denkbar sind (VB, Java, JS, Python). Der Einsatz der Scripting-Engine soll durchgängig durch SHAREholder vollzogen werden, d.h. eine Verwendung sowohl in Filter-Systemen, Druck-Templates als auch indirekt in den Handelssystemen ist vorgesehen. Der Startpunkt (v13.5) liegt hier bei einem Filtersystemen. Dabei ist ein wesentliches Feature der Zugriff auf alle relevanten internen Datenobjekte von SHAREholder. Es stehen damit beispielsweise folgende Funktionen zur Verfügung, die nicht nur lesenden Charakter haben:

  • Automatische Anlegen einer Watchliste auf der Basis von Stammdaten-Filtern
  • Automatische Bereinigung von Kommentaren in den vorhandenen Transaktionen, um hier nachträglich Ergänzungen vorzunehmen
  • Automatische Bereinigung von Kursdaten
  • Automatisches manuelles Erzeugen von Dateien (z.B. CSV-Export-Dateien) mit eigenen komplexeren Ausdrücken
  • Anzeige von interessanten Titeln nach eigenen Regeln in Filterlisten

Folgender Syntax wird grundsätzlich unterstützt, womit komplette Programmstrukturen unterstützt werden:

Code Block
languagedelphi
themeEclipse
linenumberstrue
begin .. end 
procedure & function 
if .. then .. else 
for .. to .. do .. step 
while .. do
repeat .. until
try .. except & try .. finally blocks
case statements
array constructors (x:=[ 1, 2, 3 ];)
^ , * , / , and , + , - , or , <> , >=, <= , = , > , < , div , mod , xor , shl , shroperators
access to object properties and methods ( ObjectName.SubObject.Property)

Damit sind in Summe komplexere Scripte in SHAREholder nutzbar für verschiedene Strategie-Filter-Umsetzungen aber auch für eigene Massenoperationen bis hin zu Im-Exportszenarien. Die in SHAREholder genutzt objektorientierte Programmierung kann dabei in Skripten werden, um auf Daten und Methoden hierarchisch zuzugreifen. Das Schreiben eigener Klassen würde zuweit führen und ist auch nicht umgesetzt.

Editor

Der Editor setzt folgende Anforderungen um (Status v2.5):

  • freie Codeeingabe 
  • Autovervollständigung
  • Parameter-Darstellung d.h. innerhalb von Funktionen, Proceduren werden die erlaubten Parameter gezeigt
  • Syntax-Highlighting auf die eingestellte Default-Sprache (hier Pascal/Delphi) und 
  • die Wiederverwendung von Code-Fragmenten durch Code-Bibliotheken
  • Code-Folding d.h. das Ein/Ausklappen von Code-Fragementen
  • Snippet-Bibliothek, um sofort typische Fragemente nutzen zu können
  • Automatischen Source-Explorer für aktuelle procedures und Variablen

Syntax der Scripte

Scripte enthalten a) procedure und function declarations und b) Haupt-Blöcke.
Dennoch sind beide optional, d.h. es ist nicht zwingend erforderlichm, dass ein begin..end Block geschrieben wird. Hier einfach einige Beispiele:

SCRIPT 1:

Code Block
languagedelphi
themeEclipse
linenumberstrue
procedure DoSomething;
begin
  CallSomething;
end;

begin
  CallSomethingElse;
end;


SCRIPT 2:

Code Block
languagedelphi
themeEclipse
linenumberstrue
begin
  CallSomethingElse;
end;


SCRIPT 3:

Code Block
languagedelphi
themeEclipse
linenumberstrue
function MyFunction;
begin
  result:='Ok!';
end;


SCRIPT 4:

Code Block
languagedelphi
linenumberstrue
CallSomethingElse;

Wie in Passcal, sollten Statements immer mit einem Semikolon ";" abgeschlossen werden. begin..end Blöcke können jederzeit genutzt werden, um Statements zu gruppieren. Diese sind damit mit der Code-Folding-Funktion später auch ein-ausklappbar.

Siehe auch:

Scripting - Logbuchnutzung

Identifier

Identifier Namen in Scripten (Variablen-Namen, function and procedure names, etc.) folgen den meisten bekannten Regeln aus Pascal d.h. 

  • should begin with a character (a..z or A..Z), or '_', and can be followed by alphanumeric chars or '_' char. 
  • Cannot contain any other character os spaces.

Gültige Identifier:

Code Block
languagedelphi
themeEclipse
linenumberstrue
VarName
_Some
V1A2

Einige ungültige Identifier:

Code Block
languagedelphi
themeEclipse
linenumberstrue
2Var
My Name
Some-more
This,is,not,valid




Table of Contents