Skip to main content

Verfügbare Variablen und Datenstrukturen


Variable
Typ-Referenz
Hintergründe
Beispiel-Zugriffe
1 varApplication TApplication

Zugriff auf das Applikationsobjekt der Anwendung wie z.B.

  • Application.ProcessMessages (Abarbeitung von UI-Refreshs)

2 varParamCombobox TAdvOfficeComboBox

Zugriff auf eine Auswahlbox, die für den Nutzer angezeigt wird, um für das Script Auswahloptionen für den Nutzer zur Verfügung zu stellen. In der Susan-Levermann-Strategie wird über diese eine Liste der verfügbaren Watchlisten angezeigt und nutzbar gemacht. Für Nutzer der Strategie steht der entsprechende Source-Code zur Verfügung.
z.B. für

  • Watchlisten
  • Depots
  • Marktsegmente

Auswahlbox für den Nutzer füllen mit allen Watchlisten-Einträgen, danach mit allen MarktSegment-Einträgen und final als ersten Eintrag (Index=0) "Kein-Watchlisten-Filter" einfügen.

varParamCombobox.Items.Clear;
for lIx:=1 to varWatchlists.Count do
    varParamCombobox.Items.AddObject('Watchliste: '+varWatchlists.Items[lIx-1].Displayname, varWatchlists.Items[lIx-1]);

for lIx:=1 to varSegments.Count do
   varParamCombobox.Items.AddObject('Markt: '+varSegments.Items[lIx-1].Displayname, varSegments.Items[lIx-1]);

varParamCombobox.Items.Insert(0,'Kein Watchlisten-Filter');
varParamCombobox.ItemIndex:=0;
varParamCombobox.Enabled:=true;
3 varParamCheckbox TAdvOfficeCheckBox Zugriff auf eine Checkbox, die für den Nutzer angezeigt wird, um für das Script Auswahloptionen für den Nutzer zur Verfügung zu stellen. In der Susan-Levermann-Strategie wird diese für "Detaillierte Konfiguration" als Option genutzt.

Aktiviere überhaupt die Auswahlbox für den Nutzer.  Im Standard wird die Auswahlbox überhaupt nicht angezeigt.
Hinweis: Dies sollte vorzugsweise in einer "doInit-Methode" passieren. 

  varParamCheckbox.Caption:='Frage Strategie-Parameter individuell ab ...';
  varParamCheckbox.Enabled:=true;
  varParamCheckbox.Visible:=true;
4 varLog TAdvListView

Die Primärausgabe erfolgt über das varLog-Objekt vom Typ TAdvListview. Es ist eine Komponente zur hierarchischen, gruppierten Tabellenausgabe von Informationen. Die Objekte besitzt Columns und eine GroupView-Eigenschaft zur automatischen Gruppierung von Einträgen.

Um ein neuen Log-Eintrag zu erzeugen, kann über varLog.Items.Add eine neue Zeile eingefügt werden. Das dabei zurückgegebene Objekt ist vom Typ TListItem, was eine Caption, eine GroupID, ImageIndex, Checked-Eigenschaft besitzt.

Kopfzeile der Logausgabe gestalten:

(* BeginUpdate/EndUpdate sollte aus Performancegründen zwingend genutzt werden! *)
varLog.BeginUpdate;
varLog.Items.Clear;

(* Header für das Logging passend vorbereiten *)
varLog.Columns.Clear;
lColumn:=varLog.Columns.Add; lColumn.Caption:='Name'; lColumn.Width:=350;
lColumn:=varLog.Columns.Add; lColumn.Caption:='Alter Wert'; lColumn.Width:=200;
lColumn:=varLog.Columns.Add; lColumn.Caption:='Neuer Wert'; lColumn.Width:=200;

varLog.GroupView:=false;
varLog.EndUpdate;


Konkretes Logging:

function doLogWithOneSubMessage( logMessage, logSubMessage ): TListItem;
begin
  result:=varLog.Items.Add;
  with result as TListItem do
  begin
    Caption:=logMessage;
    subitems.add( logSubMessage );
    groupID:=0;
  end;
end;


Automatische Sortierung:

