Jump to content
Tom Next - Daytrading Community

Signale für eine bestimmte Periode ausklamern


joshsmi

Recommended Posts

Hallo, wie kann man Signale, die für eine bestimmte Tageszeit entstehen, ausklammern?

Nemen wir ein Beispiel, ich möchte die Signalbildung der Übernacht Kerzen im 4h Chart (von 20:00 bis 04:00 - also 20:00 Kerze und 0:00 Uhr Kerze) verhindern bzw im Backtestteil oder Signal Scanteil von Amibroker.

Desweiteren, wie lassen sich Signale für eine Dauer über mehrere Monate (oder Quartal) ausklammern?

 

Danke für die Hilfe!

Link to comment
Share on other sites

Ich verstehe wahrscheinlich die Frage nicht Richtig.

 

Aber Du kannst bei den Kaufbedingungen eine Uhrzeit mit angeben wann gehandelt werden darf,

eine Sell Bedingung formulieren das bei einer bestimmten Uhrzeit verkauft wird um in Deinem angegebenen Bereich Flat zu sein.

 

Desweiteren, wie lassen sich Signale für eine Dauer über mehrere Monate (oder Quartal) ausklammern?

 

?

Verstehe ich nicht

Link to comment
Share on other sites

so wie ich es verstehe, möchte er bei einem Backtest die Signale unterdrücken, die oft das Ergebnis verhageln da es nachts weniger Liquidität gibt.

 

Sprich, ihn interessiert nur der tagaktive Teil mit dem entsprechenden Ergebnis. Alles andere verzerrt nur das Resultat des Backtests.

 

So in etwa oder joshsmi?

Link to comment
Share on other sites

Ja Ronner hat es richtig verstanden. Aber auch ibelieve, obwohl er nicht sicher war.

 

Noch mal, mit welchem Befehl läßt es sich in einer Buy oder Sell Anweisung bewerkstelligen, dass zu einer bestimmten Candle Periode kein (normalerweise) entstehendes Signal generiert wird?

 

Desweiteren, wie läßt sich ein Befehl eingliedern bzw mit welchem Befehl läßt es sich verhindern, dass auch in einer bestimmten Jahresperiode (Sommer z.B.) kein Signal generiert wird?

Link to comment
Share on other sites

Noch mal, mit welchem Befehl läßt es sich in einer Buy oder Sell Anweisung bewerkstelligen, dass zu einer bestimmten Candle Periode kein (normalerweise) entstehendes Signal generiert wird?

 

TIMENUM

- get current bar time Date/Time

(AFL 2.0)

 

 

SYNTAX timenum()

RETURNS ARRAY

FUNCTION Returns the array with numbers that represent quotation time coded as follows:

10000 * hour + 100 * minute + second, so 12:37:15 becomes 123715

EXAMPLE TimeNum()

SEE ALSO Hour(), Minute(), Second(), TimeNum()

 

// Handel nur von 14:30 - 20:30 Uhr
Handelszeit = TimeNum()>=143000 AND TimeNum()<=203000;

 

Damit kannst Du Uhrzeit bestimmen wann gehandelt werden darf.

Es laufen ausserhalb der Ziet dann aber auch keine Stopps.

 

 

(Sommer z.B.)

 

Messbox für die die Temperatur an den PC,

Werte auslesen und Amibroker sagen wenn über 25C kein handel :pfue:

 

Habe ich noch nicht gemacht,

sollte aber irgend eine Date Funktion geben.

 

DATENUM

- date number Date/Time

(AFL 1.4)

 

 

SYNTAX datenum()

RETURNS ARRAY

FUNCTION Returns the array with numbers that represent quotation dates coded as follows:

10000 * (year - 1900) + 100 * month + day, so 2001-12-31 becomes 1011231 and 1995-12-31 becomes 951231

EXAMPLE datenum();

SEE ALSO

Link to comment
Share on other sites

Danke das könnte es sein.

 

Wie muss ich da vorgehen, um diese in die Buy Sell Anweisung einzufügen?

 

Stehe noch am Anfang mit der AFL Sprache

 

z.B.

 

Buy = Cross(Close,MA(C,50))

Sell = Cross(MA(C,50),(Close))

 

Short = ExRem(Sell,Buy);

Cover = ExRem(Buy,Sell);

 

