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

Moving Average. Fehler suche

 

haloichbins
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 02.12.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2017, 03:28     Titel: Moving Average. Fehler suche
  Antworten mit Zitat      
Hallo,

ich habe soeben eine MA geschrieben, leider finde ich den Fehler nicht. könnte jemand so nett sein?


Code:
function [output] = myMA(periode,graphics)

[data txt]= xlsread ('dax30')
Open=data(:,1),
High=data(:,2)
Low=data(:,3),
Close=data(:,4),

%create Vectors
sma = zeros(size(close));
%formel: Sum(n)Close/n=SMA(t)
% n=Berechnungsperiode

for ii=periode:length(sma)
   temp=Close(ii-periode+1:ii)
   gains = temp(4:end);
   sma(ii)=sum(gains)/periode;
 
   
end

if graphics==1
     figure;
     subplot(2,1,1);
     candle(High,Low,Close,Open);
     plot (sma)
 end


Danke im Voraus
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2017, 09:23     Titel:
  Antworten mit Zitat      
Hallo,

woraus schließt du, dass es einen Fehler gibt?

Bekommst du eine Fehlermeldung? Welche?
Ein unerwartetes Verhalten? Inwiefern?

Grüße,
Harald
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: 03.01.2017, 12:18     Titel:
  Antworten mit Zitat      
der Fehler ist da stimmt was nicht Smile

keine Fehlermeldung.
Code:
for ii=periode:length(sma)
   temp=Close(ii-periode+1:ii)
   gains = temp(4:end);
   sma(ii)=sum(gains)/periode;


da stimmt was nicht.

also wenn ich oben, 200,1 rein tippe.
function [output] = myMA(periode,graphics)

sollte er mit den Moving average der letzten 200 tage auf Basis des endkurzes berechnen. macht er aber nicht.

lg



....


Hallo wenn wir schon auf Fehler suche gehen, heir nochmal:

hab den code von hier:
https://de.mathworks.com/matlabcent.....ar/content/parabolicSAR.m

Code:
function [SAR,turnPoints,longSort]= parabolicSAR( high,low,AFstart,AFmax,AFdelta)

% $License: BSD (use/copy/change/redistribute on own risk, mention the
% author) $
% History:
% 001: 01-May-2006 ,Natanel Eizenberg

[data txt]= xlsread ('dax30')
open=data(:,1),
high=data(:,2)
low=data(:,3),
close=data(:,4),
% [SAR,turnPoints, longSort]=parabolicSAR( high, low);


%create Vectors
SAR=zeros(size(High));
longSort=zeros(size(high));
turnPoints=zeros(size(high)); j=1;

% defults AFstart,  AFmax, AFdelta
if nargin==2
    AFstart=0.02;
    AFmax=0.2;
    AFdelta=0.02;
elseif nargin==3
    AFmax=0.2;
    AFdelta=0.02;
elseif nargin==4
    AFdelta=0.02;
end;

% SIP Berechnung
% SIP (SAR Initial Point) and first SAR
if high(1)<high(2)
    position='long';
    SAR(1)=min(low(1),low(2));
    maxHigh=max(high(1),high(2));
else
    position='sort';
    SAR(1)=max(high(1),high(2));
    minLow=min(low(1),low(2));
end;

% main loop

for i=2:length(high)

    % update AF
    if (AF<AFmax)
        if (strcmp(position,'long') && high(i)>maxHigh)
            maxHigh=high(i);
            AF=AF+AFdelta;
        elseif (strcmp(position,'sort') && low(i)<minLow)
            minLow=low(i);
            AF=AF+AFdelta;
        end;
    end;

    % new SAR
    if strcmp(position,'long')
        if type==1
            SAR(i)=AF*(high(i)-SAR(i-1))+SAR(i-1);
        else
            SAR(i)=AF*(maxHigh-SAR(i-1))+SAR(i-1);
        end;
        longSort(i)=1;
    else %strcmp(position,'sort')
        if type==1
            SAR(i)=AF*(low(i)-SAR(i-1))+SAR(i-1);
        else
            SAR(i)=AF*(minLow-SAR(i-1))+SAR(i-1);
        end
        longSort(i)=-1;
    end;


    % check for turning point
    if strcmp(position,'long')
        if (SAR(i)>low(i) || SAR(i)>low(i-1))
            AF=AFstart; %reset AF
            minLow=min(low(i),low(i-1)); % new minmum low
            SARt=max(high(i),high(i-1)); %use SARt as last day SAR
            if type==1
                SAR(i)=AF*(low(i)-SARt)+SARt; % new SAR as sort
            else
                SAR(i)=AF*(minLow-SARt)+SARt; % new SAR as sort
            end
            position='sort';
            turnPoints(j)=i; j=j+1;
            longSort(i)=-1;
        end;
    else %if strcmp(position,'sort')
        if (SAR(i)<high(i) | SAR(i)<high(i-1))
            AF=AFstart;
            maxHigh=max(high(i),high(i-1)); % new maximum high
            SARt=min(low(i),low(i-1)); %use SARt as last day SAR
            if type==1
                SAR(i)=AF*(high(i)-SARt)+SARt; % new SAR as long
            else
                SAR(i)=AF*(maxHigh-SARt)+SARt; % new SAR as long
            end;
            position='long';
            turnPoints(j)=i; j=j+1;
            longSort(i)=1;
        end;
    end;