varLog.SortColumn:=pColumn+1;
varLog.SortDirection:=pSortDirection;
varLog.SortType:=3;
varLog.Sort;
5 varPanelStatus TAdvOfficeStatusPanel Status-Updates für den Nutzer über die Statuszeile. Dabei können primär Textnachrichten über die varPanelStatus.Text Eigenschaft ausgegeben werden.-
6 varPanelProgress TAdvOfficeStatusPanel Status-Updates für den Nutzer über die Statuszeile. Dabei liegt der Fokus auf der Fortschrittsanzeige.
varPanelProgress.Progress.Max:=varStocks.Count;
varPanelProgress.Progress.Min:=1;
varPanelProgress.Progress.ShowGradient:=true;
7 varIsCanceled Boolean Der Nutzer kann ein Script in der Berechnung abbrechen. Dabei wird das Script nicht hart abgebrochen, sondern zunächst nur die Variable auf "true" gesetzt. Innerhalb des Scripts sollte diese daher immer abgefragt werden, um einen geordneten Abbruch zu realisieren.

Haupt-Iteration über alle Aktien, wobei aber bei jeder Iteration explizit die Abbruchsvariable "varIsCanceled" geprüft wird, um geordnet abzubrechen:

   (* Durchlauf alle Titel zur Prüfung *)
    for idxStock:=1 to varStocks.Count do if (not varIsCanceled) then
    begin
8 varStocks TStocks Zugriff auf alle Assets/Stocks in ShareHolder. Der Zugriff kann dabei sowohl lesend, als auch schreibend erfolgen. So können z.B. automatisiert Namensanpassungen vorgenommen werden.

Iteration über alle Stocks:

(* Durchlauf alle Titel zur Prüfung *)
 for idxStock:=1 to varStocks.Count do if (varIsCanceled=false) then
 begin
     itStock:=varStocks.Items[idxStock-1];


Zugriff auf Stock-Variablen, um diese automatisiert zu verändern:

(* Zugriff entspricht itStock.StockVariables.ItemsName['RIC[isin]']; Über die ID ist es jedoch "stabiler" *)

lStockVar:=lStock.StockVariables.ItemsNr[12];
if (lStockVar<>nil) then
   begin
...
9 varIndicators TIndicatorGroups  Mittels Indicator.Parameter.Items[1].Wert:=10; könnten die Parameter des Indikators verändert werden. Die Bedeutung der Parameter muss pro Indikator nachgeschaut werden z.B. über Einstellungen / Indikatorengruppen / Doppelklick auf den Indikator.
   itIndicator:=varIndicators.CreateIndicatorWithTypeID(cRSL);

10 varSegments TSegments  Zugriff auf alle Marktsegmente z.B. DAX, MDAX etc.
11 varTransactions TTransactions 

12 varWatchlists TWatchlists Zugriff auf die internen Watchlisten. 

Neue Watchliste erzeugen, wenn nicht zuvor angelegt mit dem Namen "Wa:ETF-Momentum-Sortlist"

if (fFirst) and (fUseSeparatWL) then
begin
  fWatchlist:=varWatchlists.FindOrCreate('Wa:ETF-Momentum-Sortlist');
  fWatchlist.Clear();
  fFirst:=false;
end;


Eintrag hinzufügen

if (fWatchlist<>nil) then
  begin
     if (not fUseSeparatWL) then
       fWatchItem:=fWatchlist.List.FindISIN(fItem.SubItems[pISINColumn]) else
     begin
       fWatchItem:=TWatchListItem.Create(itStock);
       fWatchlist.List.Add(fWatchItem);
     end;

     if (fWatchItem<>nil) then
     begin
        fWatchItem.CompareDate:=Now;
        //itWatchItem.Comment:='..';
        fWatchItem.PosNr:=StrToFloat(fItem.SubItems[pSumColumn]);
     end;
  end;
13 varDepot TCalculatedDepotItems  Zugriff auf alle berechneten Depot-Positionen mit Stückzahl, gemittelten Preis, letzter Transaktion etc.
14 varStops TStopRates Zugriff auf alle definierten Stopps im Programm für Titel. Dabei enthält die Liste nur definierte Stopps d.h. Titel müssen keine Stopps haben. Stopps sind unabhängig von Depotpositionen.
15 varProgramSettings TProgramSettings  Zugriff auf alle internen Programmeinstellungen wie Schriftgrößen, Kalkulationsbasis etc.

