U kunt deze versie downloaden van de Wall Street downloadpagina, waar ook een overzicht van de nieuwe functies te vinden is.
De komende maanden zullen deze nieuwe functies uitgebreid in de praktijk worden getest - de nieuwe functies zullen pas later in AlexPro worden opgenomen.
Hieronder vind u enkele voorbeeldscripts voor het werken met de nieuwe functies; uiteraard is de TA-script on-line help bijgewerkt met de laatste informatie.
Als eerste voorbeeld een relatieve sterkte indicator in TA-script.
Code: Selecteer alles
{- Filename: Sample - rel sterkte -}
var
sFonds2: TSeriesEx;
sRS: TSeries;
factor: real;
sFondsID: string;
n: integer;
begin
{$IFDEF PLATFORM-ALEX}
sFondsID := '3829'; // 3829 = AEX index
{$ELSE}
sFondsID := 'IAEX';
{$ENDIF}
if BarCount > 0 then
begin
{ lees de koersen van het 2de fonds, zelfde periode en BarInterval als de hoofdgrafiek }
sFonds2 := ReadPrices(sFondsID, BarInterval, DateTime[0], Now, 0);
{ synchroniseer de koersen met de hoofdgrafiek }
sFonds2 := SyncSeriesEx(sFonds2, smInsDuplicate);
{ maak de eerste bar van de RS gelijk aan 100% }
n := FirstValidIndex(sFonds2.Close);
if n < BarCount then
factor := sFonds2.Close[n] / Close[n] * 100;
sRS := MultiplySeriesBy(DivideSeries(Close, sFonds2.Close), factor);
end;
with CreateLine(sRS) do
begin
Name := 'RS';
Color := clLime;
end;
end.
Code: Selecteer alles
{- Filename: ShowId -}
begin
Indicator.NewBand := false;
with CreateText(0, 0, Instrument.ID) do
begin
X1Pct := 100;
Y1Pct := 100;
HorzPosition := hpLeft;
end;
end.
Code: Selecteer alles
{- Filename: Sample - 2e timeframe -}
var
sAEX: TSeriesEx;
nInterval: TDateTime;
bFill: boolean;
begin
nInterval := CreateParameterBarInterval(biMonth);
bFill := CreateParameterBoolean('Opvullen', false, false);
if BarCount > 0 then
begin
sAEX := ReadPrices(Instrument.ID, nInterval, DateTime[0], Now, 0);
if bFill then
sAEX := SyncSeriesEx(sAEX, smInsDuplicate)
else
sAEX := SyncSeriesEx(sAEX, smInsNan);
end;
with CreateLineOHLC(sAEX.Open, sAEX.High, sAEX.Low, sAEX.Close) do
begin
Name := 'Koersen';
Color := clLime;
end;
end.
Code: Selecteer alles
{- Filename: Sample - 15min MA & dag MA -}
var
nMADag, nMAkwartier, i: integer;
sDag: TSeriesEx;
sMADag, sMAKwartier: TSeries;
begin
{ Indicator parameters }
nMADag := CreateParameterInteger('MA dag', 1, 999, 13, true);
nMAKwartier := CreateParameterInteger('MA kwartier', 1, 999, 13, true);
{ Indicator eigenschappen }
with Indicator do
begin
{ Aantal benodigde koersen om eerste indicatorwaarde te berekenen }
RequiredBars := nMAkwartier;
NewBand := false;
ScaleRange := srCommon;
SafeRefreshInterval := 10;
end;
{ Indicatorberekening }
if BarCount > 0 then
begin
{ MA van kwartierkoersen berekenen }
sMAKwartier := MA(Close, maSimple, nMAKwartier);
{ dagkoersen ophalen }
sDag := ReadPrices(Instrument.ID, biDay, DateTime[0], Now, nMADag);
{ MA van dagkoersen berekenen }
sMADag := MA(sDag.Close, maSimple, nMADag);
{ MA waarden en dagkoersen synchroniseren met de hoofdgrafiek (kwartierkoersen) }
sMADag := SyncSeries(sMADag, sDag, smInsDuplicate);
sDag := SyncSeriesEx(sDag, smInsDuplicate);
for i:=0 to BarCount-1 do
begin
if IsValid(sMADag[i]) and IsValid(sMAKwartier[i]) then
begin
if (sDag.Close[i] > sMADag[i]) and
(Close[i] > sMAKwartier[i]) then
EnterLong(i)
else
if (sDag.Close[i] < sMADag[i]) and
(Close[i] < sMAKwartier[i]) then
EnterShort(i);
end;
end;
end;
with CreateLine(sDag.Close) do
begin
Name := 'MA dag';
Color := clRed;
end;
with CreateLine(sMADag) do
begin
Name := 'Dag';
Color := clYellow;
end;
with CreateLine(sMAKwartier) do
begin
Name := 'MA kwartier';
Color := clWhite;
end;
end.