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)
-   -   iCustom (http://www.expert-advisor.com/forum/showthread.php?t=4834)

Lena 04.03.16 14:58

iCustom
 
Gibt es eine Möglichkeit, dass die iCustom Funktion nur den Wert abfragt wenn der Bar geschlossen wird.
Im Moment bastel ich an einem EA und ich muss leider auf die Werte von 3 Indikatoren zugreifen. Allerdings brauche ich nur den Wert, der beim Close des letzten Bars bestand. Daher ist es in meinen Augen schlicht Leistungsverschwendung wenn ich den Wert bei jedem Tick abrufe. Aber gibt es einen Möglichkeit das zu ändern? Oder muss ich die Abfrage nur einfach in einer anderen Funktion unterbringen, als in der OnTick()?

ralfbenker 04.03.16 15:30

Jo gibt es:

double iCustom(
string symbol, // symbol
int timeframe, // timeframe
string name, // path/name of the custom indicator compiled program
... // custom indicator input parameters (if necessary)
int mode, // line index
int shift // shift
);


shift ist die Anzahl der Bars rückwärts gerechnet
Also shift=0 ist der aktuelle noch nicht geschlossene bar.
shift=1 wäre somit ein bar zurück und der letzte geschlossene bar.
shift=2 wäre dann zwei bars zurück der vorletzte geschlossene bar.

Lena 04.03.16 17:02

Vielen Dank für deine Antwort, ich meine das aber anders. Oder aber ich habe einen Denkfehler. Also, mir ist klar dass ich über den Wert "Shift" bestimme von welchem Bar ich den Wert Abfrage. Das ist aber nicht mein "Problem".

In meinem EA, von woaus ich den Wert abfrage sieht es grob so geschrieben aus.

void OnTick(){
LongSignal = iCustom(Symbol(),0,"IndikatorName",externeVar, Buffer, Shift);

Soweit ist auch alles in Ordnung und der Wert wird korrekt ausgelesen.
Aber dieser Aufruf erfolgt doch im EA bei jedem neuen Tick, oder?
Und hier wollte ich gerne wissen ob man es ändern kann, dass nämlich nur beim Close der Aufruf iCustom erfolgt. Ich weiß nicht ob meine Frage verständlich formuliert ist.

traderdoc 04.03.16 17:15

Code:

if OldTime != Time[0]) {
  //Indikatorabfrage
  OldTime = Time[0];
}


pako 04.03.16 22:11

@traderdoc

Worin genau besteht der Unterschied zwischen Pferd und Esel?

traderdoc 04.03.16 22:15

@pako, keine Ahnung, da kenne ich mich nicht aus.
Klär mich auf.
Was hat das mit dem Thread zu tun?

pako 04.03.16 22:21

OldTime oder iCustom?

traderdoc 04.03.16 22:32

Code:

if (OldTime != Time[0]) {
  //Indikatorabfrage
  OldTime = Time[0];
}

Sorry, hatte eine Klammer vergessen.

OldTime oder iCustom?

Verstehe ich nicht.

traderdoc

pako 04.03.16 22:47

Code:



void OnTick()
{
    if(iCustom
}

Oder
Code:

void OnTick()
{
 if(OldTime
}

jeder tick wird abgefragt

traderdoc 05.03.16 00:46

Ja und? Was willst Du denn nun?
Sicherlich wird die if-Abfrage tickweise angesprungen, aber die
Indikatorabfrage wird nur ein einziges Mal beim Wechsel der Kerze
abgefragt. Und das wollte @Lena, nur einmal pro Kerze.

Zitat:

Soweit ist auch alles in Ordnung und der Wert wird korrekt ausgelesen.
Aber dieser Aufruf erfolgt doch im EA bei jedem neuen Tick, oder?
Und hier wollte ich gerne wissen ob man es ändern kann, dass nämlich nur beim Close der Aufruf iCustom erfolgt.
Du bist mir noch die Erklärung bzgl. des Unterschieds zwischen Pferd und Esel schuldig.

traderdoc


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:19 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