end;% main loop

% set first longSort
longSort(1)=longSort(2);

% set last point as turn point
if j==1 | turnPoints(j-1)~=length(high)
    turnPoints(j)=length(high);
end;

% clear zeros
turnPoints=turnPoints(turnPoints~=0);

 



irgendwie bin ich wohl zu dumm, den code auf meine dauen umschreiben ?

daxdaten.mat
 Beschreibung:

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

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2017, 19:06     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
macht er aber nicht.

... und was macht "er" stattdessen?

Es wäre schon gut, wenn du uns ein wenig dabei hilfst, dir zu helfen.

Wenn du eine Funktion von File Exchange herunterlädst, dann musst du an der Funktion an sich i.d.R. gar nichts ändern, sondern sie nur mit geeigneten Argumenten aufrufen, also z.B.
Code:
[data txt]= xlsread ('dax30');
high=data(:,2);
low=data(:,3);
[SAR,turnPoints,longSort]= parabolicSAR( high,low);


Grüße,
Harald
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: 03.01.2017, 23:43     Titel:
  Antworten mit Zitat      
Hallo, ich bekomme eine Leere Seite wo kein Chart oben steht.
kannst du mir vielleicht in dieser weile weiterhelfen?

Code:
%create Vectors
sma = zeros(size(close));
%formel: Sum(n)Close/n=SMA(t)
% n=Berechnungsperiode

for ii=periode:length(sma)
   temp=Close(ii-periode+1:ii)
   gains = temp(4:end);
   sma(ii)=sum(gains)/periode;
 
   
end


irgendwie bin ich zu blöd um die Formel richtig einzutippen? Crying or Very sad

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.01.2017, 08:28     Titel:
  Antworten mit Zitat      
Hallo,

hast du dir die Variablen mal angesehen?
Sind da vielleicht viele NaN drin? Dann könnte die Option 'omitnan' von sum helfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.01.2017, 12:37     Titel:
  Antworten mit Zitat      
Hallo haloichbins,

In Deinem Code steht einmal "close" und dann "Close":
Code:
sma = zeros(size(close));
...
   temp=Close(ii-periode+1:ii)

Ist das ein Tippfehler?

Ich verstehe nicht, wie es vom geposteten Code zu "bekomme eine Leere Seite wo kein Chart oben steht" kommen kann. Von welcher Art "Seite" sprichst Du?

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: 04.01.2017, 18:33     Titel:
  Antworten mit Zitat      
wenn er mit den Chart Plottet, kommt ein weißes Fenster ohne chart.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.01.2017, 12:53     Titel:
  Antworten mit Zitat      
Hallo haloichbins

Zitat:
wenn er mit den Chart Plottet, kommt ein weißes Fenster ohne chart.

Wer ist "er"?
Wenn er was mit "Chart" plottet? Was ist "Chart"?
Bitte denke daran, das die allermeisten oder wahrscheinlich sogar alle Leser nicht in Deinem Arbeitsgebiet tätig sind. Dir ist sicherlich sonnen klar, was Du fragst, aber die Leser haben zunächst einmal nicht den blassesten Schimmer davon.

Aussagen wie "also wenn ich oben, 200,1 rein tippe." sind nicht nachvollziehbar, weil nicht klar ist wo Du was reintippst. Poste lieber Matlab-Code, denn dann können alle Leser das per Copy&Paste reproduzieren.
Wenn Du schreibst "macht er aber nicht", ist es hilfreich, wenn Du erklärst, was statt dessen geschieht. Dann muss man als Leser weniger raten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.01.2017, 14:09     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich vermute, dass der Code eine leere Figure produziert, was wiederum an NaN liegen wird.

@ haloichbins: bitte den Vorschlag von 4.1., 8:28 beachten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.