Verwende die offizielle Programmeinstellung für die KGV-Berechnung d.h. aktuelles Basisjahr (0), kommendes Jahr etc.

function calcPointsKGVRAW: Double;
begin
  Result:=itStock.KGV(varProgramSettings.ErgBasis);
end;
16 varStockExchanges TStockExchanges Zugriff auf die definierten Börsen wie F, Nasdaq, Xetra
17 varINetVars TINetVars Zugriff auf die definierten Aktualisierungs-Internetvariablen
18 varINetAddrs TINetAddrs Zugriff auf die definierten Aktualisierungs-Internetadressen
19 varAssets TAssets Zugriff auf die definierten Asset-Klassen
20 varStrategy TStrategy Zugriff auf alle definierten Strategien
21 varNNetze TNets Zugriff auf alle definierten Vorhersage-Modelle
22 varAccounts TAccounts Zugriff auf alle Konten
23 varImpFormate TImpFormats  Zugriff auf alle Importformate
24 varTradeMethods TTradeMethods

25 varAssessments TAssessments

26 varSparplaene TDepotSavingPlans  Zugriff auf die Sparpläne
27 varINetUpdateGroups TINetUpdateGroups Zugriff auf die Kursaktualisierungsgruppen


Registrierung von Variablen und Kontext im Detail für das Scripting-Studio

