Optionale Handelsstrategie-Parameter
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.