Die Scripting-Engine steht ab der Version 13.5 zur Verfügung stehen und die bisherige Filter-Techniken zunächst erweitern, um eine freie programmierbare Script-Engine. Später wird die bisherige Filter-Lösung aber abgelöst. Zielstellung in der Entwicklung war es den Nutzer einen sehr hohen Freiheitsgrad in der Umsetzung eigener Filter zu geben und als Zusatznutzen, Routineaufgaben in der Titel-und Kurspflege automatisieren zu können. Eine Dokumentation der aktuell zur Verfügung stehenden Methoden ist zu finden unter: http://www.shareholder24.de/docs/classes.html

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:

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

Ab >v2.6 geplant:

  • Breakpoints (Haltepunkte, wo die Programmausführung automatisch stopp)
  • Step-by-Step Ausführung
  • Variablen-Watcher d.h. zur Laufzeit können die aktuell gesetzten Werte ausgewertet werden

 

Siehe zur Nutzung:

 

Migration der Alt-Scripte

Da das bisherige Filtersystem bisher wenig verwendet worden ist, wird es nur eine Basis-Migration geben, ohne zwangsweise sofort lauffähige Scripte nutzen zu können. Eine Nachbearbeitung wird hier sogar Pflicht sein. Eine zeitweise Coexistenz der alten Möglichkeiten und des neuen Filtersystems ist nach aktuellem Status vorgesehen.

Die bisherigen Alt-Scripte wurden soweit sinnvoll auch im Scripting-Studio bereits integriert. Der Schwerpunkt der bereitgestellten Standard-Scripte sollen aber nutzbare Aktien-Strategien sein.

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:

procedure DoSomething;
begin
  CallSomething;
end;

begin
  CallSomethingElse;
end;

 

SCRIPT 2:

begin
  CallSomethingElse;
end;

 

SCRIPT 3:

function MyFunction;
begin
  result:='Ok!';
end;


SCRIPT 4:

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

Identifiers

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:

VarName
_Some
V1A2

Einige ungültige Identifier:

2Var
My Name
Some-more
This,is,not,valid

 

 

 

  • Keine Stichwörter