Amibroker AFL

      trash schrieb:

      Hm, bei mir zeigt's richtig an. Wie schaut's beim updaten aus?


      Es geht mir jetzt nicht darum ob die Werte stimmen, sondern darum das das Bar mit der ,18 höher gezeichnet ist als das mit dem Wert ,19.
      Auf dem Bild sah es ja schon so aus als wenn wir schon 1 Cent tiefer waren, aber laut Wert waren wir ja 1 Cent höher.
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/
      Ich bin etwas verwirrt ?(

      Wert MSFT

      Heutiges Tief 26.19 laut Anzeige
      Gestern 26.18 laut Anzeige.

      Warum sehe ich im Chart was anderes?
      Bilder
      • Bildschirminhalt erfassen-1.gif

        2,02 kB, 400×276, 215 mal angesehen
      • Bildschirminhalt erfassen-2.gif

        23,17 kB, 990×887, 246 mal angesehen
      • Bildschirminhalt erfassen-3.gif

        44,98 kB, 1.042×938, 232 mal angesehen
      Die Wissenden reden nicht viel,die Redenden wissen nicht viel.

      klaus-m.blogspot.com/
      Du kannst im AmibrokerChart durch Doppelklick in den Chart den Anfang bzw. Ende einer Range definieren. Standartmäßig kann man z.B. übers Menue reinzoomen. Gib aber auch Befehle mit dem man den Anfang- und Endwert nutzen kann. Damit könnte man den Bereich festlegen in dem der Fibo-Indi angewandt werden soll. Das ist unabhängig vom Fokus, den man per Cursor irgend wo anders plazieren kann... Kennst Du bestimmt schon...

      BEGINVALUE
      - Value of the array at the begin of the range
      amibroker.com/guide/afl/afl_view.php?id=210

      ENDVALUE
      - value of the array at the end of the selected range
      amibroker.com/guide/afl/afl_view.php?id=211
      ich raube, also bin ich....
      Posting 106 geht natürlich auch so als Kurzform mit durchgezogenen Linien etc.

      Quellcode

      1. _SECTION_BEGIN( "daily high low" );
      2. H0 = SelectedValue(TimeFrameGetPrice("H", inDaily, 0));
      3. L0 = SelectedValue(TimeFrameGetPrice("L", inDaily, 0));
      4. H1 = SelectedValue(TimeFrameGetPrice("H", inDaily, -1));
      5. L1 = SelectedValue(TimeFrameGetPrice("L", inDaily, -1));
      6. styl = styleDashed|styleNoRescale;
      7. Plot(H0, "High of today", colorGreen, styl);
      8. Plot(L0, "Low of today", colorRed, styl);
      9. Plot(H1, "High of prev day", colorPaleGreen, styl);
      10. Plot(L1, "Low of prev day", colorOrange, styl);
      11. _SECTION_END();

      goso schrieb:

      Gibt es bei AB auch Linien für Yesterday High und Low und Todays High und Low?

      eine Möglichkeit

      Quellcode

      1. _SECTION_BEGIN( "daily high low" );
      2. Plot(Close, "", colorDefault, GetPriceStyle());
      3. Daba = Param("Days Back", 1, 1, 10,1);
      4. per = inDaily;
      5. H0 = SelectedValue(TimeFrameGetPrice("H", per, 0));
      6. L0 = SelectedValue(TimeFrameGetPrice("L", per, 0));
      7. H1 = SelectedValue(TimeFrameGetPrice("H", per, -Daba));
      8. L1 = SelectedValue(TimeFrameGetPrice("L", per, -Daba));
      9. Day0 = Day();
      10. H0 = H0 * (Day0 == LastValue(Day0));
      11. H0 = IIf(H0, H0, Null);
      12. L0 = L0 * (Day0 == LastValue(Day0));
      13. L0 = IIf(L0, L0, Null);
      14. H1 = H1 * (Day0 == LastValue(Day0));
      15. H1 = IIf(H1, H1, Null);
      16. L1 = L1 * (Day0 == LastValue(Day0));
      17. L1 = IIf(L1, L1, Null);
      18. if(Interval() >= 86400){ //don't plot in daily
      19. H0 = 0;
      20. L0 = 0;
      21. L1 = 0;
      22. H1 = 0;}
      23. else{
      24. Plot(H0, "High of today", colorGreen, styleDashed|styleNoRescale);
      25. Plot(L0, "Low of today", colorRed, styleDashed|styleNoRescale);
      26. Plot(H1, "High of prev day", colorPaleGreen, styleDashed|styleNoRescale);
      27. Plot(L1, "Low of prev day", colorOrange, styleDashed|styleNoRescale);}
      28. _SECTION_END();


      eSignal habe ich nicht probiert.
      Bilder
      • 17.png

        18,51 kB, 1.200×401, 266 mal angesehen

      oldschuren schrieb:


      Sinnvoll währe evt. auch diese Range-Sache. Damit kann man doch einen Bereich vordefinieren... Hab ich zwar noch benutzt, währe aber ne Idee wert.

      Was meinst du mit Range-Sache?

      oldschuren schrieb:


      Trash, kannst Du was zu der Performance der Javascript - Metatrader- Combo sagen? Wie fühlt es sich an wenn man z.B. 100 Werte aktualisieren möchte?

      Musst du mal ausprobieren. Wie gesagt, ich würde auch nur so viel wie nötig importieren lassen, bedeutet, wenn ein Tag fehlt, nur einen Tag importieren usw.
      Ansich sollte es keine Probleme geben. Aber kannst ja sicherheitshalber ein Backup von der Datenbank machen.
      Weil ich gerade in einem anderen Thread Charts v. Ibelieve mit Fibos gesehen habe. Wenn du dir das manuelle Einzeichnen sparen willst, geht es auch schneller/komfortabler mit einem Auto fibo.afl, der je nachdem, wo man im Chart hinklickt, die Levels dann einzeichnet. Der im Anhang befindliche Code kann natrülich noch angepasst werden mit anderen/zusätzlichen Levels.

      Sinnvoll währe evt. auch diese Range-Sache. Damit kann man doch einen Bereich vordefinieren... Hab ich zwar noch benutzt, währe aber ne Idee wert.

      Trash, kannst Du was zu der Performance der Javascript - Metatrader- Combo sagen? Wie fühlt es sich an wenn man z.B. 100 Werte aktualisieren möchte?
      ich raube, also bin ich....
      Weil ich gerade in einem anderen Thread Charts v. Ibelieve mit Fibos gesehen habe. Wenn du dir das manuelle Einzeichnen sparen willst, geht es auch schneller/komfortabler mit einem Auto fibo.afl, der je nachdem, wo man im Chart hinklickt, die Levels dann einzeichnet. Der im Anhang befindliche Code kann natrülich noch angepasst werden mit anderen/zusätzlichen Levels.
      Bilder
      • fibo.png

        12,51 kB, 1.202×372, 249 mal angesehen
      Dateien
      Für das DDE Plug-in gibt es eine Möglichkeit des komfortablen Backfills in Form eines Javascripts, das man in den Ordner Amibroker/Scripts kopiert.

      Das Skript selbst sieht so aus und gilt nur für das DDE plug-in.

      Quellcode

      1. importquotes();
      2. //setInterval ( "importquotes()", 1000 ); //1000ms
      3. function importquotes()
      4. {
      5. filename1 = "C://Programme//Dein MetaTrader//experts//files//EURUSD.csv";
      6. //filename2 = "C://Programme//Dein MetaTrader//experts//files//AUDUSD.csv";
      7. AmiBroker = new ActiveXObject("Broker.Application" );
      8. AmiBroker.Import( 0, filename1, "MT4js.format" );
      9. //AmiBroker.Import( 0, filename2, "MT4js.format" );
      10. AmiBroker.RefreshAll();
      11. }


      Dafür kann ein beliebiger Editor verwendet werden. Abgespeicherter Bsp. Name plus Endung -> Import.js.
      Oben bei //Dein Metrader// muss der Ordnername des jeweiligen Metatraders angegeben werden.
      Für weitere Files einfach nach den Bsp vorgehen. Hinzugefügt werden können also filename3, filename4, .... so wie oben für die Beispiele.
      import.types datei im Format Ordner von Amibroekr müßte auch noch erweitert werden. Ich habe unten im Anhang Beispiele hochgeladen. Diese müssen nur angepasst oder übertragen werden (die anderen zwei Format Dateien sind für den manuellen Import über Files>Import Ascii). Empfohlener Editor zum Nachbearbeiten - das kostenlose Notepadd++. Natürlich geht auch der Windows eigene.

      Für das Aufführen von Import.js unter Tools sind 8 Schritte notwendig. Danach geht man zu Tools>Import und der Backfill wird ausgeführt. Falls Underlyings noch nicht in der Amibroker Datenbank vorhanden sind, vorher diese dort anlegen über die Toolbar, wie unten schon im Import Posting erklärt.



      Hinzukommt im Falle von MT4 noch ein MT4 Indikator, der Historie automatisch exportiert. Zu kopieren nach C:\Programme\Dein Metatrader\experts\indicators. Startdatum am Besten immer so kurz wie möglich halten, wenn nur kurze Historie notwendig ist.
      Hier das Indikator Fenster von Metatrader


      Zu exportierende Underlyings unten beliebig ein- oder hinzufügen.

      Brainfuck-Quellcode

      1. //+------------------------------------------------------------------+
      2. //| Export_history.mq4 |
      3. //| Copyright © 2007, MetaQuotes Software Corp. |
      4. //| http://www.metaquotes.net |
      5. //+------------------------------------------------------------------+
      6. #property indicator_chart_window
      7. extern datetime FromDateTime = D'2011.02.25 12:00';
      8. extern datetime ToDateTime = D'2019.12.31 00:00';
      9. //+------------------------------------------------------------------+
      10. //| script program start function |
      11. //+------------------------------------------------------------------+
      12. int start()
      13. {
      14. // Repeat the following line of code for each currency pair and timeframe, and then press F5 to recompile (or restart MT4)
      15. // First parameter must be a valid currency pair, e.g. GBPUSD
      16. // Second parameter must be valid timeframe, i.e. one of 1, 5, 15, 30, 60 (=H1), 240 (=H4), 1440 (daily), 10080 (weekly), 43200 (monthly)
      17. // To use the currently displayed chart: Export(Symbol(),Period());
      18. Export("EURUSD",1); // This will produce 1 minute history for EURUSD
      19. //Export("AUDUSD",1);
      20. //Export("EURJPY",1);
      21. //Export("USDJPY",1);
      22. //......
      23. return(0);
      24. }
      25. //
      26. int Export(string pair, int tf)
      27. {
      28. string fname = pair + /*"," + tf +*/ ".csv";
      29. //string fname = "TF-1" + tf + "\\" + pair + "," + tf + ".csv"; // change to output to different folders
      30. int handle = FileOpen(fname, FILE_CSV|FILE_WRITE, ",");
      31. if(handle>0)
      32. {
      33. //FileWrite(handle,"Date,Time,Open,Low,High,Close,Volume"); // header
      34. //for(int i=0; i<iBars(pair,tf); i++) //change to reverse date output
      35. for(int i=iBars(pair,tf)-1; i>=0; i--)
      36. {
      37. datetime dtval = iTime(pair,tf,i);
      38. if (dtval < FromDateTime || dtval > ToDateTime) continue;
      39. string date1 = TimeToStr(iTime(pair,tf,i),TIME_DATE);
      40. date1 = StringSubstr(date1,0,4) + "." + StringSubstr(date1,5,2) + "." + StringSubstr(date1,8,2) ;
      41. string time1 = TimeToStr(iTime(pair,tf,i),TIME_MINUTES);
      42. FileWrite(handle, pair, date1, time1, iOpen(pair,tf,i), iHigh(pair,tf,i), iLow(pair,tf,i), iClose(pair,tf,i), iVolume(pair,tf,i) );
      43. }
      44. FileClose(handle);
      45. Comment(".csv history export completed");
      46. }
      47. //----
      48. return(0);
      49. }
      Dateien
      • AB + MT.zip

        (3,57 kB, 201 mal heruntergeladen, zuletzt: )

      oldschuren schrieb:

      Mag man gar nicht glauben. Könnte man somit schon als Volks(Chart)Software bezeichnen. :D Naja, kommt noch der jeweilige Steuersatz dazu und der Wechselkurs ist auch nicht gerade das was man auf dem Chart bei EURUSD so vor sich hat. Aber trotzdem, preisleistungsmäßig top.
      Als schottischer Hanseat in der Eidgenossenschaft war mir das natürlich noch zu teuer: ALso in der Bucht gelauert und mit weiteren 60 % Rabatt von einem Deutschen ersteigert - und Thomasz hat zugestimmt.

      MFG