Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 18.05.20
berndao berndao ist offline
Neues Mitglied
 
Registriert seit: May 2020
Beiträge: 18
berndao befindet sich auf einem aufstrebenden Ast
Standard WIe benutze ich iCLose() bzw. Close[] und Co. richtig?

Hallo,
ich bin noch recht neu beim EA Programmierung und wollte für den Anfang nur mal einen EA, der mir bei jedem Tick den aktuellen Close Preis gibt sowie die Zeit.

Ich hatte daher in der OnTick Funktion mit Sachen wie
Code:
Print(iTime(NULL,0,0));
oder 
Print(iTime(NULL,0,Bars-1));
experimentiert und im Backtesting laufen lassen.
Erwartet hätte ich, dass ich zumindest bei einem von beiden, eine Reihe von Close Preisen kriege, eben zu jedem zeitpuntk den aktuellen Close Preis.

index 1 würde auch noch Sinn machen um nciht den aktuellen bar zu nehmen sondern den letzten abgeschlossenen.

Aber egal, mit welchem Index ich da vorging, so erhielt ich nach speichern, kompilieren und im Strategietester laufen lassen immer nur ein Log dass mir immer den selben preis hinschreibt, so als hätte er sich während der rund 50000 Bars kein Bisschen verändert.

Und ich verstehe nicht warum.
Die dokumentation auf https://docs.mql4.com/series/iclose
schreibt doch eindeutig:
"Returns Close price value for the bar of specified symbol with timeframe and shift."

sprich: gibt mir den close price der Bar zurück, den ich mittels shift (und dem timeframe, währungspaar; was hier aber unwichtig sei)angegeben habe.

meiner logischen Auffassung ändert sich der Chart doch sobald ein neuer balken abgeshclossen wird, oder?

wird ein balken abgeschlossen, so erscheint rechts ein neuer Balken, alle alten balken gehen indexmässig eins nach oben (0->1,1->2, usw)
und der balken ganz links fliegt visuell raus.

Jedenfalls dürfte der jetzige index 0 balken doch bitteschön nciht derselbe sein wie der index 0 balken einige zeitperioden später, oder?

Ich verstehe einfach nicht warum mit neu erscheinenden Balken sich nicht audch die Daten des (jeweiligen) 0-ten oder 1-ten bars entsrechend ändert.

wenn ich wie erwähnt meinen kurzen Code (der in der iOnTick Funktion ist) backteste, zeigt er mir im Log in all den zeilen immer die selbe Zahl.
Was ja nicht sein kann.

Der Close Preis ändert sich doch mit jedem Balken!


Kann mir bitte wer weiterhelfen?
Hatte shcon einmal anderswo gefragt aber dort konnte (oder wollte?) man mir nicht weiterhelfen und verwies nur unfreundlich auf die Dokumentation.
Die, wie oben erwähnt, dem realen Ergebnis widerspricht :-(

Hatte das selbe Prozedere zu beginn mit dem Close[] Array versucht aber gleiches Problem auch dort :-/

Irgendwie kriege ich einfahc nicht periodenaktuell den letzten close preis geliefert :-/