Arrays als Funktionsparameter: Wie ???

Eröffnet von tso010109 im Board Equilla - Ideen umsetzen und programmieren

Seitenlänge102030
Seite 1 von 1
#4: 21.09.2019 09:26 swetina
Funktioniert bei mir nicht.
Ich konnte bisher keine Möglichkeit finden, arrrays im input einer Funktion (per NumericArrayRef) zu übergeben.

Kann mir jemand helfen?
#3: 16.09.2011 08:45 tso010109
Moin Moin,

damit scheint es zu funktionieren:

// Function
Inputs:
PriceArray[dummy](NumericArrayRef),

Ich habe eine Vermutung, warum das so ist.
Wird Equilla durch einen Interpreter verarbeitet, so wie früher Basic ?
Dann braucht der Interpreter einen Hinweis, dass er diese 3 Dinge unterscheiden kann.

1. Definition eines dyn. Array vom Type 'datatype'
PriceArray[](datatype)

2. Definition eines fixen Array mit 20 Elementen vom Type 'datatype'
PriceArray[20](datatype)

3. Definition eines Array-Parameters
PriceArray[dummy](datatype)

Vielen Dank, damit komme ich erst mal weiter.
#2: 16.09.2011 08:14 ReneRose
@tso010109 (#1)
Guten Morgen,

bei der Übergabe an eine Funktion, muss ein zweites Parameter in der Funktion im Input angegeben werden:

Inputs:
MyArrayVar[ Elements ]( NumericArrayRef );

Frag nicht warum das so ist, mir leuchtet das auch nicht ein.

Webseite
#1: 15.09.2011 21:34 tso010109
Hallo,

für einen MTF-Ansatz benötige ich Arrays, weil die Indikatoren/Funktionen bei Zugriff auf höhere Zeitebenen
falsche Ergebnisse liefern.

Der folgende Code läßt sich mit TSO compilieren:
a)
// Function
Inputs:
PriceArray(NumericArayRef),
Len(NumericSimple);
Vars:
i(NumericSimple), res(NumericSimple);

res = 0.0;

For i = 0 to Len-1 Begin
res = res + PriceArray[i];
End;

if Len <> 0 then begin
res = res / Len;
end;

array_test_func = res;

b)
// Indikator
Meta:
Synopsis("ArrayTest"),
SubChart(False));

Inputs:
Period(10);

Array:
aData[](0);

InsertAtArray(aData, 0, Close);
SetArrayLength(aData, Period);

DrawLine(array_test_func(aData,Period), "ArrayTest");

Beim Einfügen in einen Chart kommt:
E3045: Array-Variable wird wie eine normale Variable verwendet.

Auch das Umkopieren des Funktionsergebnisses in eine normale NumericSeries-Variable funktioniert leider nicht.

Hat jemand ein funktionierendes Beispiel, oder eine korrekte und vollständige Dokumentation,
wie man Array "by Reference" übergibt ?

Viele Dank!