Version 19.3.2

 with Scripter do
  begin
    LibOptions.SearchPath.Add(IDEEngine.BasePath);
    LibOptions.SourceFileExt := '.script';
    LibOptions.CompiledFileExt := '.psc';

    Scripter.OptionExplicit := false;
    logList.Items.Clear;
    Scripter.AddObject('varApplication', Application);
    Scripter.AddObject('varParamCombobox', fAdvCombobox);
    Scripter.AddObject('varParamCheckbox', fAdvCheckbox);


    Scripter.DefineClassByRTTI(TApplication);
    Scripter.DefineClassByRTTI(TBasisobject); // ,roInclude,false,'TBasisObject',[mvPublic,mvPublished]
    Scripter.DefineClassByRTTI(TAdvListView);
    Scripter.DefineClassByRTTI(TListItems);
    Scripter.DefineClassByRTTI(TStrings);
    Scripter.DefineClassByRTTI(TListItem);
    Scripter.DefineClassByRTTI(TListGroup);
    Scripter.DefineClassByRTTI(TListGroups);
    Scripter.DefineClassByRTTI(TStringList);


    Scripter.AddObject('varLog', flogList);
    Scripter.DefineClassByRTTI(TListColumns);
    Scripter.DefineClassByRTTI(TListColumn);
    Scripter.AddObject('varPanelStatus', fStatusPanel);
    Scripter.AddObject('varPanelProgress', fProgressPanel);
    Scripter.AddVariable('varIsCanceled', fIsCanceled);

    Scripter.DefineClassByRTTI(TStocks);
    Scripter.DefineClassByRTTI(TAsset);
    Scripter.DefineClassByRTTI(TAssets);
    Scripter.DefineClassByRTTI(TAutoImports);
    Scripter.DefineClassByRTTI(TCalculatedDepotAccount);
    Scripter.DefineClassByRTTI(TCalculatedDepotAccounts);
    Scripter.DefineClassByRTTI(TCalculatedDepotItem);
    Scripter.DefineClassByRTTI(TCalculatedDepotItems);
    Scripter.DefineClassByRTTI(TCandle);
    Scripter.DefineClassByRTTI(TCandleFormation);
    Scripter.DefineClassByRTTI(TChartindicator);
    Scripter.DefineClassByRTTI(TDepotSavingPlan);
    Scripter.DefineClassByRTTI(TDepotSavingPlans);
    Scripter.DefineClassByRTTI(TDynamicFilter);
    Scripter.DefineClassByRTTI(TDynamicFilterCondition);
    Scripter.DefineClassByRTTI(TDynamicFilterConditions);
    Scripter.DefineClassByRTTI(TDynamicFilterConditionTree);
    Scripter.DefineClassByRTTI(TDynamicFilterConditionTrees);
    Scripter.DefineClassByRTTI(TDynamicFilterResult);
    Scripter.DefineClassByRTTI(TDynamicFilterResults);
    Scripter.DefineClassByRTTI(TDynamicFilters);
    Scripter.DefineClassByRTTI(TEnhancedList);
    Scripter.DefineClassByRTTI(TFilterTaipan);
    Scripter.DefineClassByRTTI(TFilterTaipanItem);
    Scripter.DefineClassByRTTI(THelperAverage);
    Scripter.DefineClassByRTTI(THTMLParser);
    Scripter.DefineClassByRTTI(TIAroon);
    Scripter.DefineClassByRTTI(TIBollinger);
    Scripter.DefineClassByRTTI(TICandleFormationen);
    Scripter.DefineClassByRTTI(TICandleFormationenCache);
    Scripter.DefineClassByRTTI(TICCI);
    Scripter.DefineClassByRTTI(TIChaikin);
    Scripter.DefineClassByRTTI(TICoppock);
    Scripter.DefineClassByRTTI(TIDMI);
    Scripter.DefineClassByRTTI(TIDSStochastik);
    Scripter.DefineClassByRTTI(TIForceIndex);
    Scripter.DefineClassByRTTI(TIGDEMA);
    Scripter.DefineClassByRTTI(TIGDUmsatz);
    Scripter.DefineClassByRTTI(TIHistVol);
    Scripter.DefineClassByRTTI(TIMACD);
    Scripter.DefineClassByRTTI(TIMFI);
    Scripter.DefineClassByRTTI(TIMomentum);
    Scripter.DefineClassByRTTI(TImpFormat);
    Scripter.DefineClassByRTTI(TImpFormats);
    Scripter.DefineClassByRTTI(TIndicator);
    Scripter.DefineClassByRTTI(TIndicatorGroup);
    Scripter.DefineClassByRTTI(TIndicatorGroups);
    Scripter.DefineClassByRTTI(TIndicatorParam);
    Scripter.DefineClassByRTTI(TIndicatorParams);
    Scripter.DefineClassByRTTI(TIndicatorSignals);
    Scripter.DefineClassByRTTI(TINegativeVolumeIndex);
    Scripter.DefineClassByRTTI(TInetAddr);
    Scripter.DefineClassByRTTI(TINetAddrs);
    Scripter.DefineClassByRTTI(TINetUpdateGroup);
    Scripter.DefineClassByRTTI(TINetUpdateGroups);
    Scripter.DefineClassByRTTI(TINetVar);
    Scripter.DefineClassByRTTI(TINetVars);
    Scripter.DefineClassByRTTI(TINewHigh);
    Scripter.DefineClassByRTTI(TINewLow);
    Scripter.DefineClassByRTTI(TINNKorrelation);
    Scripter.DefineClassByRTTI(TINNPrognose);
    Scripter.DefineClassByRTTI(TInternetProperties);
    Scripter.DefineClassByRTTI(TIntSignalIndicatorCache);
    Scripter.DefineClassByRTTI(TIOnBalanceVolume);
    Scripter.DefineClassByRTTI(TIPFE);
    Scripter.DefineClassByRTTI(TIPositiveVolumeIndex);
    Scripter.DefineClassByRTTI(TIPSAR);
    Scripter.DefineClassByRTTI(TIPvt);
    Scripter.DefineClassByRTTI(TIRAVI);
    Scripter.DefineClassByRTTI(TIRMI);
    Scripter.DefineClassByRTTI(TIRSI);
    Scripter.DefineClassByRTTI(TIRSL);
    Scripter.DefineClassByRTTI(TIRWI);
    Scripter.DefineClassByRTTI(TISignalIndicator);
    Scripter.DefineClassByRTTI(TISignalIndicatorCache);
    Scripter.DefineClassByRTTI(TISignalIndicators);
    Scripter.DefineClassByRTTI(TIStdDev);
    Scripter.DefineClassByRTTI(TIStochastik);
    Scripter.DefineClassByRTTI(TITrix);
    Scripter.DefineClassByRTTI(TITRWinkel);
    Scripter.DefineClassByRTTI(TITSF);
    Scripter.DefineClassByRTTI(TIVHF);
    Scripter.DefineClassByRTTI(TIVolumeNotis);
    Scripter.DefineClassByRTTI(TIVolumePriceTrend);
    Scripter.DefineClassByRTTI(TIWilderVol);
    Scripter.DefineClassByRTTI(TParamEnhancedList);
    Scripter.DefineClassByRTTI(TProfitStop);
    Scripter.DefineClassByRTTI(TProgramSettings);
    Scripter.DefineClassByRTTI(TProperties);
    Scripter.DefineClassByRTTI(TSegment);
    Scripter.DefineClassByRTTI(TSegments);
    Scripter.DefineClassByRTTI(TSignalItem);
    Scripter.DefineClassByRTTI(TSplit);
    Scripter.DefineClassByRTTI(TSplits);
    Scripter.DefineClassByRTTI(TStock);
    Scripter.DefineClassByRTTI(TStockExchange);
    Scripter.DefineClassByRTTI(TStockExchanges);
    Scripter.DefineClassByRTTI(TStockNetValue);
    Scripter.DefineClassByRTTI(TStockNetValues);
    Scripter.DefineClassByRTTI(TStockNews);
    Scripter.DefineClassByRTTI(TStockNewsList);
    Scripter.DefineClassByRTTI(TStockProfile);
    Scripter.DefineClassByRTTI(TStockProfiles);
    Scripter.DefineClassByRTTI(TStocks);
    Scripter.DefineClassByRTTI(TStockVariable);
    Scripter.DefineClassByRTTI(TStockVariables);
    Scripter.DefineClassByRTTI(TStopRate);
    Scripter.DefineClassByRTTI(TStopRates);
    Scripter.DefineClassByRTTI(TStrategy);
    Scripter.DefineClassByRTTI(TStringParser);
    Scripter.DefineClassByRTTI(TTaipanCatalogItem);
    Scripter.DefineClassByRTTI(TTaipanCatalogItems);
    Scripter.DefineClassByRTTI(TTradeMethod);
    Scripter.DefineClassByRTTI(TTradeMethods);
    Scripter.DefineClassByRTTI(TTradingSystem);
    Scripter.DefineClassByRTTI(TTradingSystemMetricHelper);
    Scripter.DefineClassByRTTI(TTradingSystemMetrics);
    Scripter.DefineClassByRTTI(TTradingSystemThread);
    Scripter.DefineClassByRTTI(TTradingSystemTrades);
    Scripter.DefineClassByRTTI(TTrailingStop);
    Scripter.DefineClassByRTTI(TWatchlist);
    Scripter.DefineClassByRTTI(TWatchlistItem);
    Scripter.DefineClassByRTTI(TWatchlistItems);
    Scripter.DefineClassByRTTI(TWatchlists);
    Scripter.DefineClassByRTTI(THistoryItem);
    Scripter.DefineClassByRTTI(TKurse);
    Scripter.AddObject('varStocks', Stocks);

    Scripter.AddConstant('ctTrendfolger', ctTrendfolger);
    Scripter.AddConstant('typMA', typMA);
    Scripter.AddConstant('cRMI', cRMI);
    Scripter.AddConstant('cCandlesticks', cCandlesticks);
    Scripter.AddConstant('cMA', cMA);
    Scripter.AddConstant('cBollinger', cBollinger);
    Scripter.AddConstant('cPSAR', cPSAR);
    Scripter.AddConstant('cGDUmsatz', cGDUmsatz);
    Scripter.AddConstant('cMomentum', cMomentum);
    Scripter.AddConstant('cRSI', cRSI);
    Scripter.AddConstant('cStochastik', cStochastik);
    Scripter.AddConstant('cChaikin', cChaikin);
    Scripter.AddConstant('cDSStochastik', cDSStochastik);
    Scripter.AddConstant('cMFI', cMFI);
    Scripter.AddConstant('cCoppock', cCoppock);
    Scripter.AddConstant('cRSL', cRSL);
    Scripter.AddConstant('cMACD', cMACD);
    Scripter.AddConstant('cTRIX', cTRIX);
    Scripter.AddConstant('cCCI', cCCI);
    Scripter.AddConstant('cRMI', cRMI);
    Scripter.AddConstant('cPFE', cPFE);
    Scripter.AddConstant('cTSF', cTSF);
    Scripter.AddConstant('cPVT', cPVT);
    Scripter.AddConstant('cNewHigh', cNewHigh);
    Scripter.AddConstant('cNewLow', cNewLow);
    Scripter.AddConstant('cStdDev', cStdDev);
    Scripter.AddConstant('cHistVol', cHistVol);
    Scripter.AddConstant('cVHF', cVHF);
    Scripter.AddConstant('cWilderVOl', cWilderVOl);
    Scripter.AddConstant('cADX', cADX);
    Scripter.AddConstant('cRAVI', cRAVI);
    Scripter.AddConstant('cTRWinkel', cTRWinkel);
    Scripter.AddConstant('cRWI', cRWI);
    Scripter.AddConstant('cAroon', cAroon);
    Scripter.AddConstant('cNNKorrelation', cNNKorrelation);
    Scripter.AddConstant('cNNPrognose', cNNPrognose);
    Scripter.AddConstant('cForceIndex', cForceIndex);
    Scripter.AddConstant('cOnBalanceVolume', cOnBalanceVolume);
    Scripter.AddConstant('cVolumePriceTrend', cVolumePriceTrend);
    Scripter.AddConstant('cNegativeVolumeIndex', cNegativeVolumeIndex);
    Scripter.AddConstant('cPositivVolumeIndex', cPositivVolumeIndex);
    Scripter.AddConstant('cVolumeNotisV', cVolumeNotisV);

    Scripter.DefineClassByRTTI(TIndicator);
    Scripter.DefineClassByRTTI(TChartindicator);
    Scripter.DefineClassByRTTI(TISignalIndicator);
    Scripter.DefineClassByRTTI(TIRMI);
    Scripter.DefineClassByRTTI(TIndicatorGroups);
    Scripter.DefineClassByRTTI(TIndicatorParams);
    Scripter.DefineClassByRTTI(TIndicatorParam);
    Scripter.DefineClassByRTTI(TIndicatorSignals);
    Scripter.AddObject('varIndicators', IndicatorGroups);

    Scripter.DefineClassByRTTI(TSegments);
    Scripter.DefineClassByRTTI(TSegment);
    Scripter.AddObject('varSegments', Segments);

    Scripter.DefineClassByRTTI(TTransaction);
    Scripter.DefineClassByRTTI(TTransactions);
    Scripter.DefineClassByRTTI(TAssessments);
    Scripter.AddObject('varTransactions', Transactions);


    Scripter.DefineClassByRTTI(TWatchlist);
    Scripter.DefineClassByRTTI(TWatchlists);
    Scripter.DefineClassByRTTI(TWatchlistItems);
    Scripter.DefineClassByRTTI(TWatchlistItem);
    Scripter.AddObject('varWatchlists', Watchlists);

    Scripter.DefineClassByRTTI(TCalculatedDepotItems);
    Scripter.DefineClassByRTTI(TCalculatedDepotItem);
    Scripter.AddObject('varDepot', CalculatedDepotItems);
    Scripter.DefineClassByRTTI(TStoprate);
    Scripter.AddObject('varStops', StopRates);
    Scripter.AddObject('varProgramSettings', ProgramSettings);

    Scripter.AddObject('varStockExchanges', StockExchanges);
    Scripter.AddObject('varINetVars', INetVars);
    Scripter.AddObject('varINetAddrs', INetAddrs);
    Scripter.AddObject('varAssets', Assets);
    Scripter.AddObject('varStrategy', Strategy);
    Scripter.AddObject('varNNetze', NNetze);
    Scripter.AddObject('varAccounts', Accounts);
    Scripter.AddObject('varImpFormate', ImpFormate);
    Scripter.AddObject('varTradeMethods', TradeMethods);
    Scripter.AddObject('varAssessments', Assessments);
    Scripter.AddObject('varSparplaene', Sparplaene);
    Scripter.AddObject('varINetUpdateGroups', INetUpdateGroups);
  end;

Alle TAdv* Objekte sind genauer durch den Komponentenhersteller beschrieben und können aus Lizenzgründen auch von mir nicht genauer aufgegriffen werden.

Siehe hierzu unter: https://www.tmssoftware.com/site/tmspack.asp