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: 3961
Beiträge: 37801
Benutzer: 6.249
Aktive Benutzer: 404
Links: 80
Wir begrüßen unseren neuesten Benutzer: HoigerHL69
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 13 Stunden
- HoigerHL69
vor einem Tag
- sergej_bln
vor 2 Tagen
- metatrader...
vor 3 Tagen
- darkknight
vor 3 Tagen
- callimeroo

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

Empfehlungen

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: 2.004
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: 2.004
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 +2. Es ist jetzt 11:17 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 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.
-----------------------------------------------------------------------------------------------------------------------------