joshsmi Posted October 18, 2009 Report Share Posted October 18, 2009 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! Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 19, 2009 Report Share Posted October 19, 2009 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 Quote Link to comment Share on other sites More sharing options...
ronner Posted October 19, 2009 Report Share Posted October 19, 2009 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? Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 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? Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 19, 2009 Report Share Posted October 19, 2009 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 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 Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 (edited) 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 October 19, 2009 by joshsmi Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 (edited) Ginge das dann so Buy = Cross(...,...) and TimeNum()<>200000 TO TimeNum()<>040000? Edited October 19, 2009 by joshsmi Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 19, 2009 Report Share Posted October 19, 2009 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 Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 (edited) 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 October 19, 2009 by joshsmi Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 Dann wahrscheinlich so Handelszeit = TimeNum()>=040000 AND TimeNum()<=200000; Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 (edited) 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 October 19, 2009 by joshsmi Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 19, 2009 Report Share Posted October 19, 2009 Sorry, aber ich bin auch nicht der Programmierer Vielleicht sagt duncan oder nichtsnutz mal was dazu Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 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. Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 (edited) Die DateNum Aufstellung scheint falsch zu sein. Wenn ich auf Scan klicke im Automatic Analyzer, dann listet er nichts auf. Habe es auch mal so probiert HM = HM1 AND HM2 AND HM3 AND HM4 AND HM5 AND HM6 AND HM7 AND HM8; Edited October 19, 2009 by joshsmi Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 19, 2009 Author Report Share Posted October 19, 2009 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. Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 20, 2009 Report Share Posted October 20, 2009 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. Quote Link to comment Share on other sites More sharing options...
joshsmi Posted October 20, 2009 Author Report Share Posted October 20, 2009 Danke buy = ( month() == 1 ) and day < 3; // buy in January Day < 3 heißt hier im Beispiel, dass nur am 1. und 2. Januar gekauft werden soll, oder? Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 20, 2009 Report Share Posted October 20, 2009 Sollte so sein. Interessant wird es wenn man Tage angibt die es nicht gibt. Quote Link to comment Share on other sites More sharing options...
Fuller Posted June 1, 2010 Report Share Posted June 1, 2010 Ziemlich kniffliges Problem. Quote Link to comment Share on other sites More sharing options...
WOGO Posted June 1, 2010 Report Share Posted June 1, 2010 Hallo Fuller, Willkommen hier im Forum Quote Link to comment Share on other sites More sharing options...
ronner Posted June 1, 2010 Report Share Posted June 1, 2010 Welcome on Board Fuller Hört sich so an, als ob Du aktiver Metatrader-User bist ? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.