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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36908
Benutzer: 6.074
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: hmf44
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 12 Stunden
- hmf44
vor 15 Stunden
- Crossa
vor 17 Stunden
- snatshit
vor einem Tag
- Roerich
vor einem Tag
- John_Liver...

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

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 03.11.15
Neues Mitglied
 
Registriert seit: Aug 2015
Beiträge: 4
1stdiablo befindet sich auf einem aufstrebenden Ast
Standard Array Out of range

Hallo,

ich habe heute versucht, mit Arrays zu arbeiten, was mir nicht so recht gelingen will.

Ich möchte aus dem Indikator "ZigZag" die letzten 5 Hochs und Tiefs ermitteln und diese in Hoch[p] und Tief[p] speichern.
Ob die Berechnung dahinter bereits richtig ist, weiß ich noch nicht. Mir geht es erst mal um den Fehler in

while (HTa[p]==0)

Was stimmt daran nicht?

Wenn ich statt "[p]" eine "1" einsetze und ohne Array arbeite, funktioniert der EA.

Folgender Fehler erscheint:
2015.11.03 00:00:36.787 2015.10.01 08:00 ArrayTest DAX30,M1: array out of range in 'ArrayTest.mq4' (42,11)

Blickt das Jemand?
Angehängte Dateien
Dateityp: mq4 ArrayTest.mq4 (2,1 KB, 1x aufgerufen)
Dateityp: mq4 ZigZag.mq4 (8,3 KB, 0x aufgerufen)
  #2 (permalink)  
Alt 03.11.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

1. Die Arrays sollten nicht in der Funktion OnTick() deklariert werden, sondern in OnInit() oder sogar vorher in den globalen Variablen.
2. Wenn für die Arrays vor dem Aufrufen keine Dimension festgelegt wird, wird das Zugreifen auf das Array ins Leere laufen und diesen Fehler produzieren.
D.h. entweder bei der Deklaration die Dimension festlegen, also z.B. Array[10] oder im Verlauf des Befüllens des Arrays die Dimension dynamisch der Anzahl der Arrayfelder anpassen.
Das geht mittels:
int size = ArraySize(Array);
size++;
ArrayResize(Array, size);
Array[size-1] = Wert; //size-1, weil die Felder von Index 0 bis sie-1 laufen, die Dimension size beträgt.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 03.11.15
Mitglied
 
Registriert seit: May 2015
Beiträge: 124
yytrader befindet sich auf einem aufstrebenden Ast
Standard

Hallo traderdoc,

Zitat:
Die Arrays sollten nicht in der Funktion OnTick() deklariert werden, sondern in OnInit() oder sogar vorher in den globalen Variablen.
Gibt es dafür einen besonderen Grund?

Gruß

yytrader
  #4 (permalink)  
Alt 03.11.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

1. Ich muß mich korrigieren: Die Arrays werden nur global deklariert. (leider kann ich es nicht mehr im Originalpost ändern)
2. Ja, warum sollten die Arrays mit jedem Tick neu deklariert werden?
3. Wäre der Geltungsbereich dieser Arrays nur auf die Funktion OnTick() beschränkt. (Daher auch meine Korrektur bzgl. der falschen Aussage der Deklaration in OnInit()).

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #5 (permalink)  
Alt 06.11.15
Neues Mitglied
 
Registriert seit: Aug 2015
Beiträge: 4
1stdiablo befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
Danke für die Hilfe. Ich habe es dennoch nicht hinbekommen. Da ich eh nur 3 Werte habe, habe ich mir diese einzeln errechnet.
Thema geschlossen

Lesezeichen

Stichworte
array, array bereich, array out of range, bereich, mql4, programmierung, programmierung metatrader


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 03:48 Uhr.



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