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)
-   -   Trendlinien automatisch zeichnen lassen (http://www.expert-advisor.com/forum/showthread.php?t=4809)

Flow 21.02.16 18:09

Trendlinien automatisch zeichnen lassen
 
Hallo,

ich würde gerne dem EA beibringen Trendlinien zu zeichnen und bei überschreiten dieser einen eine Order ausführen.

Leider finde ich nichts im Netz dazu.

Hat jemand eine Quelle mit Infos oder einen Tipp?

Danke & Grüße

Flow

MA-EA 21.02.16 19:34

Das einfachste dürften Gleitende Durchschnitte sein.

https://www.robotrading.de/ea/tom-de...expert-advisor

traderdoc 21.02.16 19:42

Er schrieb was von TrendLinien!!

MA-EA 21.02.16 19:43

Ja. Aber woher weiß ein Computer, wie er die zeichnen muss? Mit GDs arbeiten ist kein Problem. Die zeigen auch Widerstände und Unterstützungen an.

traderdoc 21.02.16 19:49

Zitat:

Zitat von MA-EA (Beitrag 33370)
Ja. Aber woher weiß ein Computer, wie er die zeichnen muss? Mit GDs arbeiten ist kein Problem. Die zeigen auch Widerstände und Unterstützungen an.

Na ja, das muß man ihm per Code eben beibringen.
Dafür ist der Programmierer ja da.

Lena 21.02.16 20:45

Dafür muss man aber von dem Autraggeber eine sehr exakte Definition erhalten was für ihn eine Trendlinie ist und wie er diese ermittelt. Denn nur wenn dies nach einem festen und eindeutigem Schema abläuft lässt es sich in einen Code umsetzen.

Mit dem Auftrag "Schreibe mir einen EA der Trendlinien einzeichnet und beim überschreiten oder abprallen eine Order setzt. Damit kann man nicht viel anfangen.

MA-EA 22.02.16 15:09

Bestimmt kann man sowas schreiben. Nur wie?

Suchen nach Highs und Lows. Wenn der letzte High tiefer als 1 oder 2 Vorherige und der letzte Low tiefer als 1 oder 2 davor ist, dann hat man
wohl nen Abwärtstrend. Wenn dann irgendwann der Low höher als
die letzten 1 oder 2 Highs ist, kann man wohl mit nem Aufwärtstrend rechnen.

Weiß nicht so genau. :confused:

GenosseX 22.02.16 19:45

Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich an deiner Stelle würde nicht zu viel Zeit investieren in so ein automatisches System, denn die Wahrscheinlichkeit ist groß, dass es nicht den Erfolg bringen wird, welchen du dir erhoffst.
Ich habe selbst so einen EA gemacht, aber die Linien musst du selbst positionieren, den Rest macht der EA. Hier ist der Forumslink:
http://www.expert-advisor.com/forum/...-freeware.html

Das Programm ist beigefügt. Ich empfehle dir das Youtubevideo vorher anzuschauen, ob es das ist was die helfen könnte.

Anderen Falls, kann der EA auch "fremde" Trendlinien handeln, die Linien müssen nur einen bestimmten Namen haben und der EA würde diese erkennen und dann handeln. Also brächtest du dann nur einen Indikator der Linien irgendwie korrekt zeichnet und den korrekten Namen für die Linien gibt, den Rest macht der EA.

Vladimir

MA-EA 22.02.16 20:02

Bei nem EA gehts aber eigentlich darum, dass er alles alleine macht. ;)

GenosseX 23.02.16 07:44

Nein, bei einem EA geht es darum, das er als Hilfsmittel fungiert. Steuern und kontrollieren muss man trotzdem. Nun die Frage der Fragen:
Wenn alles so einfach und alles automatisch wäre, warum macht es dann nicht jeder?

MA-EA 23.02.16 23:29

Weil nicht jeder auf die Idee kommt oder die Geduld hat.

Wie auch immer, ich könnt mir so einen EA ungefähr so
vorstellen:

Buy wenn:
-letztes High>voriges High und letztes Low>voriges Low
-Schließen wenn letztes High<voriges High und
letztes Low<voriges Low

Sell wenn:
-letztes High<voriges High und letztes Low<voriges Low
-Schließen wenn letztes High>voriges High und
letztes Low>voriges Low

Vielleicht noch nen Gleitenden Durschnitt und nen SL dazu.
Oder nen Trailing Stop oder was es alles gibt.

Ist aber nur ne ganz spontane Idee, ausserdem hab ich
Kopfschmerzen und es ist spät. :rolleyes: Keine Ahnung ob das
funktionieren könnte.

MA-EA 04.03.16 17:45

Hallo.

