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)
-   -   Parabolics zählen (http://www.expert-advisor.com/forum/showthread.php?t=5163)

skynat 13.09.16 18:38

Parabolics zählen
 
Moin, ich habe irgendwie einen Denkfehler.

Ich versuche die Punkte des Parabolic SAR rückwärts zu zählen und mit innerhalb dieser Range den Höchst- bzw. Tiefstkurs ausgeben zu lassen.

Ich habe das mit einer for Schleife probiert (wird nachgereicht da ich aktuell an einem anderen Rechner sitze) und bekomme auch einen Wert zurück. Allerdings das Allzeittief - für mich leider unnütz.
Jetzt grübel ich schon eine Weile darüber und daher meine Frage:

lässt sich das überhaupt mit nur einer Schleife realisieren, oder brauche ich eine um den Shift der Parabolics hochzuzählen (beispielsweise solange sie über dem kurs sind) und dann eine die genau diese Anzahl an Kerzen zurückzählt und mir daraus den Kurs ausgibt?


LG

MA-EA 13.09.16 20:27

Shift? :confused:

skynat 13.09.16 21:14

ja der Versatz nach hinten - Standard ist 0 das wäre die aktuelle kerze - 1 ist eine davor usw

Code:

double  iSAR(
  string      symbol,            // symbol
  int          timeframe,        // timeframe
  double      step,              // price increment step - acceleration factor
  double      maximum,          // maximum value of step
  int          shift              // shift
  );


ralfbenker 13.09.16 21:41

Versteh ich das richtig, Du willst den Höchst- oder Tiefpunkt des PSAR bis der Punkt umschaltet von über dem Kurs stehend auf unter dem Kurs stehend?
Das geht schon mit einer Schleife rückwärts (shift) die abgebrochen wird bis ein Wechsel Kurs > iSAR auf Kurs<iSAR erfolgt und umgekehrt.

Hab das jetzt bestimmt nicht richtig verstanden aber lade mal den Teil von Deinem Code hoch.

MA-EA 13.09.16 22:28

Was willst Du beim PS mit Shift? 1. ist er schnell genug 2. Wirds nicht funktionieren. Ist nur optisch von Vorteil. Wie bei MAs. Kann nen EA
nix mit anfangen.

skynat 13.09.16 23:25

Liste der Anhänge anzeigen (Anzahl: 1)
So jetzt zur verdeutlichung

auf dem bild ist ein standard parabolic zu sehen mit einem standardkurs (eurusd in diesem fall)

jetzt möchte ich, für die spanne in der die parabolic sar punkte über dem kurs sind, das niedrigste tief haben

Code:

//---longsignale
while(psar_gruen>Close[1]) //Solange rot über grün ist und der letzte close unter beiden
{
  //double Buffer=0;
 
  for(double lowest=Low[0];ipsar_gruen>Close[1];iShift++)
  {
  if (lowest>Low[iShift])
        lowest=Low[iShift];
 
  Print ("long" +lowest);
 
 
  }

das war mein kläglicher versuch von heute morgen
dieser gibt mir allerdings das allzeit tief heraus - vermutlich weil ich keine richtige austiegsregel habe - im nachhinein ist mir klar, dass ipsar (die grünen punkte) immer true ist. ipsar sind übrigens punkte die ich beim experimentieren angelegt habe - sind die gleichen wie auf dem bild - daher auch die beiden schleifen - war mehr ein akt der verzweifelung

//EDIT
ja shift war ebenfalls ein denkfehler - hatte es mit dem [1] verwechselt von arrays

skynat 14.09.16 00:44

da ich den edit-button vermisse...

ich bin gerade über iHighest und iLowest gestolpert. das vereinfacht die sache - somit brauche ich eigentlich nur noch zurückzählen bis zu der kerze an der die parabolics umschlugen und für diesen bereich die werte auslesen lassen

Code:

//---shortsignale
//---zurückverfolgen wo die psar umgeschwenkt haben von oben nach unten und bis zu dem punkt zurück mit ilowest den wert ermitteln

for(int i=0;psar_rot<Close[i];i++)
{
s_index=i;
}

double s_high=iHighest(NULL,TimeFrame,MODE_HIGH,s_index,1);
Print("Short "+s_high);

//--longsignale
//---zurückverfolgen wo die psar umgeschwenkt haben von unten nach oben und bis zu dem punkt zurück mit ihighes den wert ermitteln
for (int i=0;psar_rot>Close[i];i++)
{
l_index=i;
}

double l_low=iLowest(NULL,TimeFrame,MODE_LOW,l_index,1);
Print("Long "+l_low);

das ist mein aktueller stand - allerdings bekomme ich nun komische werte:
short = 4561
long = 16

ist nun aber auch dolle spät

MA-EA 14.09.16 09:19

Bei iHighest/iLowest musst Du mehrere Bars lassen. Keine Ahnung wie
viele, aber 1 am Ende wird nix bringen.

skynat 14.09.16 11:36

Code:

int  iLowest(
  string          symbol,          // symbol
  int              timeframe,      // timeframe
  int              type,            // timeseries id
  int              count,          // count
  int              start            // starting index
  );

das habe ich jetzt so verstanden, dass er bei 1 anfängt (also die vorhergehende kerze) und dann um "count" zurückzählt und aus dieser range mir das tief ausgibt

habe es rausgefunden - ich dussel habe das falsche ausgeben lassen - iLowest gibt nur die Bar zurück in der der Preis ist. Ich muss dann noch mit Low bzw High und dem entsprechenden index
ausgeben

allerdings habe ich jetzt ein phänomen:
bei den üblichen paaren funktioniert das gut und wird richtig ausgegeben.
bei paaren mit weniger nachkommastellen allerdings (bspw USDJPY) wird wieder ein anderes Hoch oder Tief ausgegeben
im iLowest oder iHighest finde ich allerdings nicht viel dazu

traderdoc 14.09.16 12:37

@MA-EA, dasselbe Defizit wie vorher, erst die Funktion nachlesen und verstehen, dann schreiben.
@skynat, die Funktion iHighest() und iLowest() gibt den Index der Kerze aus, welche das höchste Hoch bzw. tiefste Low besitzt, in der Suche beginnend mit dem Index der Kerze, deren Wert als letzte Variable angeben wurde und dann count Kerzen nach links. Begonnen werden kann auch mit 0 oder eben auch mit Kerzen, die (viel) weiter links liegen.
Richtigerweise hast Du dann noch herausbekommen, dass dieser Rückgabewert ein Integer ist und damit nicht das tatsächliche HH bzw. LL darstellt. Diese wären dann durch High[x] bzw. Low[x] zu ermitteln.

traderdoc


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