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)
-   -   SL/TP an Fractals koppeln (http://www.expert-advisor.com/forum/showthread.php?t=5982)

Trader93 21.01.18 20:52

SL/TP an Fractals koppeln
 
Hallo zusammen,
leider muss ich Euch (wieder mal) mit nervigen Anfängerfragen auf den Keks gehen...
Ich habe die Hoffnung noch nicht aufgegeben den Test EA vollständig abzuschreiben...

Neuster Gedankenblitz:

Der SL oder der TP wird automatisch auf die Unterstützung- oder Widerstandslinie (vom Indikator Fractals ermittelt) gepackt.

Über Tipps wie ich das o.g. bewerkstelligen kann, bin ich, wie immer, sehr dankbar.

Ich bin schon "soweit" gekommen, den Indikator mittels iCustom in den EA zu integrieren. Sieht dann in etwa so aus:

Code:

double SaR = iCustom(NULL,0,"Fractals",clrRed,clrBlue,0,1);
Jetzt fehlt mir ehrlich gesagt die Fantasie, wo ich mit einem "NormalizeDouble" anzusetzen, mögt ihr mir weiterhelfen?

Trader93 06.02.18 18:05

Mag mir jemand bei dem Anliegen weiterhelfen?

Vielen lieben Dank

next user 07.02.18 15:16

Hast du dir schon mal angeschaut, welchen Wert die Double-Variable bei deinem Code hat?
Solltest du mal tun.

Ich würde dir die Funktion iFractals() empfehlen:
Code:

double fPriceUP = iFractals(NULL,0,MODE_UPPER,...);
double fPriceLO = iFractals(NULL,0,MODE_LOWER,...);

Für den letzten Parameter halt die entsprechende Kerze. Die Werte kannst du dann für deinen SL & TP nutzen.

Trader93 10.02.18 15:09

Zitat:

Zitat von next user (Beitrag 40321)
Hast du dir schon mal angeschaut, welchen Wert die Double-Variable bei deinem Code hat?
Solltest du mal tun.

Ich würde dir die Funktion iFractals() empfehlen:
Code:

double fPriceUP = iFractals(NULL,0,MODE_UPPER,...);
double fPriceLO = iFractals(NULL,0,MODE_LOWER,...);

Für den letzten Parameter halt die entsprechende Kerze. Die Werte kannst du dann für deinen SL & TP nutzen.

Hallo next user, hab vielen Dank für deine Hilfe.

Jedoch scheitere ich beim besten Willen weiterhin daran, den Indikator an den SL/TP anzupassen/einzubinden.

Ich hätte jetzt - vermutlich zu naiv - gedacht, dass man alles über die "OrderSend" Funktion eingießen kann. Würde dann für die Longorder in etwa so aussehen:

Code:


double fPriceUP = iFractals(NULL,0,MODE_UPPER,0);
double fPriceLO = iFractals(NULL,0,MODE_LOWER,0);
.
.
.
{
      Long = OrderSend (Symbol(),OP_BUY,TradeLots,Ask,10,fPriceLO,fPriceUP,"MA_L",MagicNummer,0,Blue);
      }

Für die Shortorder LO und UP entsprechend umgekehrt.

Mich wundert allerdings, dass im Strategietester der SL/TP nicht auftaucht?! Mach ich was falsch (vermutlich ja)? Aber was?

Kann man darüber hinaus noch in den globalen Variablen deklarieren, dass man bspw. eine Unterstützung überspringen will? Also z.B. bei Ordereröffnung setze den SL nicht auf die nächste, sondern auf die übernächste Unterstützung?

Raul0 20.02.18 22:07

Hallo,

das geht so nicht, weil die Fractale erst ab Shift 2 Werte liefern und genauere ab Shift 3.

Z.B.:

PHP-Code:

double fPriceUP iFractals(NULL,0,MODE_UPPER,3);
double fPriceLO iFractals(NULL,0,MODE_LOWER,3); 

Raul

Raul0 21.02.18 09:53

Es kann auch Shift 3 und 4 gewesen sein, da bin ich mir gerade nicht sicher.


Zitat:

Zitat von Raul0 (Beitrag 40374)
Hallo,

das geht so nicht, weil die Fractale erst ab Shift 2 Werte liefern und genauere ab Shift 3.

Z.B.:

PHP-Code:

double fPriceUP iFractals(NULL,0,MODE_UPPER,3);
double fPriceLO iFractals(NULL,0,MODE_LOWER,3); 

Raul


next user 03.03.18 16:17

Ein Teil, warum es nicht geht, hat Raul0 schon erwähnt. Du kannst natürlich kein Fractal bei der aktuellen Kerze erwarten.
Üblicherweise kommt ein Shift von min. 3 zum Einsatz, damit sich die Kerzen für ein Fractal vollständig gebildet haben
und nicht die aktuell laufende Kerze (noch "undefiniert") miteinbezogen wird.

Der andere Teil, der noch zu beachten ist, auch bei Shift 3(4,5,...) muss nicht unbedingt ein Fractal sein.

Eine einfache Möglichkeit wäre folgende:
Code:

double lastfractUP = 0;
double lastfractLO = 0;

for(int i=3; i<20; i++)
{
  if(lastfractUP == 0 && iFractals(NULL,0,MODE_UPPER,i) > 0)
      lastfractUP = iFractals(NULL,0,MODE_UPPER,i);
     
  if(lastfractLO == 0 && iFractals(NULL,0,MODE_LOWER,i) > 0)
      lastfractLO = iFractals(NULL,0,MODE_LOWER,i);
     
  if(lastfractUP > 0 && lastfractLO > 0)
      break;
}

Hier werden als Beispiel die letzten 20 Kerzen (- Shift) geprüft und bei denen die letzten Fractals ermittelt.
Zitat:

Zitat von Trader93 (Beitrag 40336)
Kann man darüber hinaus noch in den globalen Variablen deklarieren, dass man bspw. eine Unterstützung überspringen will? Also z.B. bei Ordereröffnung setze den SL nicht auf die nächste, sondern auf die übernächste Unterstützung?

Klar. Musst dann entsprechend einfach nicht das letzte, aktuelle Fraktal nehmen...

Trader93 15.03.18 14:59

Zitat:

Zitat von next user (Beitrag 40432)
Ein Teil, warum es nicht geht, hat Raul0 schon erwähnt. Du kannst natürlich kein Fractal bei der aktuellen Kerze erwarten.
Üblicherweise kommt ein Shift von min. 3 zum Einsatz, damit sich die Kerzen für ein Fractal vollständig gebildet haben
und nicht die aktuell laufende Kerze (noch "undefiniert") miteinbezogen wird.

Der andere Teil, der noch zu beachten ist, auch bei Shift 3(4,5,...) muss nicht unbedingt ein Fractal sein.

Eine einfache Möglichkeit wäre folgende:
Code:

double lastfractUP = 0;
double lastfractLO = 0;

for(int i=3; i<20; i++)
{
  if(lastfractUP == 0 && iFractals(NULL,0,MODE_UPPER,i) > 0)
      lastfractUP = iFractals(NULL,0,MODE_UPPER,i);
     
  if(lastfractLO == 0 && iFractals(NULL,0,MODE_LOWER,i) > 0)
      lastfractLO = iFractals(NULL,0,MODE_LOWER,i);
     
  if(lastfractUP > 0 && lastfractLO > 0)
      break;
}

Hier werden als Beispiel die letzten 20 Kerzen (- Shift) geprüft und bei denen die letzten Fractals ermittelt.

Klar. Musst dann entsprechend einfach nicht das letzte, aktuelle Fraktal nehmen...

Hi zusammen,

vielen lieben Dank für eure Rückmeldung. Ich habe in der Zwischenzeit einen anderen Ansatz verfolgt. Ich habe, um Unterstützungen (SL) und Widerstände (TP) zu ermitteln, die Fibonnaci genutzt. Hierzu habe ich folgendes angestellt:#

Code:

// Hochs ermitteln
  int FindHigh = iHighest(NULL,0,MODE_HIGH,15,3);
  double HighestHigh = High[FindHigh];
 
// Tiefs ermitteln
  int FindLow = iLowest (NULL,0,MODE_LOW,20,3);
  double LowestLow = Low[FindLow];
 
// Fibonacci Retracements

  double Differenz = HighestHigh - LowestLow;
 
  double Level_1 = LowestLow + (Differenz * 0.236);
  double Level_2 = LowestLow + (Differenz * 0.382);
  double Level_3 = LowestLow + (Differenz * 0.500);
  double Level_4 = LowestLow + (Differenz * 0.618);
  double Level_5 = LowestLow + (Differenz * 0.764);
  double Level_6 = LowestLow + (Differenz * 1.000);
  double Level_7 = LowestLow + (Differenz * 1.616);
  double Level_8 = LowestLow + (Differenz * 2.618);

Im Anschluss einfach via OrderSend() bspw.Level_1 (SL) ,Level_5 (TP) einbetten (Bsp. LongOrder)


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