Amibroker AFL

      Quellcode

      1. Sell = Cross( Ref(L,-1), L);


      Zum Close verkaufen am gleichen Tag ist ja unrealistisch, wenn man nur EOD Daten hat. Wie macht man es, dass zum nächsten Open verkauft wird? Ich weiß, ziemliche Anfängerfrage, komme jedoch gerade nicht weiter.

      Perfect Trader schrieb:

      Ich will ja nicht wieder nur meckern, aber sowas geht mit einer Schleife über einem Array bestimmt vernünftiger. Die Wahrscheinlichkeit, sich bei solchen Schreib-Würmern zu vertun ist doch recht groß, ganz abgesehen von der geringen Effizienz beim Lesen und Schreiben des Codes. Ich sehe zwar keine Gaps auf dem Chart, aber die kämen beim ATR noch zu den H/L-Ranges dazu.


      Hallo PT

      Da mich AFL als arraybasierte Sprache fasziniert, hab ich mal angeschaut, was Du meintest.

      Man hätte im Code-Beispiel ja auch einfach
      range = MA(H-L,20);
      schreiben können.

      VG Micha

      Hafturlaub schrieb:


      Einen Scanner, welcher z.B. die Werte anzeigt, die nach Gap-Close ein neues Tageshoch machen ist ja eigentlich nicht sehr komplex. So wie ich es z.Z. sehe, wird das mit IB als Datenfeed leider nicht funktionieren. ;(


      Ich vermute es wäre unnötig aufwändig.
      Ein weiterer Datenstrom spart einem VIEL! Aufwand.

      Wobei ich die Anregung mit dem TWS-Scanner für mich SEHR interessant fand. :)
      Man kann auf die Scanner-Ergebnisse via API(C/Java/Excel/usw.) zugreifen. *freu*
      So könnte man (mit Gewalt und Aufwand) die Info auch nach AB übertragen.
      (Ich persönlich nutze die Scanner-Ergebnisse dann allerdings eher in eigenen
      Java-Entwicklungen und nicht in AB)

      Dass AB irgendeine Anbindung zum IB-Scanner-Interface bereits mitbringt,
      kann ich mir nicht vorstellen(zumindest nie gesehen).

      VG Micha

      Hafturlaub schrieb:

      Erstmal allen vielen Dank für die Antworten! :)
      Teilweise dauert das auch >10Sekunden bis z.B. die Hoch/Tief-Kurse dann kommen, so jedenfalls meine Erfahrung. :(


      Das ist eine IB-Einschränkung.
      Es sind nur 60 Anfragen in 10 Minuten erlaubt, andernfalls wird man Opfer von pacing violations.
      interactivebrokers.com/php/api…ical_data_limitations.htm
      Ziel von IB ist wohl, die Kosten für den Datenstrom durch Datenmengen-Eingrenzung gering zu halten.

      AB nutzt das IB-Interface allerdings nicht mal sonderlich effizient aus.
      Tomas(der AB-Entwickler; ein ausgezeichneter! Software-Entwickler) ist (war zumindest mal) ein
      engagierter Kritiker der IB-Schnittstelle und er hat (oder hatte) keine hohe Motivation dort viel Aufwand zu investieren.

      Meine Erfahrung ist, daß man AB lieber mit einem "professionellen" Datenstrom nutzen sollte(z.B. iqFeed).
      Die Pacing Violations seitens IB kosten sonst sicher viele ärgerliche Momente(und Geld in Form verpasster oder
      verhundster Trades).
      Die IB-Trading-Anbindung an AB hingegen dürfte keine Probleme machen(habe ich noch nicht so häufig benutzt, da
      ich meist direkt die TWS zur Orderaufgabe nutze).

      VG Micha

      goso schrieb:

      IIRC gibt es bei IAB ein Symbollimit für gleichzeitig aktualisierbare Titel, das liegt bei 100, somit ist das wohl nicht möglich. Bei e-signal kann man gegen Aufpreis bis zu 1.000 Symbole gleichzeitig aktualisieren, wobei sich natürlich die Frage stellt, wo man die dann handelt.
      IB bietet auch auch die Möglichkeit, das Feed von esignal für die TWS zu nutzen. Hab ich allerdings noch nie getestet.
      Erstmal allen vielen Dank für die Antworten! :)

      Perfect Trader schrieb:

      Man muß die Symbole nur nicht gleichzeitig offenhalten. Wenn die nicht alle gleichzeitig für eine Arbitrage im Sekunden-Takt o. ä. gebraucht werden, können die Symbole über die API nacheinander abgefragt werden.
      Teilweise dauert das auch >10Sekunden bis z.B. die Hoch/Tief-Kurse dann kommen, so jedenfalls meine Erfahrung. :(


      Perfect Trader schrieb:

      Für manche Zwecke könnten auch die Scanner in der TWS schon reichen, obwohl die von perfekter Scanner-Software um Längen überboten werden.

      Das wäre evtl. eine Alternative, ohne jetzt zu wissen, wie das in einem Scanner im AB umgesetzt werden könnte. :S

      Perfect Trader schrieb:

      Die Frage ist, ob man mit Strategien, die solche Daten-Mengen erfordern, gegenüber den Profis, die alle diese Daten ohnehin haben, weil sie z. B. direkt am Börsen-LAN hängen, und auch noch wesentlich bessere Technik zu ihrer Verarbeitung haben, wirklich einen Edge erzielen kann.



      Oft vermute ich hinter den Strategien, die mit überbordender Komplexität, sei es mit zu vielen Handels-Regeln oder wie hier mit sehr vielen Daten, nur kaschiert wird, daß man es mit einfachen Strategien nicht packt.

      Einen Scanner, welcher z.B. die Werte anzeigt, die nach Gap-Close ein neues Tageshoch machen ist ja eigentlich nicht sehr komplex. So wie ich es z.Z. sehe, wird das mit IB als Datenfeed leider nicht funktionieren. ;(
      Kleiner Fehler im Demonstrationsbsp. Man muss in den Zusatzeinstellungen natürlich zusätzlich "dezimal" wählen, um bspw. einen max Grenze von 1.000.000 Bars einzustellen. Wenn man 1000000 bei hexadezimal eingibt, ergäbe das in Wahrheit über 16 Mill. Bars als max. Grenze statt 1.000.000.
      Bilder
      • Korrektur maxbars.png

        15,76 kB, 454×372, 184 mal angesehen
      Es gibt ein verstecktes Feature, das für leistungsfähigere PCs erlaubt, die max. Anzahl an Bars in den Datenbank Einstellungen heraufzusetzen. Dazu muss man nur einen DWORD Schlüssel in der Windows Registrierung hinzufügen. Aufgerufen wird letztere über Startmenü>Ausführen>regedit

      Im Bild unten sieht man links den Registrierungs Ordner "Settings", zufinden unter HKEY_CURRENT_USER\Software\TJP\Broker\Settings. Dort auf diesem Ordner macht man einen Rechtsklick und geht im Kontextmenü zu Neu>DWORD-Wert. Wenn dieser neue Wert dann rechts sichtbar ist, ändert man den Namen gleich in MaximumNumberOfBars um. Danach einen Doppelklick darauf machen und einen Wert größer als 500000 eintragen z.B. 1000000. Wie gesagt, das ist für Maschinen mit ausreichend Leistung (RAM). Man kann dort entsprechend jeden gewünschten Wert eintragen. Danach geht man nur noch in die Data Base settings von AB und ändert dort den Number of Bars Wert in einen neuen gewünschten Wert um, der höher als 500000 ist, da dies ja nun möglich ist.


      Hello,

      500000 is "common sense" limit (put there to prevent users
      from putting some extreme values without thinking), but
      there is a registry setting that controls the limit and you can set
      it to any value (as long as you have enough memory to hold that much data).
      Contact support if you want to know what registry setting controls this.

      Best regards,
      Tomasz Janeczko
      amibroker.com
      Bilder
      • MaximumNumberOfBars.png

        25,12 kB, 835×320, 191 mal angesehen

      Hintman schrieb:

      Hafturlaub schrieb:

      Moin Moin,

      auf der Suche nach Backtest/Scannersoftware bin auf
      Amibroker gestoßen. Ich nutze IB als Broker, da kämen auch die Kurse her.

      Ich habe schon einige Versuche mit VisualBasic und der IB-API durch und bin
      letztlich an den Limitationen bei der Kursversorgung verzweifelt.
      Jetzt
      frage ich mich, ob man denn in AB einen Scanner/Tradingsystem basteln kann,
      welches einen ganzen Markt mit xtausend Aktien
      Realtime überwachen kann-mit
      IB als Datenlieferant? Eigentlich kann das mit IB nicht funzen...
      Hat jemand
      sowas am laufen oder getestet, evtl. auch mit einem anderen Datenanbieter?

      Ich hol den Beitrag mal hoch, musste ihn erst freischalten nach dem WE



      Hello,

      I may remind you that you should obey the subscription limits that your data
      sourcesput in place. Specifically you must not have more than 100 symbols with
      Interactive Brokers, 500 symbols in case of regular IQFeed subscriptions.
      If you exceed data-source-imposed limits you can potentially cause:
      a) violation of data vendor terms & conditions
      b) excessive and repetitive backfills / data transfers
      c) interruption of data feed due to overload
      d) possibly data holes and other kind of data errors

      Best regards,
      Tomasz Janeczko
      amibroker.com


      In Bezug auf IQFeed. Zitat von IQFeed

      The max symbols on a basic subscription for IQFeed is 500 symbols.

      The max symbols for an DTN.IQ subscription is 1300 symbols.

      We have an addon subscription fee for either one that adds an extra 500 symbols but isn't usually added onto the basic package (I think its cheaper to upgrade to the DTN.IQ instead).


      1800 Symbole wären also dort das Maximum über Upgrade Subscriptions.

      Auch bei Interactive Broker lassen sie mit sich reden, wenn du mehrere Millionen im Tank hat. Also alles wie immer ... ein paar zusätzliche Papierschnipsel regeln das.
      IIRC gibt es bei IAB ein Symbollimit für gleichzeitig aktualisierbare Titel, das liegt bei 100, somit ist das wohl nicht möglich. Bei e-signal kann man gegen Aufpreis bis zu 1.000 Symbole gleichzeitig aktualisieren, wobei sich natürlich die Frage stellt, wo man die dann handelt.

      Hafturlaub schrieb:

      Moin Moin,

      auf der Suche nach Backtest/Scannersoftware bin auf
      Amibroker gestoßen. Ich nutze IB als Broker, da kämen auch die Kurse her.

      Ich habe schon einige Versuche mit VisualBasic und der IB-API durch und bin
      letztlich an den Limitationen bei der Kursversorgung verzweifelt.
      Jetzt
      frage ich mich, ob man denn in AB einen Scanner/Tradingsystem basteln kann,
      welches einen ganzen Markt mit xtausend Aktien
      Realtime überwachen kann-mit
      IB als Datenlieferant? Eigentlich kann das mit IB nicht funzen...
      Hat jemand
      sowas am laufen oder getestet, evtl. auch mit einem anderen Datenanbieter?

      Ich hol den Beitrag mal hoch, musste ihn erst freischalten nach dem WE
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Vikke, der ATR Indikator rechnet vollkommen richtig. Das kann man mit Excel ganz leicht nachprüfen docs.google.com/spreadsheet/cc…R1SnlkMGgzMVhBU3BEamhGNWc

      Der letzte Wert im Excel Sheet in Zelle J36 ist der selbe wie unten der Wert, der in meinem Chart zu sehen ist. Dass mein ATR Wert eine anderer als deiner ist, liegt daran, dass noch der Sonntag mit in der Historie enthalten ist. Nur um weiterer Verwunderung vorzubeugen. ;) Man könnte auch den Sonntag aus der Kalkulation raushalten.

      Der ATR wird ansonsten anders berechnet als Average = MA(H-L, period); Es fließen noch zusätzliche Bedingungen mit ein, wie im Sheet oben zu sehen.

      Noch was zu deinem Bild C. Mach bitte schnell den Plot aus Timeframeset .... Timeframerestore heraus, da bekomme ich Kopfschmerzen. Noch mal in der Hilfe nachschauen. Zusätzlich TimeframeExpand anschauen. Ansonsten Timeframeset, Tmeframerestore, Timeframeexpand brauchst du nur, wenn du Berechnungen aus einem höheren Timeframe in einem niederen Timeframe verwenden willst
      Bilder
      • ATR 20.png

        14,32 kB, 1.242×500, 154 mal angesehen