Eine ganz spontane Idee:

-Ein MA aufs High
-Ein MA aufs Low
-Ein flinker MA auf Close

-Close-MA und LastClose über beiden anderen GDs:Buy
-Close-MA und LastClose unter beiden anderen GDs:Sell

Beim Ausstieg bin ich noch nicht sicher. Vielleicht wenn der Close-GD und LC über/unter einem der anderen GDs, bzw. zwischen beiden anderen GDs sind.

RetepM 04.03.16 18:48

Liste der Anhänge anzeigen (Anzahl: 1)
Solche (Trend)linien kann man für viele Zwecke brauchen, BreakOut, Chartformationen. Eigentlich musst Du auch gar nicht zeichnen. Der EA braucht ja nur den Wert zu kennen, bei dem er etwas tun soll.

Ich habe mal aus einem EA (der auch malt :)) einen kleinen indikator gebastelt, mit dem Du 2 Trendlinien anlegen kannst. Vielleicht hilft es Dir ja.

@GenosseX
Bist Du der Kala... vom TradersClub?

MA-EA 05.03.16 02:16

Also ich würd jetzt mal spontan sagen:

Buy wenn:
-LC > CloseGD (gelb) & CloseGD > HighGD (blau)
-Close wenn LC < CloseGD (gelb) & CloseGD < HighGD (blau)

Sell wenn:
-LC < CloseGD (gelb) & CloseGD < HighGD (blau)
-Close wenn LC > CloseGD (gelb) & CloseGD > HighGD (blau)

Ich glaube, das könnte ganz gut funktionieren. Er würde bei den meisten Seitwärtsphasen vermutlich gar nicht erst einsteigen.

https://charts.mql5.com/10/425/usdch...rokers-ltd.png

MA-EA 05.03.16 22:13

Hallo.

Hier solls 2 Fehler geben.

Code:

//Globale Variablen
int MagicNumber = 541574052;
string Name = "Valerius 3GD Vola-EA";

extern int TimeFrame = 0;
extern string TimeFrames = "Current:0;M1:1; M5:5; M15:15; M30:30; H1:60; H4:240; D1:1440";

extern int CloseGD = 3;
extern int HighGD = 6;
extern int LowGD = 6;
extern int GD_Type = 0;
extern string GD_Types = "SMA:0; EMA:1; SMMA;2; LWMA:3";
int GD_Shift = 0;
extern double Lots = 0.01;
extern double Max Spread = 40.0;
extern int Slippage = 300;

int Ticket, i;
double PointSet;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
 
  }
//+------------------------------------------------------------------+
{
double AktuellerSpread = Ask-Bid;
double LC = iClose(Symbol(), TimeFrame, 1);
double CloseGD = iMA iClose;
double HighGD = iMA iHigh(Symbol(), TimeFrame, Fast_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1);
double LowGD = iMA iLow (Symbol(), TimeFrame, Fast_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1);

//Open Orders
if (AktuellerSpread <= Max Spread && LC > CloseGD && CloseGD > HighGD) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
if (AktuellerSpread <= Max Spread && LC < CloseGD && CloseGD < LowGD) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);

//Close Orders
if (LC < CloseGD && CloseGD < LowGD) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue), 0;
if (LC > CloseGD && CloseGD > LowGD) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue), 0;

return(0)
}


MA-EA 05.03.16 23:58

Jetzt gibts nur noch einen Fehler.

'{' - function definition unexpected

Code:

//Globale Variablen
int MagicNumber = 541574052;
string Name = "Valerius 3GD Vola-EA";

extern int TimeFrame = 0;
extern string TimeFrames = "Current:0;M1:1; M5:5; M15:15; M30:30; H1:60; H4:240; D1:1440";

extern int CloseGD = 3;
extern int HighGD = 6;
extern int LowGD = 6;
extern int GD_Type = 0;
extern string GD_Types = "SMA:0; EMA:1; SMMA;2; LWMA:3";
int GD_Shift = 0;
extern double Lots = 0.01;
extern double MaxSpread = 40.0;
extern int Slippage = 300;

int Ticket, i;
double PointSet;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
 
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
 
  }
//+------------------------------------------------------------------+
{
int start

if (Digits <= 3) PointSet = 0.01; else PointSet = 0.0001;
if (Digits <= 1) PointSet = 1;
Lots = MathMax(MathMin(Lots, MarketInfo(Symbol(),MODE_MAXLOT)),MarketInfo(Symbol(),MODE_MINLOT));

double AktuellerSpread = Ask-Bid;
double LC = iClose(Symbol(), TimeFrame, 1);
double CloseGD = iMA iClose;
double HighGD = iMA iHigh(Symbol(), TimeFrame, Fast_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1);
double LowGD = iMA iLow (Symbol(), TimeFrame, Fast_GD, GD_Shift, GD_Type, PRICE_CLOSE, 1);

//Open Orders
if (AktuellerSpread <= Max Spread && LC > CloseGD && CloseGD > HighGD) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
if (AktuellerSpread <= Max Spread && LC < CloseGD && CloseGD < LowGD) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);

