Amibroker AFL

      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?

      Vikke schrieb:

      Ich hänge jetzt sicher über eine Stunde an dem Problem, dass die Trendlines nicht gesaved werden können. Ich habe Layouts, Layers und Templates versucht, nichts hat geholfen. Nach jedem Neuimport von Tickers ist alles weg. Mit Google bekomme ich auch keine befriedigenden Ergebnisse. Hat das mal jemand gelöst?


      Studies (Trend-, Support-, Resistancelinien, Channels, Fibos, Text und alle anderen per Hand eingezeichneten Fkt. aus der Toolbar) werden pro Symbol gespeichert. Löscht du das Symbol aus der Datenbank sind auch diese Studies für das Symbol gelöscht bzw gehen verloren. Bleibt das Symbol allerdings in der Datenbank bestehen und du löscht die Studies, können sie wieder aufgerufen werden.

      amibroker.com/guide/h_workspace.html
      AmiBroker database structure

      A database (or a workspace) is a directory that holds a set of binary files, which are stored in 0-9, a-z, '_' subdirectories. Those binary files hold quotes, symbol information, your studies (trend lines, Fibonacci stuff). Each symbol's information is stored separately in the file with the name of the ticker symbol located in the subdirectory corresponding to the first character of the symbol, so IBM quotation data/studies are stored in the 'IBM' file located in the 'I' subdirectory.

      The default database for AB is the 'data' directory. It contains DJIA sample data. You may create additional databases in other directories via the File->'New database' menu.

      In addition to these subdirectories and files, two additional files are also created by AmiBroker: broker.workspace and broker.master. The first is used to store category names and information about advancing/declining/unchanged issues. The latter stores the table of all symbols that is used for quick loading of the database. These two files are located in the root directory of each database, the 'data' directory, by default.

      In almost all cases, you should NOT touch files in an AmiBroker database, as the program manages them automatically, and no user intervention is required.


      Es gibt aber AFLs, die sowas automatisch einzeichnen. Siehe z.B. unten ein Auto-Trendlinen AFL und ein Auto-Sup&Res AFL. Diese Linien sind alle nicht per Hand eingezeichnet. Von wo bis wo die Trendlinien gezeichnet werden sollen, wird in den Parameters über die nbar Einstellung geregelt. U.a. kann auch eingestellt werden, für welches Timeframe die Auto-TLs eingezeichnet werden sollen. Im Bsp.chart ist der 15 min Chart aufgerufen, die Trendlinien werden aber anhand des Stundencharts eingezeichnet. Beschriftungen, Bruchsignale und senkrechte Linien lassen sich abschalten. Es gibt noch eine paar andere Einstellungen. Zu finden ist dieser AFL in der Library von AB, erstellt von Edward Pottasch. Logischerwesie arbeiten AFLs unabhängig vom Symbol. Sollte also ein Symbol gelöscht werden und dann wieder integriert werden, ist die Information des AFLs weiterhin erhalten.
      Bilder
      • TLSupRes.png

        50,48 kB, 1.246×596, 249 mal angesehen
      Ich hänge jetzt sicher über eine Stunde an dem Problem, dass die Trendlines nicht gesaved werden können. Ich habe Layouts, Layers und Templates versucht, nichts hat geholfen. Nach jedem Neuimport von Tickers ist alles weg. Mit Google bekomme ich auch keine befriedigenden Ergebnisse. Hat das mal jemand gelöst?
      OK, das war vielleicht etwas dünn. Hier der nicht funtionierende ganze Code nochmal:

      Quellcode

      1. var Amibroker, MTdatabase, Shell;
      2. AmiBroker = new ActiveXObject( "Broker.Application" );
      3. // save current Database before open the new one
      4. AmiBroker.SaveDatabase();
      5. // Amibroker database
      6. MTdatabase = "C:\\Programme\\AmiBroker\\Data_Test_Imports\\"; //your Amibroker "MT4" database
      7. // Open database
      8. //AmiBroker.LoadDatabase(MTdatabase);
      9. // Import
      10. if( ! AmiBroker.Import( 0, "C:\\TESTAPPS\\Alpari\\experts\\files\\EURUSD.csv","MT4YMD.format" ));//**** your
      11. xxx.CSV files
      12. AmiBroker.RefreshAll();
      13. AmiBroker.SaveDatabase();
      14. //AmiBroker.Visible = true; // Opens Amibroker if is closed
      15. //notify user when import is finished
      16. Shell = new ActiveXObject("WScript.Shell");
      17. Shell.Popup("MT4 M1 Import Completed", 1.5);
      Mache gerade an dem Import-Script von Trash etwas herum. Leider habe ich ein paar Probleme mit dem Pfad vom dem Importiert werden soll. Was ist an der ersten Zeile falsch? Die zweite geht ohne Probleme.

      Quellcode

      1. if( ! AmiBroker.Import( 0, "C:\\TESTAPPS\\Alpari\\experts\\files\\EURUSD.csv","MT4YMD.format" ));


      Quellcode

      1. if( ! AmiBroker.Import( 0, "C:\\Programme\\OANDA - MetaTrader\\experts\\files\\EURUSD.csv","MT4YMD.format" ));
      Diesen Excel Indicator brauchst du doch nicht, zumal Excel 2003 eh mit max. 65536 Zeilen limitiert ist (was ab XL 2007 dann etwas besser ist mit Zeilenaufnahme von mehr als 1 Million Zeilen).

      Im Chart von VisualChart einfach einen Rechtklick machen und als Textdatei exportieren (vorher die Zeitspanne auswählen)


      Interessanter als dieser Excel Indikator wäre einer, der in VisualChart einen Textdatei-Export von mehreren Tickers gleichzeitig ermöglicht.

      Mit 1GB war die Größe der AB Datenbank gemeint, die mehrere Futureskontrakte enthält. Ein Kontrakt mit M1 Daten bis in die späten 90er kann dann schon mal um die 150 MB an Größe erreichen.
      Sehr schön, danke Trash.

      Ziehe mir gerade intraday Daten von VC. Das Ganze kann man kostenlos mithilfe des Excel Data Indikators machen. Man muss nur noch den Markt und dann bei Eigenschaften die Datenlänge festlegen, dann kann man den Indikator öffnen, der eine Excel Tabelle öffnet, welche die Daten anzeigt - und das kostenfrei!

      Hast du das ähnlich gemacht oder habe ich die 1GB Datei übersehen?
      Antwort auf Vikkes Frage #1303

      Vikke, das ist eine ca 1GB große off-line Datenbank bestehend aus diversen continuous Futures, bei der es unsinnig wäre, diese real-time zu nutzen. Die (real-time) Feedfrage wurde ja in ein paar der letzten Postings geklärt. Was diese off-line Datenbank betrifft und die Frage, woher die Daten zu erhalten sind, dann schaue dir einfach mal Visual Chart an. Dort kannst du M1 Historie bis in die 90er zurück herunterladen und als txt Datei exportieren.

      Um nicht immer den Weg des Import Wizards zu gehen, der länger dauert, wurde in AB ja im letzten Fenster des selbigen die Speicherung von benutzerdefinierten Importformaten integriert, sodass man diesen Wizard nur einmal für das jeweilige Erstellen eines neuen Formates benutzen braucht. Alle weiteren Importe erfolgen dann entweder zwecks Automatisierung über eigene Skripts unter Nutzung der jeweiligen Formatdatei oder durch manuelles Aufrufen von File>Import ASCII>Auswahl des Dateitypes( dein erstelltes Format)>Öffne deine Datendatei(en). Der ASCII Import (als auch der Wizard) Button können auch auf die AB Toolbar gebracht werden, wenn sie dort nicht schon als Standard vorhanden sind.

      Damit du nicht extra den Import Wizard nutzen brauchst, habe ich hier aus meiner Formatdatei für Visual Chart schon die Lösung parat. Folgendes speicherst du als "VisualChart.format" im Formats Ordner ab. .format ist die Dateiendung so wie zB .txt oder .csv oder .exe.

      Quellcode

      1. $FORMAT Ticker, Skip, Date_YMD, Time, Open, High, Low, Close, Volume, OpenInt
      2. $SKIPLINES 1
      3. $SEPARATOR ,
      4. $CONT 1
      5. $GROUP 255
      6. $AUTOADD 1
      7. $DEBUG 1


      GROUP 255 ist Standard. Den Wert 255 kannst du bedenkenlos ändern, je nachdem in welche Gruppe der Import rein soll.
      Es können noch diverse andere Merkmale für den Import hinzugefügt werden, wie $TIMESHIFT, $MARKET, $WATCHLIST etc etc Einfach die Hilfe lesen unter Rubrik ASCII Import.

      $TIMESHIFT -1 als zusätzl. Beispiel (unabhängig von obererem) sorgt dafür, dass während des Importes alle Zeiten der Importdatei gleich automatisch um eine Stunde zurückgerechnet werden unter Beachtung des neu entstehenden Tagesschlusses. Wenn du also eine Historiendatei hast, deren Zeitzone CET+3 ist und du diese in unsere Zeitzone zurückrechnen willst, erzeugt das keine großen Kopfschmerzen mehr, da dies durch diese klitzekleine Einfügung $TIMESHIFT -3 in die Formatdatei vollkommen automatisch geschieht. Keine (umständlichen oder gar langwierigen) Excel- oder sonstige externe Programmverrenkungen nötig.

      Jetzt fehlt nur noch, dass du folgende Zeile in die import.types Datei (zu finden im Formats Ordner) einfügst.

      Quellcode

      1. VisualChart (*.txt)|*.txt|VisualChart.format


      Natürlich hätte ich dir einfach die zwei Dateien hochladen können, aber damit du oder jeder andere Nutzer ein Gefühl für die Sache bekommst, mache ich es lieber so statt vollkommenes Autofeeden.
      Nette Korrelationsmatrix von Herman:

      amibroker.org/userkb/2007/04/2…ting-a-correlation-table/



      WLNum = Param("WatchList Number",0,0,64,1);
      CorrPd = Param("Correlation Period",8,1,30,1);
      list = GetCategorySymbols( categoryWatchlist, WLNum);
      SetOption("NoDefaultColumns",True);
      Filter = Status("LastBarInTest");
      SetSortColumns( 1 );
      AddTextColumn(Name(),"Correlation",1.0);
      Ticker1= Name();
      for( Col=0; (Ticker2=StrExtract( List, Col))!= ""; Col++)
      {
      Var2 = Foreign(Ticker2,"C");
      Corr = Correlation( C, Var2, CorrPd);
      Color = IIf(Corr>0, colorBrightGreen, IIf(Corr<0, colorRed,colorWhite));
      Color = IIf(Ticker1==Ticker2, 1, Color);
      AddColumn( Corr, Ticker2, 1.3, 1, Color);
      }
      Die neue eigenentwickelte Listview Darstellung in der New (Auto-)Analysis in OSs ab Win XP und tiefer wurde mit der gestrigen 5.49 beta gefixt candletalk.de/dienstleister-to…amibroker-afl/#post166171 Die Darstellung ist nun auch in den tieferen Windows OS so wie im alten AA. Das neue AA ist durch den multithreading Support um Einiges schneller als das alte AA (betrifft alles - Scan, Exploration, Backtest, Optimization). Weiterer Vorteil, es ist wie ein Chart als eigenständiger Tab im Hauptprogramm integriert und kann über den seitlichen "+" Button aufgerufen werden.

      (jedes neue AA kann aber natürlich wie auch die Charts im floating Modus, also nicht angedockt sondern frei beweglich als eigenes Fenster laufen) und gegenüber dem alten AA sind nun zig Instanzen gleichzeitig möglich.

      amibroker.com/devlog/2011/11/1…roker-5-49-beta-released/

      Nächste Final Version nach 5.4 ist 5.5 (aber auch die Betas sind amibrokertypisch sehr stabil, könne also gefahrlos genutzt werden).

      Perfect Trader schrieb:

      Mich jedenfalls hat in jahrelangem praktischen Trading und in Foren noch keiner von den Teuer-Feeds überzeugen können und obwohl ich durchaus die richtigen Argumente mal gerne hören würde, auch noch keiner der Anbieter im persönlichen Gespräch.


      Ich habe die Frage nach dem Warum einem CQG Privatuser gestellt (bei Props braucht man nicht fragen, denen sind die Kosten von +1k p.m. egal, den Overkill habe ich in LDN gesehen, x-trader als Handessoftware, CQG zum Charten und Bloomberg als News- und Infofeed, Kosten bei Einzelbuchung +4k p.m.), er meinte, dass CQG Trade Flow -eine Anzeige der getätigten Umsätze am Bid und Ask- das wert wäre.

      Siehe: cqg.com/Docs/TradeFlow.pdf und cqg.com/Docs/IntrotoTradeFlow.pdf