|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Array out of Range ??
Hey Leute,
leider kenn ich mich mit Array´s ned so gut aus. Versuch RSI Werte abzuspeichern und der EA stoppt mit dem Fehler "Array Out of Range" Array ist auch mit double R_S_1[10] oberhalb der Startfunktion hinterlegt. Also größe passt auch und die Werte vom RSI stimmen auch beim ersten Durchlauf bevor er fliegt. ArrayMin/Max und iHighest/iLowest sind auch mit int hinterlegt Hab schon gegoogelt aber ich find leider nix, hoffe jem weiß nen Rat LG Code:
int start() { double indi ; if(BarCount != Bars) { BarCount = Bars; for( b =0 ;b<10;b++) { indi = iRSI(NULL,0,R_S_1_Period,PRICE_CLOSE,i); if (indi > 0) { //Laut Journal liegt der Fehler hier drunter in der Zeile, da fliegt er raus R_S_1[i] = indi; i++; } } } maxValueIdx=ArrayMaximum(R_S_1,WHOLE_ARRAY,0); minValueIdx=ArrayMinimum(R_S_1,WHOLE_ARRAY,0); double letztes_Tief = Low [_Tief] ; double letztes_Hoch = High[_Hoch] ; _Tief = iLowest (NULL,0,1,10,1); _Hoch = iHighest(NULL,0,2,10,1); double R_S_1_Tief = iRSI(NULL, 0,R_S_1_Period,PRICE_CLOSE,_Tief); double R_S_1_Hoch = iRSI(NULL, 0,R_S_1_Period,PRICE_CLOSE,_Hoch); |
|
|||
Vor der for-Schleife mal sicherheitshalber
i = 0; setzen. Sollte die RSI-Berechnung mit i = 1 beginnen, dann wird das Programm bei i = 10 den Arrayfehler anzeigen, denn die Arrayfelder gehen nur bis zum Index 9, aber die for-Schleife wird 10 mal durchlaufen. Wo ist b deklariert? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
hey doc , danke für die schnelle antwort
b hab ich auch oberhalb der start() funktion deklariert. Dachte gelesen zu haben, dass variablen mit int deren nicht explizit ein wert zugewiesen wird, automatisch mit 0 initialisiert werden Wahrscheinlich ist das wohl eher Plattformabhängig. habs mal jetzt abgeändert und in der start() funktion deklariert und es klappt , auch wenn ich den wert des Arrays auf 20 erhöhe, das klappt auch super, denk das wars. Was kleinigkeiten so ausmachen können. Da wir grad bei dem Thema sind. Hab versucht die Anzahl des Arrays sowie die anzahl der Schleife , als exern int festzulegen , damit ich nicht überall die Anzahl ändern muss und bekomm nen Fehler beim Array mit "invalid index value" , ob da jetzt ne zahl steht oder ne variable die nen Integer liefert wäre doch egal ?!? Code:
extern int Kerzenanzahl = 20;//Anzahl der Berechnungskerzen int maxValueIdx,minValueIdx,_Tief,_Hoch,TVK1_Done,TVK2_Done,TradeperBar = 0,B,FontSize = 8,BarCount,SL_Check =0; double R_S_1[Kerzenanzahl],Stop,pips,TickSize; string FontStyle ,Wert2,Wert1,Wert3; datetime now; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- TickSize = MarketInfo(Symbol(),MODE_TICKSIZE); Wert1 = "#NAS100_M6"; Wert2 = "#Germany30"; Wert3 = "#US30"; if ( Symbol() == "AUDUSD" || Symbol() == "GBPUSD" || Symbol() == "USDCAD" ||Symbol() == "EURUSD" || Symbol() == "USDJPY" || Symbol()== "EURJPY") { pips = Point*10; } if(Symbol() == Wert2) { pips = Point*100; LotSize = LotSize*10; } //--- return(INIT_SUCCEEDED); } int start() { int i=0; double indi ; if(BarCount != Bars) { BarCount = Bars; for( int b =0 ;b<20;b++) { indi = iRSI(NULL,0,R_S_1_Period,PRICE_CLOSE,i); if (indi > 0) { R_S_1[i] = indi; i++; } } } |
|
|||
Code:
extern int Kerzenanzahl = 20;//Anzahl der Berechnungskerzen int maxValueIdx,minValueIdx,_Tief,_Hoch,TVK1_Done,TVK2_Done,TradeperBar = 0,B,FontSize = 8,BarCount,SL_Check =0; double R_S_1[Kerzenanzahl],Stop,pips,TickSize; string FontStyle ,Wert2,Wert1,Wert3; datetime now; Code:
extern int Kerzenanzahl = 20;//Anzahl der Berechnungskerzen int maxValueIdx,minValueIdx,_Tief,_Hoch,TVK1_Done,TVK2_Done,TradeperBar = 0,B,FontSize = 8,BarCount,SL_Check =0; double R_S_1[],Stop,pips,TickSize; string FontStyle ,Wert2,Wert1,Wert3; datetime now; int OnInit() { ArrayResize(R_S_1, Kerzenanzahl); ... } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
array, array out of range, mql4, programmierung, programmierung metatrader, rsi, rsi array, rsi werte |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|