//Close Orders
if (LC < CloseGD && CloseGD < LowGD) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue), 0;
if (LC > CloseGD && CloseGD > LowGD) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue), 0;

return(0)
}


Raul0 06.03.16 00:42

{
int start



int start
{


oder?

ralfbenker 06.03.16 11:00

@MA-EA

Die Fehlermeldung sagt ja eigentlich schon was falsch ist, aber eben in englisch.

MA-EA 06.03.16 16:26

Wer findet die 8 Fehler, der bekommt nen tollen EA.

Code:

//Globale Variablen
int MagicNumber = 541574052;
string Name = "Valerius 3GD Vola-EA";

extern int TimeFrame = 60;
extern string TimeFrames = "Current:0;M1:1; M5:5; M15:15; M30:30; H1:60; H4:240; D1:1440";
extern int CloseGD = 3;
extern int HighGD = 6;
extern int LowGD = 6;
extern int GDType = 0;
extern string GDTypes = "SMA:0; EMA:1; SMMA;2; LWMA:3";
int GDShift = 0;
extern double Lots = 0.01;

extern int Slippage = 300;

extern int Ticket, i;
double PointSet;

//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+

int OnInit();
{
//---
 
//---
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
 
{
int start()

if (Digits <= 3) PointSet = 0.01; else PointSet = 0.0001;
if (Digits <= 1) PointSet = 1;

double LC = iClose(Symbol(), TimeFrame, 1);
double CloseGD = iMA(Symbol(), TimeFrame, CloseGD, GDShift, GDType, PRICE_CLOSE, 1);
double HighGD = iMA(Symbol(), TimeFrame, HighGD, GDShift, GDType, PRICE_HIGH, 1);
double LowGD = iMA(Symbol(), TimeFrame, LowGD, GDShift, GDType, PRICE_LOW, 1);


//Open Orders
{
if (LC>CloseGD && CloseGD>HighGD) OrderSend(Symbol(), OP_BUY, (Lots, Ask, Slippage, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 1,  Blue));
if (LC<CloseGD && CloseGD<LowGD) OrderSend(Symbol(), OP_SELL, (Lots, Bid, Slippage, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 1,  Red));
}

{
int OrderSelect(SELECT_BY_TICKET);
}
//Close Orders
{
if (LC<CloseGD && CloseGD<HighGD) OrderClose(Symbol(), OP_BUY, (Lots, Bid, Slippage, ), Blue,)) ;
if (LC>CloseGD && CloseGD>LowGD) OrderClose(Symbol(), OP_SELL, (Lots, Ask, Slippage, ), Red,)) ;
}

int return();
}


MA-EA 06.03.16 22:05

Jetzt sind es nur noch 4 Fehler.
Code:

//Globale Variablen
int MagicNumber = 541574052;
string Name = "Valerius3GDVolaEA";

extern int TimeFrame = 60;
extern string TimeFrames = "Current:0;M1:1; M5:5; M15:15; M30:30; H1:60; H4:240; D1:1440";
extern int CloseGD = 3;
extern int HighGD = 6;
extern int LowGD = 6;
extern int GDType = 0;
extern string GDTypes = "SMA:0; EMA:1; SMMA;2; LWMA:3";
int GDShift = 0;
extern double Lots = 0.01;

extern int MaxSpread = 40;
extern int Slippage = 300;

extern int Ticket, i;
double PointSet;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+

int OnInit(){
return(0);
}

double Spread=Ask-Bid;{
}

double LC = iClose(Symbol(), TimeFrame, 1);
double CGD = iMA(Symbol(), TimeFrame, CloseGD, GDShift, GDType, PRICE_CLOSE, 1);
double HGD = iMA(Symbol(), TimeFrame, HighGD, GDShift, GDType, PRICE_HIGH, 1);
double LGD = iMA(Symbol(), TimeFrame, LowGD, GDShift, GDType, PRICE_LOW, 1);

{
int OrderSelect(SELECT_BY_TICKET);
if (OrderSend(Symbol(),0,Lots,Ask,0,magic,0,clrNONE)==true)
}

//Open Orders

if (Spread <= MaxSpread && LC>CGD && CGD>HGD)
OrderSend(Symbol(), OP_BUY, (Lots, Ask, Slippage, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 1, Blue);{
}

if (Spread <= MaxSpread && LC<CGD && CGD<LGD)
OrderSend(Symbol(), OP_SELL, (Lots, Bid, Slippage, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 1, Red);{
}

//Close Orders
if(OrderSelect)(SELECT_BY_TICKET)

if (LC<CGD && CGD<HGD)
OrderClose(Symbol(), OP_BUY, (Lots, Bid, Slippage, ), Blue,);{
}

if (LC>CGD && CGD>LGD)
OrderClose(Symbol(), OP_SELL, (Lots, Ask, Slippage, ), Red,);{
}

return(0);{
}


MA-EA 06.03.16 22:37

Einfach gesagt soll er noch die Vola als Gleitende Durchschnitte darstellen.


Ist schon spät, vielleicht ist jetzt nicht Alles richtig. http://www.trader-forum.ch/uploads/e...n_rolleyes.gif



High - Low = "Vola in Pips"



"Volas in Pips" der letzten 3 Perioden addieren und / 3 (Je nach Einstellung der GDs, in dem Fall 3 und 6 Perioden)



Dieser Vola-GD wird dann wie ein normaler GD angezeigt, bzw. benutzt.



Das selbe noch mal für die letzten 6 Perioden (je nach Einstellungen)



High - Low = "Vola in Pips"

"Vola in Pips" der letzten 6 Perioden addieren und / 6 (ihre Anzahl, wie bei GDs üblich)



Wenn die Vola der letzten 3 Perioden >= Vola der letzten 6 Perioden ist Order öffnen. Je nach Richtung der richtigen High- Low- und Close-GDs.

MA-EA 07.03.16 21:58

Weiß keiner was falsch ist?

ralfbenker 07.03.16 22:17

warum nimmste nicht gleich iATR() - das ist doch auch nen Ausdruck der Vola.

Und mit High-Low kriegste aber nicht die Pips raus sondern musst noch durch die Points dividieren, oder ?

MA-EA 07.03.16 22:50

Bei der Vola-Berechnung bin ich noch gar nicht. Muss das Teil erst mal mit 3 GDs alleine zum Laufen bringen. Aber immer gibts irgendwelche Fehlermeldungen.

High - Low = Abstand zwischen den beiden und damit sowas wie die Vola.

ralfbenker 07.03.16 23:08

na die Fehlermeldungen sollten ja nicht das Problem sein. Da steht ja beim Kompilieren immer die Zeilennummer in der der Fehler auftritt und auch welchen Fehler du gemacht hast.
Die häufigsten Fehler sind vergessene Klammern und Semikolons.
Ansonsten musst Du einfach mal versuchen mql zu verstehen und nicht immer nur rumprobieren.

Wenn du zum Beispiel Text in ne Klammer schreibst {} muss vor der Klammer auch stehen, warum. Also eine Anweisung / Befehl / Funktion.

Du schreibst manchmal Klammern an Stellen wo Du jeden Kompiler verwirrst.
Jede Klammer die Du öffnest { musst Du auch wieder schließen }
Bin mir auch nicht sicher, ob Du den Unterschied zwischen Variablentyben wie int, double, bool, string oder Array kennst.

Das sind halt so die Sachen, die sich bei Dir wiederholen und die ohne sich mit den Grundlagen zu beschäftigen sinnlos sind.

Bin auch nur Anfänger und helf dir gerne aber Du hast ja immer wieder dieselben Fragen.

MA-EA 07.03.16 23:19

Zitat:

Zitat von ralfbenker (Beitrag 33715)
ob Du den Unterschied zwischen Variablentyben wie int, double, bool, string oder Array kennst.

Ja, schon. Es hapert mehr beim Ordermanagement. Will eigentlich bloß den einen EA mit den 3 GDs schreiben und hab jetzt nicht wirklich Lust, deswegen nen ganzes MQL Buch zu studieren.

Wie ist das mit Order öffnen und schließen? Müssen die Bedingungen für ne Order ausserhalb oder innerhalb dieser beiden Befehls-Klammern sein?
Und braucht jeder Orderbefehl extra Klammern oder reichen für BUY und SELL Order zusammen 2 Klammern?

ralfbenker 08.03.16 22:19

@MA-EA

du solltest das vergessen. Würdest Du einen Roman in russisch schreiben wollen ohne dafür die russische Sprache zu lernen? Das funktioniert doch nicht.

Du musst zumindest verstehen was du machst und Deine Klammern nicht nach dem Lottoprinzip verteilen.
Hier ist ne schöne Videoreihe für Anfänger, nicht in russisch aber dafür in englisch. Ich hoffe das hilft Dir:

https://www.youtube.com/watch?v=n8fZINmSv0g


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