Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Hilfe bei ZZ Array (http://www.expert-advisor.com/forum/showthread.php?t=5019)

Trader6666 23.06.16 21:02

Hilfe bei ZZ Array
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nabend ,


hoffe jem weiß Rat, hab den Zig Zag vernünftig auslesen können, jedoch wird nach dem fünften Array nix mehr wieder gegeben. woran kann das liegen?? Bild und Code sind dabei

LG

Code:


double ZIGZAG[9];
double value;
int start()


 if(  BarCount != Bars  )
 {
   
  int count = 0, i = 0, Buffer =0 ;


  while(count < 8)
  {
     
      for(Buffer =-1 ; Buffer <1; Buffer++)
      {
        value = iCustom(Symbol(),0,"ZigZag",5,5,3,Buffer,i);
        if (value > 0 && Buffer ==0)
        {
            ZIGZAG[count] = value;
           
            count++;
         
            break;
        }     
        }
        i++;
        BarCount = Bars;
    }   
  }


yytrader 24.06.16 21:40

Hallo,

warum ist der Code so kompliziert?

Code:

double ZIGZAG[9];
int start()

  int  i = 0;
  double value = 0;

      for(i =0; i <9; i++)
      {
        value = iCustom(Symbol(),0,"ZigZag",5,5,3,0,i);
        if (value > 0)
        {
            ZIGZAG[count] = value;
        }
        i++;
    }   
  }

Ich denke der Code sollte das gleiche machen? Sehe ich das richtig?

Gruß

yytrader

Trader6666 24.06.16 22:10

nabend yytrader,

ja mit kleinen Zusätzten macht er das auch, kann man natürlich auch so schreiben aber darum geht es mir nicht, mir
gehts darum, dass er nur bis zu 6 werte im array speichert und danach aufhört/die werte verloren gehen und ich nicht verstehe warum, array is ja groß genug, und er läuft die schleife auch durch bis er die anzahl an werten hat und beginnt dann von neuem. deswegen meine frage woran das liegen kann das er die restlichen werte einfach nicht wiedergibt/verloren gehen

naranjoe 25.06.16 10:57

Zitat:

... deswegen meine frage woran das liegen kann das er die restlichen werte einfach nicht wiedergibt/verloren gehen
weil Dein Code fehlerhaft ist.
Du versuchst mit iCustom auf den Index Buffer -1 zuzugreifen, den gibt es aber nicht.
Dein Code müsste einiges an Fehlermeldungen auswerfen wenn Du ihn so ausführst.
Deswegen verhält er sich wohl nicht so wie du es gerne hättest.

Gruß
naranjoe

traderdoc 25.06.16 11:48

Da nur der Buffer 0 ausgelesen wird, ist u.a. die for-Schleife im ersten Code völlig überflüssig, zumal richtigerweise festgestellt wurde, dass es keinen Buffer mit -1 gibt.

Der Code von @yytrader ist aber leider auch nicht ganz zielführend, weil erstens der Index count nicht incrementiert wird und zweitens das Shift i nur von 0 bis 9 läuft. Shift i muß allerdings solange incrementiert werden, bis count auf den Wert 9 incrementiert wurde. Erst dann darf die gesamte while-Schleife verlassen werden. Anzumerken sei hier, dass es auch das Feld ZIGZAG[0] mit einem Wert gibt, welches aber nicht im Chart abgebildet wird.

Daher:

Code:

double ZIGZAG[9];
int start()

  int  i = 0;
  double value = 0;
  int count = 0;

      while (count < 9)
      {
        value = iCustom(Symbol(),0,"ZigZag",5,5,3,0,i);
        if (value > 0)
        {
            ZIGZAG[count] = value;
            count++;
        }
        i++;
    }   
  }

traderdoc

Trader6666 25.06.16 13:23

Liste der Anhänge anzeigen (Anzahl: 1)
moin zusammen,

Zitat:

weil Dein Code fehlerhaft ist.

Deswegen verhält er sich wohl nicht so wie du es gerne hättest.
wenn es das nicht wäre, hätte ich diesen Thread nicht aufgemacht :D
Fehler werden angezeigt bezüglich des Buffers richtig, aber der Prozess geht ordentlich durch.

danke dennoch für die antworten :) , hab den "Fehler" gefunden,

@Traderdoc ja ist richtig ZIGZAG[0] gibt auch nen Wert zurück, hab bei der Beschriftung nur das nur anders hingeschrieben also anders gelabelt bei der Anzeige, nachdem ich alles nach und nach geprüft habe gibt es eig keinen Fehler in der Logik, alle Arrays geben einen Wert wieder nur werden Sie nicht in meinen Objekten oben rechts angezeigt, hab Sie nochmal mit Comment ausgelesen und da wird die ganze Arraylänge gefunden und korrekt hinterlegt. Hab ein bild dran gehängt. Lag wohl doch nur an der Anzeizge:o, beide Wege funktionieren,sowohl mit als auch ohne fore-schleife aber werd es denoch ändern , die for-schleife is ja wirklich unnötig und spart Rechenarbeit und die ganzen Fehleranzeigen die sind definitiv too much und ist auch so sauberer geschrieben, vielen dank für die Hinweise/Hilfestellung :)


LG


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:33 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum