WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab Bollinger Bänder programmieren

 

haloichbins
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2016, 15:15     Titel: Matlab Bollinger Bänder programmieren
  Antworten mit Zitat      
Hallo Leute,

den RSI hab ich dann doch noch geschafft Smile
Jetzt kommen die BB, leider hab ich da keine Ahnung wie ich anfangen soll.
Kurz zu Berechnung:

Formel:
Zur Berechnung von „Bollinger Bands“ muss zunächst ein „Moving Average“ (siehe dort) konstruiert werden. Danach gilt die folgende Formel: s = Ö (Ct -MA)2 + (Ct-1-MA)2 +...(Ct-n+1-MA)2 / n oberes Band = MA + b*s unteres Band = MA - b*s wobei s = Standardabweichung zwischen Kurs und MA b = Bandfaktor

Kann mir jemand dabei helfen?

Daten: hab ich gegeben: Dax, -> hab eine Datei daraus gemacht.
1 spalte: Date, 2.Open,3.High,4.Low,5.Close6.Volumen7.Adj. Close

-> So angefangen habe ich mal so:
Code:
function [output] = myBollinger(periode,graphics)
[data txt]= xlsread ('dax30')
Open=data(:,1),
High=data(:,2)
Low=data(:,3),
Close=data(:,4),



aber wie weiter?

Danke
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 07.12.2016, 15:20     Titel:
  Antworten mit Zitat      
Was spricht gegen die Nutzung des implementierten Bollinger Bandes?

https://www.mathworks.com/help/finance/bollinger.html

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
haloichbins
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2016, 15:25     Titel:
  Antworten mit Zitat      
Hallo,

der Prof. spricht dagegen, wir sollen es selber machen, wenn ich mir das Script von Matlab runterlade wissen wir nichts, seine Aussage.
LG

und leider habe ich keine Ahnung wie ich das von Matlab vorgeschriebene einbaue.
Wäre für einen Anstupcer dankbar Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 08.12.2016, 11:11     Titel:
  Antworten mit Zitat      
Habe vom Nutzer PN bekommen und habe mit Kontaktdaten geantwortet.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.12.2016, 16:34     Titel:
  Antworten mit Zitat      
Hallo Andreas,

Danke!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
haloichbins
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2016, 23:39     Titel:
  Antworten mit Zitat      
Code:
function [lower, middle, upper] = myBollinger(periode, sabw, graphics)
[data txt]= xlsread ('dax30')
Open=data(:,1),
High=data(:,2)
Low=data(:,3),
Close=data(:,4),

lower= zeros(size(Close));
middle= zeros(size(Close));
upper= zeros(size(Close));


%lower
for ii=periode:length(lower)
    tmp=Close(ii-periode+1:ii);
    lower(ii)= middle(ii) -std(tmp) *sabw;
end
%middle
for ii=periode:length(middle)
    tmp=Close(ii-periode+1:ii);
    middle(ii)=sum(tmp)/periode;
    middle=transpose(middle);
end
%upper
for ii=periode:length(upper)
    tmp=Close(ii-periode+1:ii);
    upper(ii)= upper(ii) +std(tmp) *sabw;
end
   if graphics==1
     figure;
     candle(High,Low,Close,Open);
     plot (lower);
     plot (middle);
     plot (upper);
 end
 


ich hab das mal so geschrieben, aber das sind doch wirkliche 08/15 Aufwendungen, da müsste es doch schon fertiges von Matlab geben wo ich nur meine Zahlen einsetzen, aber wie mach ich das?
(MACD)
ich hätte einmal meine Dax dabei in -> Fints erstellt, aber irgendwie funktioniert das nicht wenn ich

Code:
load daxdaten.mat
dax_CloseMACD = macd(dax1); ------ Muss ich das vorgeben oder holt sich das Programm selber die daten?

dax_OpenMACD = macd(dax1, 'series1');
plot(dax_CloseMACD);
plot(dax_OpenMACD);
title('MACD for dax')



danke im Voraus

die das dabei schaut so aus:

daxdaten.mat
 Beschreibung:

Download
 Dateiname:  daxdaten.mat
 Dateigröße:  167.58 KB
 Heruntergeladen:  331 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 12.12.2016, 09:23     Titel:
  Antworten mit Zitat      
Wie bringe ich diese beiden Aussagen zusammen?

Zitat:

der Prof. spricht dagegen, wir sollen es selber machen, wenn ich mir das Script von Matlab runterlade wissen wir nichts, seine Aussage.



Zitat:

...aber das sind doch wirkliche 08/15 Aufwendungen, da müsste es doch schon fertiges von Matlab geben wo ich nur meine Zahlen einsetzen, aber wie mach ich das?


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
haloichbins
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2016, 14:15     Titel:
  Antworten mit Zitat      
Hallo,

Er meinte wir sollen es verstehen (würde dann beide versionen machen) mich würde es dennoch interessieren wie ich das in die matlab Formel bringe.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 12.12.2016, 15:16     Titel:
  Antworten mit Zitat      
OK, ich guck mir gleich mal den Code an.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
haloichbins
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2016, 15:57     Titel:
  Antworten mit Zitat      
Danke, das ist die Standard macd Funktion von matlab, die auf der matlab Seite angeboten wird. Leider ist die Beschreibung sehr mau, was ich eingeben muss.
https://de.mathworks.com/help/finance/macd.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 12.12.2016, 16:41     Titel:
  Antworten mit Zitat      
Mein lauffähiger Code sieht so aus:

Code:

