Amibroker AFL

      Purri schrieb:


      Ein Problem bei so kleinen Firmen ist aber, dass sie nur von einer Person abhängig sind. Der Amibroker Entwickler ist anscheinend nach wie vor motiviert, bei Neoticker ist der Chef-Entwickler hauptsächlich damit beschäftigt, auf ES Charts zu starren, die Software wird nur noch sehr schleppend weiterentwickelt. Bei einer grossen Firma wird das nicht so einfach passieren.


      Stimme ich nicht zu, da alles zwei Seiten der Medaille hat. Schaue dir mal Quotetracker an. Die Software ist jetzt tot nachdem es an TD Ameritrade verkauft wurde von Jerry Medved. Oder schaue dir die schleppende Entwicklung bei Metastock an. Da ist Entwicklung nahezu non-existent. Zu viele Köche verderben den Brei, mehr Entwickler heißt nicht besser. Janeczko ist Entwickler mit Leib und Seele und kennt sein Dingelchen in- und auswendig, so schnell kommt da keine Motivationsbremse. Die einzige Schwachstelle wäre ein eventueller Todesfall.

      Apropos mit Leib und Seele


      Hello,

      >> Microsoft Visual C++ 6.0 SP6 for 32 bit version and Visual C++ 2005 for 64
      >> bit version.
      >
      > TJ, are you aware of agner.org/optimize/ - might be useful for you ...

      Thanks, but with all respect due, I don't think so.
      As a 10 year old I started learning about TTL logic (gates, counters,
      de/multiplexers, shifters) moved later to arthmetic logic,
      12 year old I built among other things 16-step
      digital sequencer for analog synthesiser.
      as a 13 year old I started my coding experience with hand coding in machine 8080
      code (directly in binary, without help of assembler),
      then coded entire OS for my own microcomputer based on Zilog Z80 (when I was 17)
      then coded Motorola MC68000 demos in m68k assembler (20 years old)
      and critical parts of AmiBroker code on PC are also optimized
      on assembly level. My masters thesis involved assembly on INMOS T8xx Transputers
      (anyone here knows what it was?)
      In the past wrote native code emulators, cross compilers and
      many low-level programs all involving hand optimizations, hand register
      allocations, manual CPU cycle calculation, etc.
      With all that background I can safely say that I can write optimized code
      already.

      Best regards,
      Tomasz Janeczko
      amibroker.com
      Der Neoticker Support ist defacto nicht existent. Man kann sich aber Support-Stunden kaufen, keine Ahnung wie gut die sind.

      Ein Problem bei so kleinen Firmen ist aber, dass sie nur von einer Person abhängig sind. Der Amibroker Entwickler ist anscheinend nach wie vor motiviert, bei Neoticker ist der Chef-Entwickler hauptsächlich damit beschäftigt, auf ES Charts zu starren, die Software wird nur noch sehr schleppend weiterentwickelt. Bei einer grossen Firma wird das nicht so einfach passieren.
      Soweit ich weiß, gibt es nur zwei Mann, früher mal drei oder immernoch drei? Mehr als drei sind's nicht.
      Support macht Marcin Gorcynski, der bekommt, so habe ich mal ausgerechnet, pro 5 Minuten eine Mail. Technical Support macht T.J. dann selbst (in der Yahoo Groups Liste antwortet er manchmal auch noch). Rückmail bekommt man dabei manchmal schon Minuten später, am selben Tag auf jeden Fall. Familie mit Kind hat er auch noch. Wie gesagt keine Ahnung, wie er das zeitmäßig hinbekommt bei pro Jahr zwei major Updates (zwischendrinn natürlich auch Beta releases). Er hat's auf jeden Fall drauf. Bei Neoticker habe ich mal eine Supportanfrage gestellt und habe bis heute noch keine Rückantwort erhalten, nicht mal eine Mail "message received" mit Ticketnummer oder Ähnliches, was bei AB selbstverständlich ist (Sekunden nach dem Abschicken).
      Ich meinte mit untauglich eher solche codefortraders.com/phpBB3/viewtopic.php?f=38&t=703 und solche Geschichten Backtesting Software X-Trader kenne ich wie gesagt nur vom Namen, deshalb etwas unglücklich in meine Aussage reingerutscht.

      Was mit bei Janeczko imponiert ist, dass er nicht lemminghaft jeden Sch.. mitmacht ( "I don't agree with that kind of thinking." ) und noch an Qualität denkt als auch an den User selbst. "Sein Motto" (aus meiner Erfahrung heraus) lautet, den User vor unerwünschten Hürden zu bewahren als sie aus Bequemlicheit oder Profitgier zu ermöglichen. M.M.n ein hochkompetentes Genie, das auf dem Teppich bleibt. Weshalb Genie? Nicht nur weil sein Zähne fletschendes Baby zuverlässig und gepardenschnell arbeitet, sondern weil er schon Jahre vor der Kokurrenz mit Leichtigkeit im Innovationsvorsprung ist (siehe auch sein Kommentar zum rotational Trading aus dem ersten oberen Link). Oder um auf bspw das überpreiste MC zurückzukommen, schaue dir mal an, wie diese mit zig Mann immernoch daran beschäftigt sind, ihre 64-bit Version bugfrei (als "Sensation") herauszubringen, während T.J. 2006 als erster Anbieter ganz nebenbei seine 64-Bit Version herausbrachte. Da kann ich mir ein breites Grinsen nicht verkneifen. Wie innovativ das war, sieht man allein schon daran, dass die Datenanbieter noch garnicht so weit waren, auf 64-bit zu erweitern. Mittlerweile haben sie es aber seit einiger Zeit hinbekommen (u.a. Esignal, IQFeed und Interactive Brokers). Und was dieser zwei-Mann Betrieb supportmäßig leistet, ist eh sensationell. Ich weiß nicht, wo diese zwei die Zeit hernehmen. Das sieht man nicht mal bei Großfirmen (wenn überhaupt). Meine mittlerweile große Begeisterung für dieses Juwel ist also verständlich.

      PS: sein anti-lemming Gen geht sogar soweit, dass er trotz mehrfacher Emfehlung (von Userseite!), den Preis seines Produktes doch mind. zu verzehn- bis verzwanzigfachen, um der angebotenen Leistung und des Umfangs gerecht zu werden und nicht Gefahr zu laufen, unterschätzt zu werden. Aber er wird schon wissen, was er macht, denn nach eigener Aussage ist jedes Jahr ein neues Umsatzrekordjahr.

      Amüsant dazu dieses Zitat aus 2008/9
      Second thing, the company is in perfect shape. For me the recession
      can take 5 years or more. In fact after short drop in October, the sales make
      new records now, probably because people find out that they can have superior software
      for fraction of a price of other solutions. That's pretty normal that in tough
      times people are more price-sensitive and enjoy the huge technical advantage of
      AmiBroker at extremely fair price.

      trash schrieb:

      Im Vergleich zu AB sind X-trader und NT ja eher reine Execution-Programme für den Rest untauglich, wobei mir NT allg. nicht zusagt, da die gesamte Plattform sehr träge und mit zig Bugs bestückt ist. Bis da erst mal irgendwas passiert, kann man getrost einen Kaffee trinken gehen. X-Trader kenne ich nur vom sehen.


      Bei x-trader Pro (v 7.11) gibt es seit einiger Zeit ADL (Algo Design Lab), regelbasierendes Trading ist damit automatisierbar, wie gut oder schlecht das brauchbar ist, kann ich aber nicht beurteilen.
      Antwort auf Purris Frage Futures Broker

      Purri schrieb:

      Eigent sich Amibroker zur Ordereingabe, vergleichbar mit XTrader oder Ninja? Ich war bisher der Meinung, es ist eher für Charting, Analyse und evtl. Autotrading.

      Natürlich. Bsp gab es hier im Thread schon.
      Bsp eines Users
      amibroker.org/userkb/category/…l-applications/tdash_dev/
      oder Bsp eines anderen Users
      blog.tipster.ca/p/tipster-trendlines-3.html mit Auto-positionsizing (und die platzierten Orders/Lines bleiben bestehen, auch wenn man AB schließt und Windows neustartet).
      Etc, etc in Bezug auf andere Bsp..
      Die Standard Ordermaske mit Buttonbar ist über View>Toolbars>Order aktivierbar. Wobei mir eine erweiterte Handelsumgebung erstellt von Tomasz J. persönlich sicherlich sehr zusagen würde, aber im Moment stehen sicherlich andere Prioritäten auf der to-do Liste. Und im Kunden Feedback Center sind ja genügend Wünsche für Jahre gelistet. Jedenfalls, AB ist für diskret. Charttrading als auch Autotrading (nicht nur eventuell) geeignet. Voll customizable oder auf deutsch sehr flexibel nach eigenen Wünschen anpassbar. Und mit dem ADK stehen die Türen eh offen.
      C/C++
      amibroker.com/devlog/2006/12/1…ow-available-to-everyone/
      amibroker.com/devlog/2010/04/2…opment-kit-2-10-released/
      C#
      dotnetforab.com/

      Im Vergleich zu AB sind X-trader und NT ja eher reine Execution-Programme für den Rest untauglich, wobei mir NT allg. nicht zusagt, da die gesamte Plattform sehr träge und mit zig Bugs bestückt ist. Bis da erst mal irgendwas passiert, kann man getrost einen Kaffee trinken gehen. X-Trader kenne ich nur vom sehen.
      Da vor kurzem wieder von Newsevents die Rede war, sowie um zu zeigen, was man in AB mit GFX Buttons, die auf Mausbefehle reagieren, außer zur Erstellung von Trading Dashboards usw machen kann, habe ich ein 2,5 Minuten Video erstellt, das zeigt, wie aus zwei Newsquellen die Newsevents anhand einer externen Applikation herausfiltert, in eine csv Datei gepackt und dann von AB ausgelesen sowie dann immer 1 Stunde vor dem jeweiligen Newsevent als Warnzeichen visuell dargestellt werden. Wenige Minuten vor den News erscheint noch alternativ ein zusätzlicher Stimmenalarm und/oder Popup Alarm. So kann fast "nichts mehr" schief gehen.

      youtu.be/KjGriX-0r0M?hd=1

      Die Prozedur (pro Tag ein Mal) läuft wie folgt ab
      - externe Newsapp starten (roter Button)
      - aktuellen Tag darstellen lassen (in der News Applikation)
      - erste Quelle auswählen und aus der XML Datei der News Applikation die Zeiten herausfiltern und daraus eine temporäre Liste erstellen (gelber Button)
      - zweite Quelle auswählen und zweite temporäre Liste erstellen (gelber Button)
      - beide Listen zusammenfassen und Doppeleinträge löschen (grüner Button)

      Kurzum ein Ampelverfahren rot-gelb-grün

      Was noch hinzukommen soll, sind manuell eintragbare Newseventzeiten aus zusätzlichen Quellen, falls wie vor kurzem bei Jemandem geschehen, die zwei vorhandenen Quellen diese Zeiten nicht beinhalten sollten.

      Ob ich den AFL bzw die zwei AFLs veröffentliche, weiß ich noch nicht. Aber so schwer ist es nicht, nur ein bisschen Arbeit.
      Den jEconNewsReader kann man über Gurgel finden.
      Bilder
      • News Alarmgeber.png

        20,59 kB, 1.243×653, 259 mal angesehen
      Von Tickquest (u.a. Neoticker) gibt es ja das kostenlose Monte Carlo Simulationstool "Equity Monaco". tickquest.com/?page_id=70
      Dokumentation tickquest.com/downloads/equitymonaco.pdf

      Mit Amibroker kann man dank des flexibel anwendbaren Custom Backtester Interfaces (in der AB Hilfe "Porfolio Backtester Interface") eine Textdatei exportieren lassen, die eine P/L Liste im Equity Monaco Format enthält. Eine Bsp.liste eines Simpelsystems habe ich mit hochgeladen.

      Den (bereits von mir abgeänderten) CBI Code unten hatte ich in einem Forum entdeckt, aber der ursprüngliche enthielt die Einschränkung, dass P/L Werte ohne Nachkommastellen exportiert wurden. Equity Monaco kommt mit Werten, die am Ende eine Null enthalten, seltsamerweise nicht zurecht. Deshalb habe ich den Code so abgeändert, dass nun auch zwei Nachkommastellen exportiert werden können und Werte mit 0 am Ende eines Wertes nicht mehr existieren und Equity Monaco somit nicht mehr blöd herummeckert. Es spuckt nämlich im Negativfall (eine "0" am Ende selbst eines einzigen Falles in der Liste) eine unlogische Botschaft aus, die lautet "Data source positions list is empty". Komischerweise meckert es bei z.B. nur 0 nicht, nur bei 0.0 oder 0.00. Betrifft also nur Nullen an letzter Nachkommastelle eines Wertes.

      Die exportierte Datei im Textformat enthält, wie erwähnt, nichts anderes als die P/L Werte, die der Backtester u.a. ausspuckt, bspw.

      -735
      54.6
      -357.55
      -237.51
      -454.13
      78.62
      -536
      -68.47
      -395.86
      -296.91
      24.26
      -247.54
      -198.5
      .
      .
      .

      Im Amibrokerverzeichnis wird automatisch ein neuer Order mit dem Namen "Equity Monaco" erstellt. Dort hinein werden diese Textdatteien exportiert, die man dann mit Equity Monaco aufrufen kann (unter der Option "Data Source" > "Text File" > "..."). Um diesen CBI Code während des Backtestes mit auszuführen zu lassen, müßt ihr diesen einfach am Ende eures Systemcodes zusätzlich einfügen, oder ihr speichert diesen Code als z.B. EquityMonaco.afl im Custom-Ordner ab und fügt dann am Anfang oder Ende eures Systemcodes diese zwei Zeilen ein.

      Quellcode

      1. SetOption("UseCustomBacktestProc", True);
      2. SetCustomBacktestProc("C:\\Programme\\AmiBroker\\Formulas\\Custom\\EquityMonaco.afl");


      SetcustomBacktesteProc muss also den Pfad zu dem EquityMonaco.afl enthalten. Das kann jeder beliebige sein. Nur muss sich halt der Afl dort befinden. Klaro.

      Das Custom Backtester Interface richtet sich ansonsten eher an fortgeschrittene User. Man kann damit so ziemlich alles anstellen, was das Herz begehrt. Eine ausführlichere Einführung mit Bsp. findet man u.a. im UKB von Amibroker.org
      Bilder
      • EquityMonacoExportList.png

        9,41 kB, 934×419, 279 mal angesehen
      Dateien

      Vikke schrieb:

      Hat jemand ähnliches schon gelöst?


      Es gibt einen möglichen Hauptgrund der unterschiedlichen Candles in kleinen Timeframes wie M1 und M5. Keine Zeitsynchronität zwischen Serverzeit und PC-Zeit. Ich stelle dazu eventuell später (nicht unbedingt heute) ein kurzes Video ein. MT4 hat eine andere Serverzeit als meine PC zeit (damit meine ich nicht den Unterschied von bspw 6 Stunden zwischen CET und EST Zeitzone). AB zeichnet z.B.bei 16:00:00 PC-Zeit schon eine neue M1 Kerze (16:00:00 bis 16:00:59), während die selben Kurse im MT4 für eine paar Sekunden (1-2 sec.) noch für die M1 Kerze 15:59:00-15:59:59 bzw 6 Stunden zurück 09:59:00 bis 09:59:59 gezeichnet werden. MT4 ist also noch nicht bei der 16:00 M1 Kerze bzw der 10:00 M1 Ortszeitkerze aufgrund unterschiedlicher Zeit angekommen. MT4 lagt also meiner PC-Zeit minimal "hinterher", obwohl ich die PC Zeit mit der Internetzeit synchronisiert habe (auch bei Auswahl eines US Zeit Server). Die Kurse sind ansonsten schon gleichen. Da ich eh nicht auf Candleformationen achte, wäre mir das wurscht. Und wenn du Mt4 Kerzen von unterschiedlichen FX Brokern vergleichst, dann findest du im M1, M5, ... Intradaybereich eh Unterschiede in Sachen Candleaussehen vor, was dann an unterschiedlichen Kursen der Broker liegt.

      Aber du kannst ja mal deine PC-zeit synchronisieren. Vielleicht beträgt bei dir der Unterschied zwischen PC-Zeit und Internetzeit zweistellige Sekunden oder noch mehr.

      EDIT: shtools.de/programme/netclocksync/index.php
      Ja klar, war auch nur für den Euro gedacht, so auf die Schnelle^^ Hab hier erstmals nbissi mit Round und Prec gespielt:) Versuche das aber noch mit 2Bar Range und SwingHigh/Low zu kombinieren zwecks schnellerem Possizing.

      trash schrieb:

      Vikke schrieb:

      Hab mal einen kleinen Pipkalkulator für den Euro mit ATR20 und Tagesranges programmiert. Weiß jemand wie man den Rand gerade macht oder wie man die Sache optisch rechts mehr einrahmen kann?

      Quellcode

      1. .
      2. .
      3. .
      4. .
      5. Units10 = Prec(((Maxriskeuro/Pipwert/SL10)*100),2);
      6. Units15 = Prec(((Maxriskeuro/Pipwert/SL15)*100),2);
      7. Units20 = Prec(((Maxriskeuro/Pipwert/SL20)*100),2);
      8. Units25 = Prec(((Maxriskeuro/Pipwert/SL25)*100),2);
      9. Units30 = Prec(((Maxriskeuro/Pipwert/SL30)*100),2);
      10. .
      11. .
      12. .


      Um Units zu erhalten, sollte es doch eher /Ticksize statt *100 sein, oder nicht?
      Vikke, auf Deinem Vergleichs-Bild ist ja der eklatante Unterschied unter den grünen Kreisen zu finden, vor der letzten langen Aufwärts-Kerze fehlt auf einer Anzeige eine der zwei kleinen Kerzen. Meine erste Vermutung als Laie wäre daher Verbindungsabbruch.
      "Promising pussy in the after-life is the lowest thing I ever heard..." - Bill Maher

      Vikke schrieb:

      Hab mal einen kleinen Pipkalkulator für den Euro mit ATR20 und Tagesranges programmiert. Weiß jemand wie man den Rand gerade macht oder wie man die Sache optisch rechts mehr einrahmen kann?

      Quellcode

      1. .
      2. .
      3. .
      4. .
      5. Units10 = Prec(((Maxriskeuro/Pipwert/SL10)*100),2);
      6. Units15 = Prec(((Maxriskeuro/Pipwert/SL15)*100),2);
      7. Units20 = Prec(((Maxriskeuro/Pipwert/SL20)*100),2);
      8. Units25 = Prec(((Maxriskeuro/Pipwert/SL25)*100),2);
      9. Units30 = Prec(((Maxriskeuro/Pipwert/SL30)*100),2);
      10. .
      11. .
      12. .


      Um Units zu erhalten, sollte es doch eher /Ticksize statt *100 sein, oder nicht?

      Vikke schrieb:

      Erledigt:)

      Quellcode

      1. H3 = SelectedValue(TimeFrameGetPrice("H", inDaily, 0, expandLast));
      2. L3 = SelectedValue(TimeFrameGetPrice("L", inDaily, 0, expandLast));
      3. Plot(H3,"PHigh",colorBlue, styleLine|styleNoRescale);
      4. Plot(L3,"PHigh",colorBlue, styleLine|styleNoRescale);
      5. Plot(C,"",colorDefault,GetPriceStyle());


      Bei sowas den Plot des Preises vor dem Plot der Linien angeben.
      Sprich so

      Quellcode

      1. H3 = SelectedValue(TimeFrameGetPrice("H", inDaily, 0, expandLast));
      2. L3 = SelectedValue(TimeFrameGetPrice("L", inDaily, 0, expandLast));
      3. Plot(C,"",colorDefault,GetPriceStyle());
      4. Plot(H3,"PHigh",colorBlue, styleLine|styleNoRescale);
      5. Plot(L3,"PHigh",colorBlue, styleLine|styleNoRescale);

      Vikke schrieb:

      Hat jemand ähnliches schon gelöst?


      DDE ist grundsätzlich keine optimalste Verbindung. Es gibt immer minimale zeitliche Lags. Somit kann kurz vor Close, wenn da eine neuer Preis eintrifft, passieren, dass der Close der Mt4 Candle der Open der AB Candle ist aufgrund des minimalen zeitlichen Lags im Millisekundenbereich. Solche Unterschiede wie bei dir entstehen natürlich auch deswegen, wenn z.B. ein Verbindungsabbruch vom Server vorliegt. Dann ist es logischerweise klar, dass dann, da DDE keinen automatischen Backfill hat, bei Neuverbindung Historie fehlt und in der Folge Candles anders dargestellt werden. Was du probieren kannst, ist, das MT4 Plugin für Amibroker statt des DDE Plugins zu verwenden. Das lädt die Historie ständig automatisch nach und sowas sollte auch bei Serverabbruch nicht passieren. Ansonsten, wenn AB die selbe Historie bekommt, dann werden auch die selben Candles dargestellt.