Amibroker AFL

      Perfect Trader schrieb:


      ..., alleine schon, weil das irgendwie schön aussah ...


      Ich mache sowas ja in erster Linie nicht, damit es irgendwie schöner aussieht, sondern eher des Zweckes wegen, das Gehirn zu entlasten, da letzteres ja doch sehr einfach gestrickt ist. Farben, richtig eingesetzt, sind ja schon so etwas wie eine eigene Sprache und können die Information schneller weiterleiten als ein reiner Zahlenwust.

      Hier noch mal zwei Beispiele mit der rhetorischen Frage "Welches Bild leitet die Information wohl schneller weiter und bettet das begleitet von zarten Frauenhänden gestreichelte und mit betörenden Stimmen umschmeichelte Hirn in ein Samtkissen ein?".

      img840.imageshack.us/img840/4949/60887111.png
      img72.imageshack.us/img72/2000/36636491.png

      Also, in erster Linie verwende ich sowas, um die Datenaufnahme zu verbessern. Bezogen auf das zweite Bsp. bedeutet das im Einzelnen, dass Rot nicht nur die Farbe der Liebe sein kann sondern bezogen auf die Börsenwelt eher einen Negativcharakter einnimmt und je heller etwas wird, um so positiver also besser wird es, "es werde Licht" sozusagen und das Aufatmen startet (bei den Börsenmatrosen ohne Rettungsring). Somit ist der Zahlenwust schon mal durch simple Nutzung von Farben von dutzenden Infos auf zwei Infos zusammenschrumpft: "nicht so gut oder kleiner" (rot) und "besser oder größer werdend" (je näher dem Weißen). Farben als Sprache/unterstützender Infolieferant.

      Und im Bsp von gestern erfüllten Farben einfach den Zweck, Bereiche aufzuteilen/zusammenzufassen und somit leichter dem Denkapparat zur Verfügung zu stellen.

      Farbeinsatz kann Zeit sparen und Stresspegel absenken. Wenn es schöner aussieht, ist das eher zweitrangig und hat nur einen Nebeneffekt (natürlich mag ich Sommer lieber als Winter).

      Da kann ich gleich weitergehen und kurz erklären, wie man eigene Funktionen erstellt und anwendet.
      Für eine Darstellung wie im zweiten Bild habe ich extra eine Farbfunktion erstellt, die ich dann immer nur aufrufen brauche, wenn benötigt. Diese Farbfunktion habe ich einfach in eine eigene AFl Datei gespeichert und in den Include Ordner verfrachtet, der extra für solche Sachen (eigene Funktionen) von T.J. eingerichtet wurde. Aufgerufen werden diese Customfunktionen dann im Hauptskript, indem man ganz oben #include<DeineFunktionsdatei.afl> einfügt sowie dann die jeweilige Funktion über deren Fkt.namen mit den eventuell speziell ausbewählbaren Array (in Klammern) ausführen läßt. Um beim Bsp zu bleiben, hätte die aufgerufene Farbfunktion dann statt eines langen Schwanzes, den man ständig mitschleppt, nur noch eine kurze Funktionsbezeichnung.

      also z.B.

      Folgendes käme in eine Includedatei

      Quellcode

      1. function Varcol( array )
      2. {
      3. .
      4. .
      5. .
      6. .
      7. result = ....;
      8. return result;
      9. }



      Und im Hauptskript wird diese Funktion z.B. in einer Exploration wie folgt angewendet, letzte Zeile

      Quellcode

      1. #include <VariableColor.afl>
      2. range = .....;
      3. SetOption("NoDefaultColumns", True);
      4. SetSortColumns(3);
      5. Filter = 1;
      6. AddTextColumn(Name(),"Ticker", 1.0, colorDarkGrey, ColorRGB(250, 180, 0), 70);
      7. AddColumn(DateTime(), "Date", formatDateTime, colorLightGrey, colorDarkGrey, 120);
      8. AddColumn(range, "Range", 1.0, colorDarkGrey, Varcol( Range ), 50);


      Die Inhalte von so einer Addcolumn Zeile sagen Folgendes aus: Addcolumn(array, Name, format, Textfarbe, Füllfarbe, Zellbreite);
      Anwenderfunktionen amibroker.com/guide/a_userfunctions.html

      Am Rande.... SetOption("NoDefaultColumns", True); setzt einfach die zwei Standardspalten für Ticker und Datetime außer Kraft und man kann eigene Zeilen für diese zwei Parameter erstellen. Setsortcolumns sortiert automatisch nach einer ausgewählten Spalte, ohne dass man ständig auf den Spaltenkopf klicken muss.

      Perfect Trader schrieb:

      (wobei ich nicht weiß, ob Du eine solche überhaupt beabsichtigst).


      Von mir aus gesehen nein! Sollte aber jemand anfragen und sich der Aufwand zur Erfüllung des Wunsches über dutzende oder mehrere hundert Zeilen Code erstrecken, dann versteht es sich von selbst, dass das dann schon mit einem kleinen Dankesobolus versehen werden sollte, wenn schon ein Anderer die Zeit, die Denkarbeit und Fehlerausmerzung übernimmt.
      Kleinere Codesschipsel etc stelle ich ja weiterhin ein, falls sie zu den Hilfreichen gehören. Wer sich für AB interessiert, kann für die anderen längeren stress- und scheufrei nach dem jeweiligen for free Passwort fragen. Ich gebe ja gern Erlerntes weiter, da ich ja auch von Anderer Erlerntem gelernt habe. Bin allerdings auch nicht gern Alleinunterhalter für alle und jeden. Das Beste, um auf ein Level zu kommen, wäre vielleicht, wenn ich nur die Bilder als Anregung reinstelle. Und wenn jemand Probleme bei der Eigenverwirklichung haben sollte, kann man ja immernoch unter die Arme greifen. Ich kann nur wiederholen, dass programmieren mit AFL pupseinfach ist (wobei es auch kompliziertere Dinge zu lösen gibt, bei denen man es erst einmal richtig knacken lassen muss). Ich habe auch schon oft gedacht, dass bekomme ich nicht hin, aber dann kam doch unverhofft aber plötzlich der Geistesblitz. Jedenfalls, wenn man eine Idee hat, kommt man in 80% oder nennen wir es einfach in der überwiegenen Mehrzahl der Fälle sehr schnell und unkompliziert ans Ziel, IMO.
      Wo wir gerade bei Posi Rechnern sind, hätte ich hier noch einen übersichtlichen für FX ohne Excel. Kostenloses Zip-Passwort geht nur an Candletalker, die sich im Forum schon egal wo beteiligt haben und schon ein paar Monate dabei sind. Dann bitte PN an mich. Ich mache es nicht mehr für Leute, die nur am Forum "vorbeihüpfen". Ich hoffe, man versteht's. ;)
      Bilder
      • PosSize.png

        29,21 kB, 926×650, 181 mal angesehen
      Dateien
      • PosSize.zip

        (2,2 kB, 115 mal heruntergeladen, zuletzt: )
      Unten im Bild ein Bsp in Form eines Postionsgrößenrechners, das zeigt, dass man (da es hier mal fälschlicherweise hieß, es ginge nicht) sehr wohl AB mit Excel verbinden und auch die Zellinhalte in bestimmten gewählten Intervallen aktualisieren lassen kann. Es muss nicht DDE sein. Das Ganze läuft über sogenannte OLE Automation (siehe AB Hilfe oder weitere Infos über Suchmaschine). Die Zellinhalte in unterem Bsp. werden dabei komplett über AFL übertragen. Natürlich kann man auch zusätzliche Berechnungen in Excel einfügen, aber prinzipiell benötigt man dies nicht. So einen Postionsgrößenrechner kann man aber besser über die GFX Funktionen in AB darstellen, wie von mir vor ein paar Monaten in diesem Thread gezeigt. Die Version hier für Excel soll nur als Bsp. dienen.

      Damit nicht mehrere Excel Instanzen nach jeder Aktualiserung geöffent werden, gibt es hier amibrokeru.com/ bzw Direktlink amibrokeru.com/FreeLibrary/Fre…ndash-How-to-Connect.aspx in der Library eine Lsg in Form eines Include Files, der die entsprechende Fkt. enthält. Wer's braucht, dann lade ich ihn hoch. Es geht auch mit CreateStaticObject("Excel.Application")

      z.B. so

      Quellcode

      1. excel = CreateStaticObject("Excel.Application");
      2. wb = excel.WorkBooks;
      3. if( wb.Count == 0 )
      4. {
      5. wb.Add;
      6. }
      7. wb1 = wb.Item(1);
      8. ws = wb1.WorkSheets;
      9. ws1 = ws.Item(1);
      10. .
      11. .
      12. .
      13. . dein Code hier
      14. .
      15. .
      16. .
      17. excel.Visible = True;



      Hier amibroker.com/library/detail.php?id=218 ist noch ein Bsp. AFL, über den Charts (hier in Form eines Equitycharts) nach Excel übertragen werden. In ein Sheet wird der Equitychart, in ein anderes Sheet der Drawdownchart und in ein weiteres werden die Werte übertragen. Der User hat das noch mit VBScript gemacht (über die Funktion EnableScript("vbscript")), aber das geht mit reinem AFL auch. Das Script ist noch aus 2002 also schon etwas älter. Die Comments sind in Polnisch. Unten der AFL mit Comments in English.

      Noch etwas Grundsätzliches: Die von mir eingestellten Skripte u.a. der Pos.size Rechner haben kleine Fehler. Also nicht blind darauf verlassen sondern überprüfen und ausbessern oder gefundene Fehler (auch Bugs genannt) melden. Das gilt übrigens für alle von mir hier eingestellten Skripte. Nicht blind darauf verlassen sondern alle AFL Codes als Beta Versionen betrachten, schließlich sind diese zum Teil schnell oder weniger schnell als Anregung oder Sonstiges eingefügt worden ohne auf vollkommen fehlerfreie Funktionweise überprüft worden zu sein! Kleine Fehler schleichen sich schnell ein. ,)
      Bilder
      • Excel.png

        27,22 kB, 808×779, 156 mal angesehen
      Dateien
      Es geht wieder! Der Fehler lag beim Anlegen der Ticker, ich habe die Watchliste komplett vorher gelöscht, dann habe ich die Ticker nur durch das ImportMT4 Script geladen. Die waren somit inklusive Quoten auch vorhanden, jedoch gab es keine reatime Quoten mehr. AB scheint die Ticker erst zu erkennen, wenn man diese separat vorher anlegt, wie mit dem Import der Watchlist. Hattest Du vorher auch schon einmal erwähnt, dachte nur, wenn sie schon da sind, für was sie extra anlegen?^^
      Irgendetwas machst du da noch falsch. Ich hatte noch nie irgendein Problem, wenn ich so vorgehe, wie beschrieben. Das geht mittlerweile wie im Schlaf oder mit verbundenen Augen von statten. Jedes Mal grüne Connect-Anzeige. Melde dich mal beim Support. Die werden dafür bezahlt. Oder falls ich heute abend Zeit und Lust haben sollte, gäbe es noch die Möglichkeit noch, dass ich mir mal kurz deine Vorgehensweise per Teamviewer Session anschaue, falls gewünscht. Ratende Ferndiagnose ist mir zu zeitaufwendig.
      Hmm... zu früh gefreut. Nachdem ich 3 Monate geladen habe, ist schon wieder alles auf "wait", kein "reconnect" möglich. Ohne Worte. Wobei ich nach der OA Migration heute kurzzeitig ebenfalls Probleme hatte, daran kannst aber jetzt nicht mehr liegen.
      Bilder
      • 2011-09-08_14-06.png

        12,72 kB, 904×484, 105 mal angesehen
      • 2011-09-08_14-07.png

        6,64 kB, 390×496, 105 mal angesehen
      • 2011-09-08_14-08.png

        5,52 kB, 442×489, 106 mal angesehen
      :D

      DDE Config demzufolge. Kann passieren. Ich stelle am Besten noch mal rein, wie die Konfiguration aussehen muss. Time Shift müßte natürlich individuell je nach Quelle angepasst werden, falls Zeitzone der Quelle nicht gewünscht. Der Rest ist überall gleich, was die DDE Verbindung mit jeglichen MT Servern angeht.
      Bilder
      • DDE MT Verbindung.png

        10,11 kB, 519×515, 138 mal angesehen
      Betrifft das alle Ticker? Die "H1'ler" werden nicht mit upgedatet, da sie einen anderen Tickernamen haben, also bspw EURUSD60 statt EURUSD. Diese müssen dann über einen Klick per Script (das sich in der AB Toolbar befindet bzw befinden kann per Customize) upgedatet werden. Über Interval() Funktion kannst du das aber auch automatisieren (in Java Script). Dann müßtest du aber auch den Export der H1 Daten in MT4 automatisieren. Meiner Meinung nach alles nicht notwendig, wenn man sich nur einen Überblick im Big Picture verschaffen will. Wenn man H1 innerhalb des Tages doch aller Furz lang up-to-date haben will bei neuen Hochs oder Tiefs oder was weiß ich weswegen, dann einmal Klick in Mt4 und einmal Klick in AB und fertig ist die G'schicht.
      Hi trash,

      ich habe die 9 Monate auch nur als Belastungstest geladen, um einfach weitere Fehler zu produzieren, mir war inzwischen auch klar geworden, was ja auch in der Bedienungsanleitung steht, das das einfach zu viel ist. Ich habe deinen Rat dann auch befolgt und habe mehrere Ticker für verschiedene TFs angelegt. Das klappt ganz gut.

      Leider funktioniert die DDE Verbindung immer noch nicht. Habe die Ticker mit der Tickerimportdatei angelegt und danach die Daten importiert. Historie habe ich jetzt, das funktionierte auch vorher, selbst die Auswahl "reconnect" ist jetzt vorhanden, jedoch bekomme ich weiterhin keine Verbindung zustande.

      An MT kann es nicht liegen, da mein Excel eine Verbindung hat.
      Vikke, was DDE betrifft, das habe ich alles schon erwähnt. Wenn keine Ticker vorhanden sind, dann musst du für die DDE Übertragung die Namen vorher anlegen. Erst danach Historie importieren. Damit man bei einer neuen Datenbank nicht von Neuem die Ticker eingeben muss, habe ich als Beispiel eine Tickerimportdatei hochgeladen. Posting #287

      Was deinen Historienimport betrifft. Hast du mal gerechnet? Also 1 Woche M1 Historie müssten so ungefähr 1Mb sein. 9 Monate sind so um die 39 bis 40 Wochen. Das ganze mal 26 Tickers macht ca. 1GB. Verwendest du zudem WIn XP? Den Rest kannst du dir ja denken.

      Ich habe dir ja zwei Seiten zurück vorgeschlagen, wie man bei DDE Plugin-Nutzung, falls benötigt, zusätzlich langfristige Historie für eine real-time Datenbank anlegt. Dann legst du noch im MT4 zwei Profile an, ein Profil für M1 und ein Profil für H1 und wenn du H1 updaten willst, dann schaltest du kurz in das Profil um und kannst dann die upgedateten exportierten Daten importieren. Oder du machst alles in einem MT4 Profil. Zusätzlich hatte ich für H1 eine extra Skript hochgeladen, das man als Zusatzbutton in der AB Toolbar anlegen kann.

      Jetzt überlege mal, was klüger ist, deine 1GB Datenbank mit 9 Monaten M1 und 1 GB oder in meinem Fall H1 und M1 mit mehr Informationen und kleinerer Datenbank. Meine DB hat eine Größe von ca 80MB und die Rückschau geht bis 2009, um sich, falls benötigt, einen Überblick zu verschaffen.
      Bei einem Test 9 Monate und 26 Ticker mit 1M hochzuladen ist mir der Rechner eingefroren. Hatte dabei noch allerhand im Hintergrund offen. Der Computer war dann doch etwas überlastet und nichts ging mehr, also Neustart. Nun habe ich das Problem, das ich zwar über das Script importieren kann, jedoch bekomme ich keine Realtimeverbindung über DDE zustande. Habe die gleichen Einstellungen wie vorher auch. Habe davor die neuen Scrips alle angepasst, welche auch funktionierten. Jetzt komme ich rechts unten nur bis zur "Wait" Anzeige, "Reconnect" ist nicht verfügbar. Was könnte bei dem Kaltstart verloren gegangen sein?