Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43291
Benutzer: 7.220
Aktive Benutzer: 82
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 1167
Gesamt: 1167
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.02.12
Mitglied
 
Registriert seit: Oct 2011
Beiträge: 77
Biatsch befindet sich auf einem aufstrebenden Ast
Standard Standard_Abweichung

Hi,
ich wollte gerade einen indikator schreiben, der mir die Standard_Abweichung der letzten 10 Closes in einem separaten Fenster anzeigt.
Wenn ich den Indikator aber anwende, stürzt mein Metatrader aber ab.

Ist der Code falsch oder hab ich einfach nicht genug Rechnerleistung?
Letzteres bezweifle ich doch sehr.
Für diejenigen, die es nicht wissen; dies ist die Standard_Abweichung:



Hier mein Code:

HTML-Code:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2

extern int period = 10;
double Buf0[];

int init()
{
   SetIndexBuffer(0,Buf0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   return(0);
}

int start()
{
   int counted_bars=IndicatorCounted();
   int i = Bars-counted_bars-1;
   
   double ma=0;       // Durchschnitt der letzten 10 Closes
   double diff=0;      // Differenz zwischen einem Close und dem Durchschnitt aus 10 Closes
   double sqrt=0;     // Wurzel
   while(i>=0)
   {
      for(int k=i; k<i+period; k++){
         ma = ma+Close[k];
      }
      ma /= period;
      
      for(int j=i; j<i+period; j++){
         diff = diff + (Close[j]-ma)*(Close[j]-ma);
      }
      sqrt = MathSqrt(diff/(period-1));
   
   Print("sqrt=", sqrt);
   Buf0[i]=sqrt;
   }
   
   return(0);
}
  #2 (permalink)  
Alt 16.02.12
Elite Mitglied
 
Registriert seit: Jun 2010
Ort: Trier
Beiträge: 116
naranjoe befindet sich auf einem aufstrebenden Ast
Standard

Hier verursacht das
Code:
while(i>=0)
den Absturz des MT.

Versuch mal die while-schleife durch eine for-schleife zu ersetzen
Code:
for (i = i; i >= 0; i--)
Damit sollte der MT nicht mehr abstürzen.

Gruß
naranjoe
  #3 (permalink)  
Alt 16.02.12
Mitglied
 
Registriert seit: Oct 2011
Beiträge: 77
Biatsch befindet sich auf einem aufstrebenden Ast
Standard

Wow, big thx.

Kannst du mir auch erklären warum das nun funktioniert ?
  #4 (permalink)  
Alt 17.02.12
Elite Mitglied
 
Registriert seit: Jun 2010
Ort: Trier
Beiträge: 116
naranjoe befindet sich auf einem aufstrebenden Ast
Standard

Die Bedingung "while(i>=0)" war immer gegeben, weil du "i" nicht verändert hast.
Dadurch hat er sich in der Schleife "aufhangen".

Gruß
naranjoe
  #5 (permalink)  
Alt 17.02.12
Mitglied
 
Registriert seit: Oct 2011
Beiträge: 77
Biatsch befindet sich auf einem aufstrebenden Ast
Standard

Ach klar.
Ich dachte schon es hätte einen tieferen programmiertechnischen Hintergrund.
Ich hätte also bloß i-- in die Schleife setzen müssen.
Danke.
  #6 (permalink)  
Alt 17.02.12
Mitglied
 
Registriert seit: Oct 2011
Beiträge: 77
Biatsch befindet sich auf einem aufstrebenden Ast
Standard

Mein nächstes Vorhaben besteht darin mit anderen EAs und Indikatoren auf die Werte des Indikators der Standardabweichung zugreifen zu können.

Ich würde auf meinen eigenen Indikator gern so zugreifen wie auf Standardindikatoren nach dem Prinzip:

double Wert= iRSI(......);

Wie stelle ich das an ?
  #7 (permalink)  
Alt 18.02.12
Elite Mitglied
 
Registriert seit: Jun 2010
Ort: Trier
Beiträge: 116
naranjoe befindet sich auf einem aufstrebenden Ast
Standard

Die Werte die dein Indikator liefert, kannst du in anderen Projekten mit "iCustom" auslesen. Schau mal in der Metaeditor Hilfe für eine genaue Beschreibung.

Gruß
naranjoe
Thema geschlossen

Lesezeichen

Stichworte
indikator, metatrader indikator, mql4, programmierung, programmierung metatrader, standard abweichung

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------