Jetzt soll für Signale 20:00 - 04:00 Uhr nicht gelten.

Edited by joshsmi
Link to comment
Share on other sites

Ginge das dann so

 

Buy = Cross(...,...) and TimeNum()<>200000 TO TimeNum()<>040000?

 

oder aber du definierst es als "Handelzeiten" wie ich oben und schreibst dann

 

BUY = XXXX and Handelszeiten ;

 

Die Übersicht ist nachher eigentlich besser und Du kannst viel einfacher mal die Zeiten ändern bzw. musst Sie nur einmal ändern auch wenn Du sie nachher mehrmals im Programm verwendest.

 

Edit,

habe jetzt leider keine Zeit mehr,

glaube aber deine Zeile der Zeit ist Falsch.

 

Das <> stört mich irgend wie

Link to comment
Share on other sites

oder aber du definierst es als "Handelzeiten" wie ich oben und schreibst dann

 

BUY = XXXX and Handelszeiten ;

 

Die Übersicht ist nachher eigentlich besser und Du kannst viel einfacher mal die Zeiten ändern bzw. musst Sie nur einmal ändern auch wenn Du sie nachher mehrmals im Programm verwendest.

 

Richtig, so geht es natürlich einfacher.

 

Aber wäre die Schreibweise so richtig

 

mit <> sowie TO statt AND?

 

EDIT: habe gerade gesehen, dass du noch editiert hast.

Edited by joshsmi
Link to comment
Share on other sites

Ich habe es mal ausprobiert und es funktioniert

 

Jetzt fehlen noch die Monate, welche nicht betrachtet werden sollen.

 

Handelsmonate1 = DATENUM()>021231 AND DATENUM()<=030630;

Handelsmonate2 = DATENUM()>030930 AND DATENUM()<=031231;

 

Aber, das wäre ja jetzt nur für das Jahr 2003 und nicht von 2003 bis jetzt.

Edited by joshsmi
Link to comment
Share on other sites

Ich habe es jetzt mal so gemacht

 

HZ = TimeNum()>=040000 AND TimeNum()<=160000;

HM1 = DateNum()>021231 AND DateNum()<=030630;

HM2 = DateNum()>030930 AND DateNum()<=040630;

HM3 = DateNum()>040930 AND DateNum()<=050630;

HM4 = DateNum()>050930 AND DateNum()<=060630;

HM5 = DateNum()>060930 AND DateNum()<=070630;

HM6 = DateNum()>070930 AND DateNum()<=080630;

HM7 = DateNum()>080930 AND DateNum()<=090630;

HM8 = DateNum()>090930 AND DateNum()<=100630;

HM = HM1 + HM2 + HM3 + HM4 + HM5 + HM6 + HM7 + HM8;

 

Aber für DateNum müßte es doch eine elegantere Lösung geben.

 

Mal sehen, ob jemand eine parat hat.

Link to comment
Share on other sites

So klappt es für die Monate

 

statt AND ein OR sowie vor das Datum eine 1

 

HM1 = DateNum()>1021231 AND DateNum()<1030701;

HM2 = DateNum()>1030930 AND DateNum()<1040701;

HM3 = DateNum()>1040930 AND DateNum()<1050701;

HM4 = DateNum()>1050930 AND DateNum()<1060701;

HM5 = DateNum()>1060930 AND DateNum()<1070701;

HM6 = DateNum()>1070930 AND DateNum()<1080701;

HM7 = DateNum()>1080930 AND DateNum()<1090701;

HM8 = DateNum()>1090930 AND DateNum()<1100701;

HM = HM1 OR HM2 OR HM3 OR HM4 OR HM5 OR HM6 OR HM7 OR HM8;

 

Jetzt fehlt nur noch eine elegantere Lösung.

Link to comment
Share on other sites

Moin,

 

Wenn du ganze Monate ausklammern willst sollte es wohl auch hier mit gehen.

 

MONTH

- month Date/Time

(AFL 1.4)

 

 

SYNTAX month()

RETURNS ARRAY

FUNCTION Returns the array with months(1-12)

EXAMPLE buy = ( month() == 1 ) and day < 3; // buy in January

 

Musst Du dann nicht für jedes Jahr einzeln schreiben.

Link to comment
Share on other sites

  • 7 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...