Skip to main content

Optionale Handelsstrategie-Parameter

image-1655631860873.png

Handelsstrategien können einfacher benutzt werden, wenn statt statischer Code-Anpassung beim Durchlauf einer Strategie eine Vorauswahl durch den Nutzer erfolgen kann. Hierfür ist eine "Optionale Auswahlbox" (s.o.) verfügbar gemacht, die in der Strategie selbst individuell initialisiert werden kann mit Werte und auch individuell ausgewertet werden kann. Beispiele hierfür sind:

  • Anzeige und Auswahl aus den verfügbaren Watchlisten auf denen die Strategie angewendet werden soll
  • Anzeige und Auswahl aus den verfügbaren Marktsegmenten auf denen die Strategie angewendet werden soll
  • Auswahl eines Detail-Levels für die Anzeige z.B. Log-Info, Log-Error, Log-Details

Die Auswahlbox ist im Default leer und muss auch nicht benutzt werden. Um diese in der eigenen Strategie zu nutzen, muss lediglich eine SubRoutine "doInit" eingerichtet werden. Nachfolgend ein Beispiel für die Auswahl einer optionalen Watchliste:

Initialisierungs-Routine "doInit" für die Auswahlbox

procedure doInit;
begin
  varWatchlists.InitStrings( varParamCombobox.Items, true);
  varParamCombobox.Items.Insert(0,'Kein Watchlisten-Filter');
  varParamCombobox.ItemIndex:=0;
  varParamCombobox.Enabled:=true;
end;


Nutzung der Nutzerauswahl in der Auswahlbox

procedure doRun;
var fCheckWatchlist: TWatchlist;
begin
    varPanelStatus.Text:='Los gehts ... ';
    varPanelProgress.Progress.Max:=varStocks.Count;
    varPanelProgress.Progress.Min:=1;
    itLogItem:=nil;

    if (varParamCombobox.ItemIndex>=0) and (varParamCombobox.Items.Objects[varParamCombobox.ItemIndex]<>nil) then
      fCheckWatchlist:=varWatchlists.getItemWithName(varParamCombobox.Items[varParamCombobox.ItemIndex]) else
      fCheckWatchlist:=nil;

    for idxStock:=1 to varStocks.Count do if (varIsCanceled=false) then
    begin
      itStock:=varStocks.Items[idxStock-1];
      itBenchmarkStock:=varStocks.ItemISIN[getBenchmarkISIN];
      iPoints:=0;
      varPanelProgress.Progress.ShowGradient:=true;
      varPanelProgress.Progress.Position:=idxStock;
      if (idxStock mod 500=0) then
        varApplication.ProcessMessages;

      if (itStock.StockNetValues.Count>3) and
         (calcMarktkapitalisierung>0.01) and
         //(Segments.getAndToInternalNrAsBool(itStock.StockSegments, itSegment.Nr)) and
         ((fCheckWatchlist=nil) or (fCheckWatchlist.List.FindISIN(itStock.ISIN)))
      then
      begin



Nutzung im Handelsstrategie-Studio

Im Studio steht die Auswahlbox für die Entwicklung ebenfalls zur Verfügung. Um die Routine zu starten, muss einmalig der Button "Initialisierung" aufgerufen werden. Die Hauptroutine (hier im doRun) sollte aber auch damit umgehen können, wenn die Auswahlbox leer ist d.h. varParamCombobox.Count=0 oder varParamCombobox.ItemIndex=-1 keine aktuelle Auswahl besitzt.

image-1655631869338.png