load daxdaten.mat
% dax_CloseMACD = macd(dax1);
% ------ Muss ich das vorgeben oder holt sich das Programm selber die daten?

dax_OpenMACD = macd(dax1, 'series1')
dax_CloseMACD = macd(dax1, 'series6')
plot(dax_CloseMACD);
plot(dax_OpenMACD);
title('MACD for dax')
 


Vorgeben / selber: Die Daten müssen als FINTS Objekt vorliegen. Klar, man kann die auch aus dem Netz oder von Bloomberg und Co holen, aber hier erst einmal müssen sie vorliegen.

Die Beispieldaten hier sehen etwas anders aus als z.B. in der Doku von MACD. Einfach mal vergleichen was importiert wird, wenn
Code:


gerufen wird. Da ist klar was es ist. OPEN, HIGH, LOW, CLOSE, VOLUME. Hier im Beispiel sind es 6 Datenpunkte die nicht dokumentiert sind. Ich habe mal "series1" als OPEN und "series6" als CLOSE angenommen.


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
haloichbins
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2016, 21:18     Titel:
  Antworten mit Zitat      
Danke, hat funktioniert, Very Happy Smile

%Series 1= Open
%S2= High / S3=Low / Series 4 = Close / Series 5 = Volumen / Series 6 =
%adj. Close.

gibt es da eine Möglichkeit das noch reinzuschreiben bzw. bei desc: (none), dax einzutippen?
--> jetzt frage ich mich nur was der unterschied zwischen .mat Dateien ist und.dat Dateien.

Code:
Moving Average Convergence/Divergence (MACD)
Open Script
Moving Average Convergence/Divergence (MACD) is an oscillator function used by technical analysts to spot overbought and oversold conditions. Use the IBM® stock price data contained in the supplied file ibm9599.dat. First, create a financial time series object from the data using ascii2fts. Look at the portion of the time series covering the 3-month period between October 1, 1995 and December 31, 1995. At the same time fill any missing values due to holidays within the time period specified:

ibm = ascii2fts('ibm9599.dat', 1, 3, 2);
part_ibm = fillts(ibm('10/01/95::12/31/95'));
Calculate the MACD, which when plotted produces two lines; the first line is the MACD line itself and the second is the nine-period moving average line:

macd_ibm = macd(part_ibm);
When you call macd without giving it a second input argument to specify a particular data series name, it searches for a closing price series named Close (in all combinations of letter cases).

Plot the MACD lines and the High-Low plot of the IBM stock prices in two separate plots in one window.

subplot(2, 1, 1);
plot(macd_ibm);
title('MACD of IBM Close Stock Prices, 10/01/95-12/31/95');
datetick('x', 'mm/dd/yy');
subplot(2, 1, 2);
highlow(part_ibm);
title('IBM Stock Prices, 10/01/95-12/31/95');
datetick('x', 'mm/dd/yy')


leider wenn ich 1:1 meine Daten einfüge kommt ne Fehlermeldung,

kann ich so anfangen ?
Code:
dax = ascii2fts('daxdaten.mat', 1, 3, 2);


oder brauche ich hier wie im Beispiel eine .dat dabei?
Code:
ibm = ascii2fts('ibm9599.dat', 1, 3, 2);


danke im Voraus Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.12.2016, 09:38     Titel:
  Antworten mit Zitat      
Es gibt Möglichkeiten Daten in einem Financial Time Series Objekt nachträglich zu ändern. Kann ich gerne raussuchen fall nötig. Tatsächlich ist es am Besten das Objekt gleich richtig anzulegen, da kommt dann wohl ASCII2FTS ins Spiel.

Zu MAT und DAT und TXT. MAT Dateien sind MATLAB-spezifische Dateien zur effizienten Speicherung von Daten. Ohne MATLAB kann man sie aber nicht so einfach lesen. ASCII Formate sind nicht so effizient, aber einfach zu verstehen und in beliebigen Editoren zu öffnen. Übliche Filenamen sind DAT oder TXT, aber es gibt keine Festlegungen.

ASCII2FTS muss da an dieser Stelle offen bleiben, da man sein ASCII File mit Finanzdaten auch bluestar.gordongekko nennen darf Very Happy

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
haloichbins
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2016, 15:38     Titel:
  Antworten mit Zitat      
Hallo,

nein brauchen sie nicht raussuchen. ich habe einfach eine normale Excel Datei importiert -> Tabel, dann bin ich auf das Financial Time Series App gestoßen, draufgeklickt und er wandelte mir die Daten in FINTS um.

https://de.mathworks.com/help/finan.....al-analysis-examples.html

nur wundert es mich, wenn ich alles richtig eingeben habe, kommt eine Fehlermeldung Sad,
desweiters ist es möglich den MACD die Perioden schnell und Periode langsam selber anzupassen oder nimmt Matlab die "vorgeschriebenen"? Dann würde ich so oder so nicht herumkommen mir einen eigenen zu Programmieren.

LG
PS. wie würden sie das eintippen wenn sie nur meine daxdaten.mat Datei haben? würden sie nochmal von den Excel daten anfangen um dann mit ASCII weiter machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.12.2016, 16:02     Titel:
  Antworten mit Zitat      
MACD kann man - wie vielen Code der nicht besonders "geheim" ist - einsehen und editieren. Bitte nur umbennennen zwecks Vermeidung einer Doppelnamenkonfusion. Und es sollte im Header klar dokumentiert sein.

Wenn man aus irgendeinen Grund also einen 27 Tage Moving Average für den MACD hernehmen möchte, dann einfach Zeile 105 (in meiner Version) entsprechend anpassen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.