Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MQL Codefrage: EA soll auf 2 Indikatoren zugreifen

Geschrieben

ja hi erstmal... ich habe mich extra hier angemeldet in der hoffnung die hilfe zu bekommen die ich benötige =)

 

also zu meinem anliegen:

 

ich will das mein ea dann eine order abschließt wenn 2 indikatoren welche ich mir irgendwo aus dem netz gezogen habe die gleiche farben haben und dazu noch der adx einen wert von über 20 hat. ich habe allerdings nunmal garkein plan von programmierung. was man im netz so an hilfen zu solchen themen findet ist irgendiwe immer an leute gerichtet die sich schon damit auskennen. also wie sage ich denn bitte den ea das er echt nru dann kaufen soll wenn esagte 2 indikatoren gleichfarbig sind? habe zwar den befehl gefunden mit dem man einen externen indikator einbindet. aber wenn ich das genau befolge kommen nur fehlermeldungen -.-

 

ich hänge unten mal die codes der indikatoren an:

 

//+------------------------------------------------------------------+
//|											  SuperTrend.mq4 v1.2 |
//|				   Copyright © 2008, Jason Robinson (jnrtrading). |
//|								   http://www.spreadtrade2win.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Jason Robinson."
#property link	  "http://www.spreadtrade2win.com"

#property indicator_chart_window
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_buffers 2
double TrendUp[], TrendDown[];
int changeOfTrend;
extern int Nbr_Periods = 10;
extern double Multiplier = 3.0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function						 |
//+------------------------------------------------------------------+
int init()
 {
//---- indicators
  SetIndexBuffer(0, TrendUp);
  SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
  SetIndexLabel(0, "Trend Up");
  SetIndexBuffer(1, TrendDown);
  SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
  SetIndexLabel(1, "Trend Down");
//----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function					   |
//+------------------------------------------------------------------+
int deinit()
 {
//----
  
//----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function							  |
//+------------------------------------------------------------------+
int start()
 {
  int limit, i, flag, flagh, trend[5000];
  double up[5000], dn[5000], medianPrice, atr;
  int counted_bars = IndicatorCounted();
//---- check for possible errors
  if(counted_bars < 0) return(-1);
//---- last counted bar will be recounted
  if(counted_bars > 0) counted_bars--;
  limit=Bars-counted_bars;
  //Print(limit);
  
//----
  for (i = Bars; i >= 0; i--) {
  TrendUp[i] = EMPTY_VALUE;
  TrendDown[i] = EMPTY_VALUE;
  atr = iATR(NULL, 0, Nbr_Periods, i);
  //Print("atr: "+atr[i]);
  medianPrice = (High[i]+Low[i])/2;
  //Print("medianPrice: "+medianPrice[i]);
  up[i]=medianPrice+(Multiplier*atr);
  //Print("up: "+up[i]);
  dn[i]=medianPrice-(Multiplier*atr);
  //Print("dn: "+dn[i]);
  trend[i]=1;
  
  
  if (Close[i]>up[i+1]) {
	 trend[i]=1;
	 if (trend[i+1] == -1) changeOfTrend = 1;
	 //Print("trend: "+trend[i]);
	 
  }
  else if (Close[i]<dn[i+1]) {
	 trend[i]=-1;
	 if (trend[i+1] == 1) changeOfTrend = 1;
	 //Print("trend: "+trend[i]);
  }
  else if (trend[i+1]==1) {
	 trend[i]=1;
	 changeOfTrend = 0;	   
  }
  else if (trend[i+1]==-1) {
	 trend[i]=-1;
	 changeOfTrend = 0;
  }

  if (trend[i]<0 && trend[i+1]>0) {
	 flag=1;
	 //Print("flag: "+flag);
  }
  else {
	 flag=0;
	 //Print("flagh: "+flag);
  }
  
  if (trend[i]>0 && trend[i+1]<0) {
	 flagh=1;
	 //Print("flagh: "+flagh);
  }
  else {
	 flagh=0;
	 //Print("flagh: "+flagh);
  }
  
  if (trend[i]>0 && dn[i]<dn[i+1])
	 dn[i]=dn[i+1];
  
  if (trend[i]<0 && up[i]>up[i+1])
	 up[i]=up[i+1];
  
  if (flag==1)
	 up[i]=medianPrice+(Multiplier*atr);
	 
  if (flagh==1)
	 dn[i]=medianPrice-(Multiplier*atr);
	 
  //-- Draw the indicator
  if (trend[i]==1) {
	 TrendUp[i]=dn[i];
	 if (changeOfTrend == 1) {
		TrendUp[i+1] = TrendDown[i+1];
		changeOfTrend = 0;
	 }
  }
  else if (trend[i]==-1) {
	 TrendDown[i]=up[i];
	 if (changeOfTrend == 1) {
		TrendDown[i+1] = TrendUp[i+1];
		changeOfTrend = 0;
	 }
  }
  }
  WindowRedraw();
  
//----
  return(0);
 }
//+------------------------------------------------------------------+

 

dieser indikator erstellt bei ienem aufwärsttrend eine grüne linie unter dem kurs udn eine rote linie bei abwärtstrend über dem kurs. es geht mri da jetzt nicht um irgendwelche zahlen... die order soll sich einfach nru nach der farbe richten.

 

//+------------------------------------------------------------------+
//|													ADXFilter.mq4 |
//|								  Copyright © 2006, Forex-TSD.com |
//|												Written by mj_bolt|   
//|																  |									  
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Forex-TSD.com "
#property link	  "http://www.forex-tsd.com/"

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 0.5
#property indicator_buffers 4
#property indicator_color1 C' 23,139, 23'
#property indicator_color2 C'255, 32, 32'
#property indicator_color3 C' 90,185, 90'
#property indicator_color4 C'255,185,185'



//---- input parameters
extern int PeriodADX=14;
extern int ColorLevel=15;


//---- indicator buffers
double UpBuffer1[];
double DnBuffer1[];
double UpBuffer2[];
double DnBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function						 |
//+------------------------------------------------------------------+
 int init()
 {
  string short_name;
  
//---- indicator line
  SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1);
  SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);
  SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,1);
  SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,1);
  
  SetIndexBuffer(0,UpBuffer1);
  SetIndexBuffer(1,DnBuffer1);
  SetIndexBuffer(2,UpBuffer2);
  SetIndexBuffer(3,DnBuffer2);
  
  IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
  
//---- name for DataWindow and indicator subwindow label
  short_name="ADX ("+PeriodADX+")";
  IndicatorShortName(short_name);
  SetIndexLabel(0,"UpTrend");
  SetIndexLabel(1,"DownTrend");
  SetIndexLabel(2,"Mild UpTrend");
  SetIndexLabel(3,"Mild DownTrend");
  
//----
  SetIndexDrawBegin(0,PeriodADX);
  SetIndexDrawBegin(1,PeriodADX);
  SetIndexDrawBegin(2,PeriodADX);
  SetIndexDrawBegin(3,PeriodADX);
 
//----
  return(0);
 }

//+------------------------------------------------------------------+
//| ADXFilter														 |
//+------------------------------------------------------------------+
int start()
 {
  int shift,trend;
  double ADX0,ADX1,ADX2;

  
  for(shift=Bars-PeriodADX-1;shift>=0;shift--)
  {	
  ADX0=iADX(NULL,0,PeriodADX,PRICE_CLOSE,MODE_MAIN,shift);
  ADX1=iADX(NULL,0,PeriodADX,PRICE_CLOSE,MODE_PLUSDI,shift);
  ADX2=iADX(NULL,0,PeriodADX,PRICE_CLOSE,MODE_MINUSDI,shift);
  	
  if (ADX0<ColorLevel && ADX1>ADX2)  trend=1;
  if (ADX0>ColorLevel && ADX1>ADX2)  trend=2;  
  if (ADX0<ColorLevel && ADX2>ADX1)  trend=-1;
  if (ADX0>ColorLevel && ADX2>ADX1)  trend=-2;
  
  if (trend==1) 
  {
  
  UpBuffer1[shift]=0;
  UpBuffer2[shift]=1;
  DnBuffer1[shift]=0;
  DnBuffer2[shift]=0;
  
  }
  if (trend==2) 
  {
  
  UpBuffer1[shift]=1;
  UpBuffer2[shift]=0;
  DnBuffer1[shift]=0;
  DnBuffer2[shift]=0;
  
  }
  if (trend==-1) 
  {
   
  UpBuffer1[shift]=0;
  UpBuffer2[shift]=0;
  DnBuffer1[shift]=0;
  DnBuffer2[shift]=1;
  }
  
  if (trend==-2) 
  {
  
  UpBuffer1[shift]=0;
  UpBuffer2[shift]=0;
  DnBuffer1[shift]=1;
  DnBuffer2[shift]=0; 
  
  }
}
return(0);	
}

 

so dieser indikater erstellt 4 farben welche in balkenform .. oder eher striche... durch bils laufen. interissant sind für mich da nur zwei von: rot und grün. die anderen wären mintgrün und so ein blasses rot.

 

wenn jetzt also beide rot = sell.. wenn beide grün = buy.

natürlich nur bei einem adx über 20.

 

steht allerdings noch das problem im raum das er nach trail stop automatisch nachkaufen würde wenn dann ie bedingungen trozdem noch gegeben sind. das ist schlecht. das soll er lassen. und nur nachakufen wenn bei nachfolggender kerze die bedingungen noch erfüllt sind.

 

so.. wie erklärt man nun einen anfänger wie mir wie er da vorzugehen hat?

 

oh und was den austieg betrifft: bin ich mir noch nicht so sicher. der pbere indikator hat die angewohnheit bei einem trend wechsel erstmal ein paar mal hin und her zu wechseln. der untere ist nur für den einstig interissant. vllt würde ich jeweils das genaue gegenteil nehmen. allerdings ohen einfluss des adx. und wenn dann halt die gegensätzlichen bedingungen gegeben sind sofort nach order schluss eine neue absetzt... muss ich mal sehen. oder kann mir da wer nen guten ausstiegsindikator empfehlen? ansonsten wird halt nru ne einstigesautomatik und ich muss dann sehen von selbst den richtigen punkt zu finden... na erstmal mus sich es (mit eurer hilfe) irgednwie schaffen das er ordert wenn er soll =)

Bearbeitet von Henrik
Threadüberschrift präzisiert

Featured Replies

Geschrieben
  • Autor

ja ähm...

 

 Print(" Time=",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),"Buy2_3: ",Buy2_3);

 

Da sagt er Buy2_3 ist nicht definiert. Ich chek net warum xD

Habe deins da quasi 1:1 kopiert udn die Variabel eingetragen...

Bearbeitet von whipsaw
<> code tag eingebunden

Geschrieben
ja ähm...

 

Print(" Time=",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),"Buy2_3: ",Buy2_3);

 

Da sagt er Buy2_3 ist nicht definiert. Ich chek net warum xD

Habe deins da quasi 1:1 kopiert udn die Variabel eingetragen...

Muss aber funktionieren! :sad:

Wenn du so an deinem Ursprungscode nichts geändert hast und du immer noch

Buy2_3 als double definierst dann gibt es keinen Grund, warum er die Variable hier nicht kennen sollte...

Dein Print-Aufruf steht schon in der Funktion start(), oder?

 

Kannst den Print-Befehl ja mal mit anderen Variablen ausprobieren...

Geschrieben
  • Autor

hm.. also das hab ich nich hinbekommen xD

naja... bin jetzt aber soweit das ich mit den Einstiegen eig. ganz zufrieden bin. Nur die ausstiege bereiten mir Kummer. wenn ich das über trailstop oder T/P laufen lasse dann öffnet er dannach direkt wieder eine Order (weil ja die bedingungen noch gegeben sind.) Das prob dabei ist nur das er dann direkt zum S/L düst. Habe auch diverse Indikatoren für den Ausstieg probiert. Aber die scheinen alle samt zu unruig. Z.B CCI: Wenn ich sage Close wenn RSi >/< 0 dann macht er wie wild auf und zu. Selbst wenn ich den shift auf 1 setze. weis nicht was das soll. man sieht dabei doch ganz deutlich das er eben nicht drüber oder drunter geht. weis also nicht wieso der EA das denkt. hat da vllt mal irgendwer ne Idee wie ich das lösen kann?

 

edit:

kennt vllt auch wer ne möglichkeit das meine Einstiegsindikatoren nicht mehr so unruig sind? habe z.Z. nämlich einfach mehere eingestellt mit verschiedenen shifts und Charts.. also die Zeitzonen. würde ich das mit nur einem betreiben dann würde er auch wieder anfangen im falschen bereich zu öffnen. oh und habe sogar die Parameter auf ein abnormalen hohen wert gelegt. bei Standart Werten wird er wieder zu unruig. Und so ganz astrein ist das immer noch nicht. Kann doch nicht sein das der EA ein 1 Signal bekommt wärend die sich die Farbe die man sieht nicht ändert....kurios

Oder kann es vllt sein das der Backtest von MT4 nich so der bringer ist? Gibt es da noch andere Programme bei denen ich die für MT4 geschriebenen Ea´s testen kann?

Bearbeitet von dobbi

Geschrieben

Aller Anfang ist schwer :wub:

Scheint sich hier zum Dialog zwischen uns beiden zu entwickeln...na wie auch immer.

Du hast also noch verschiedene Probleme.

...wenn ich das über trailstop oder T/P laufen lasse dann öffnet er dannach direkt wieder eine Order...

D.h. also deine Einstiegsbedingung ist immer noch erfüllt, obwohl sich der Kurs entgegen deiner Handelsrichtung entwickelt. Das kannst du umgehen, indem du jedesmal wenn die Einstiegsbedingung in eine Richtung erfüllt ist, einen Zähler hochzählst und über diesen Zähler den Einstieg sperrst, bis die Bedingung mal nichtmehr erfüllt war und dann wieder erfüllt.

Problem hatten wir erst kürzlich hier im Forum. Ist nicht länger als 2-3 Wochen her...

...man sieht dabei doch ganz deutlich das er eben nicht drüber oder drunter geht.

Schwer zu sagen, was du hier machst. Wenn du mit verschiedenen Shifts arbeitest wird das Ganze recht komplex. Du solltest auch mal kontrollieren, ob du bei deinem EA überall die gleiche Zeitbasis verwendest. Soweit ich mich erinnern kann, hattest du da mal M15, dann wieder 0 für die aktuelle Zeitbasis. Das muss schon zusammenpassen!

habe z.Z. nämlich einfach mehere eingestellt mit verschiedenen shifts und Charts.. also die Zeitzonen.

hä? :blink:

Kann doch nicht sein das der EA ein 1 Signal bekommt wärend die sich die Farbe die man sieht nicht ändert

Das kann schon sein, wenn du wie wild mit Shifts um dich wirfst und verschiedene timeframes verwendest...

Oder kann es vllt sein das der Backtest von MT4 nich so der bringer ist? Gibt es da noch andere Programme bei denen ich die für MT4 geschriebenen Ea´s testen kann?

Zweimal nein!

 

Ich denke bevor du weitermachst, solltest du hier mal vorbeischaun...linked.gif

Geschrieben
  • Autor

ach naja.. wie heist es so schön: viele Köche verderben den Brei =)

Also mein gedankengang war das ich z.B im 15min chart handel. Pralell dazu aber auch werte vom 5er und 30er nehme. Sodas dann schon alle drei nen up-Trend haben müssen für nen Buy. und die Indikatoren mit kleineren werten habe ich auch shift 1 gesetzt damit er sich auch ganz sicher is. Den ADX Filter hab ich übrigens rausgenommen. Habe ihn einmal dabei beobachtet wie er eine Balkenfarbe des vorhergegangenen geändert hat. Das war dann der Moment an dem der Indi an glaubwürdigkeit verlor. Bringt ja nichts etwas abzufragen was sich hinterher noch ändern kann. Das mit dem Zähler wäre durchaus eine alternative. aber wenn es soo einfach wäre würd ich dem EA einfach sagen das er zu machen soll wenn die gegenteilige bedingung gegeben ist. Wenn ich das tue kann es sein das er dann wie schon öfters erwähnt, auf und zu macht bis der Spread mein Geld vernichtet hat. es gibt ja schon EA´s auf Supertrend Basis. Aber aus den Codes werd ich noch nicht schlau. Was mich jetzt zu der Seite führt. Da is viel zu viel Englisch xD Da verstehe ich vllt 50%^^ komisch ist auch. Irgendwie glub ich der EA macht nru handel auf die endweder super gut wären, oder super scheiße. ein dazwischen gibt es irgendwie nicht. Sonst wärs ja kein problem und ich würde nur Automatisch einsteigen lassen. Anscheinend brauch ich noch nen Indikator der zu vernünftigen Zeiten zu macht. und der nicht so empfindlich ist. Grade eben fahr ich ein paar versuche mit dem Moving Average. Da macht er auch wirklich nur zu wenn es vom chart her ersichtlich ist. Dummerweise verhindert er aber auch einige richtig gute Trades.

Geschrieben
  • Autor

sooo...

ich habe nun mein anfängliches System nochmal verwurfen und grund überarbeitet. jetzt gehts eig soweit.

problem ist allerdings das er sehr rechenintensiv zu sein scheint. Meine Backtests dauern immer wsentlich länger als mit anderen EA`s. Merke aber auch im 1 oder 5 min Chart das mein MT4 extrem ruckelt sobald ich Supertrend hinzuschalte. Ist dieser Indikator also der Übeltäter? Oder kann es von einer vermursten Programmierung kommen?

 

Und nochmal generell zur Programmierung. Wie bring ich dem EA bei z.B mit 2lot einzusteigen und nach T/P 1 Lot rauszunehmen? Der Andere Lot soll dann über Trailstop aussteigen. Bisher konnte ich mir mein wissen durch angucken von anderen EA´s halbwegs ableiten. Den rest hab ich von euch^^. Aber da hab ich nun garkein plan wo ich da ansetzen soll.

 

Ach und ich habe immernoch keine Möglichkeit gefunden die Order´s per Indikator zu schließen ohne das er ggf. direkt wieder eine aufmacht. Die verwendeten Indikatoren machen dummerweise auch zu wenn es kurz vor einem erfolgreichen Traid gestanden hätte...

 

Habe auch nach dem Thread gesucht in dem beschrieben wird wie man eine weitere Order nach S/L verhindert. habs aber irgendwie nich richtig verstanden da mir anscheinend das Basis Wissen fehlt. Aber ich möchte das auch beim Traislstop haben. Also das nach BUY trailstop erst wieder eine SELL order geöffnet werden muss bevor wieder BUY erlaubt ist. na oder nach einen definierten Zeitraum. Müsst ich sehen was besser ist. Tja.. dann bin ich eig soweit glücklich =)

Bearbeitet von dobbi

Geschrieben
  • Autor
doof... ich habe versucht http://book.mql4.com/trading/index von google übersetzen zu lassen. aber er sagt da is irgendwas was er nich übersetzen kann. gibt es nicht irgendwo so "nackte" EA`s die man sich runterladen kann udn man nur noch die bedingungen udn variabeln reinbaun muss? Mit der Seite komm ich nämlich nicht weiter. Weis zum einen garnicht wo ich nachgucken mus sum den Befehl für Teilausstieg bei T/P zu finden. Und selbst wenn ich es gefunden hab würd ich es vllt garnicht erkennen wegen dem Englisch^^
Geschrieben

Ich möchte mal auf einen Teil der Frage antworten:

Und nochmal generell zur Programmierung. Wie bring ich dem EA bei z.B mit 2lot einzusteigen und nach T/P 1 Lot rauszunehmen? Der Andere Lot soll dann über Trailstop aussteigen. Bisher konnte ich mir mein wissen durch angucken von anderen EA´s halbwegs ableiten. Den rest hab ich von euch^^. Aber da hab ich nun garkein plan wo ich da ansetzen soll.

Du steigst per OrderSend mit 2 Lots ein, darfst aber keinen T/P hinterlegen (oder du hinterlegst einen ganz weit entfernten), sondern du merkst dir den geplanten Ausstieg. In deinem EA prüfst du bei jedem Tick, ob dein zuvor gemerkter T/P erreicht ist. Wenn ja, dann sendest du ein OrderClose mit 1 Lot. Danach lässt du trailen (musst du dem EA selbst einprogrammieren).

Geschrieben
  • Autor
Ich möchte mal auf einen Teil der Frage antworten:

 

Du steigst per OrderSend mit 2 Lots ein, darfst aber keinen T/P hinterlegen (oder du hinterlegst einen ganz weit entfernten), sondern du merkst dir den geplanten Ausstieg. In deinem EA prüfst du bei jedem Tick, ob dein zuvor gemerkter T/P erreicht ist. Wenn ja, dann sendest du ein OrderClose mit 1 Lot. Danach lässt du trailen (musst du dem EA selbst einprogrammieren).

 

soweit sogut. Ich hab mir also den Order Send Befehl rausgepickt. kann ich den jetzt einfach durch OrderClose ersetzen?

Also In dem Beispiel hab ich einfach alles was mit Open zuun hat durch close ersetzet. Erscheint mir logisch.

 

 Ticket = OrderClose(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
        if(Ticket > 0) {
           if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
			Print("SELL order closed : ", OrderClosedPrice());
               if (SignalMail) SendMail("[signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Sell");
		} else {
			Print("Error closing SELL order : ", GetLastError());
		}
        }
        if (EachTickMode) TickCheck = True;
        if (!EachTickMode) BarCount = Bars;
        return(0);
     }

 

wahrscheinlich muss ich da noch folgendes entfehrnen: StopLossLevel, TakeProfitLevel, ... dann muss ich da bei Lots halt die Anzahl Lots eingeben die er rausnehmen soll. Hm... Jetzt müsst ich nur noch wissen wo ich reinschreib nach wieviel bips er teilschließen soll. Und vorallem wie ich es Formuliere.

Geschrieben
soweit sogut. Ich hab mir also den Order Send Befehl rausgepickt. kann ich den jetzt einfach durch OrderClose ersetzen?

Also In dem Beispiel hab ich einfach alles was mit Open zuun hat durch close ersetzet. Erscheint mir logisch.

Äh, einige Open müssten natürlich noch bleiben, damit du einen Einstieg hast. Außerdem ist die Syntax für den OrderClose falsch.

 

Da hilft die Hilfe sehr weiter: OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)

Zum Öffnen nimmst du nach wie vor OrderSend. Anstatt dort den T/P mitzugeben, speicherst du diesen in einer double-Variable. Mit einem if prüfst du dann, ob der Ausstieg erreicht ist.

 

Grob und ungetestet:

double dMyTakeProfit;

OrderSend (...); // wie bisher, aber T/P auf 0 setzen...
dMyTakeProfit = Ask + 20 * Point; // oder gewünschten T/P
...
// Ausstieg prüfen
if ((dMyTakeProfit != 0) && (Bid >= dMyTakeProfit))
{
Ticket = OrderSelect(...); // wie bisher
 if (Ticket > 0)
 {
  OrderClose(Ticket, OrderLots() / 2, Bid, 2, CLR_NONE); // halbe Ursprungslots
  dMyTakeProfit = 0; // damit er nicht nochmal aussteigt
 }
}

Geschrieben
wahrscheinlich muss ich da noch folgendes entfehrnen: StopLossLevel, TakeProfitLevel, ... dann muss ich da bei Lots halt die Anzahl Lots eingeben die er rausnehmen soll. Hm... Jetzt müsst ich nur noch wissen wo ich reinschreib nach wieviel bips er teilschließen soll. Und vorallem wie ich es Formuliere.

Ich nehme mal an, du verwendest als Editor MetaEditor.

Da gibt's das allseits beliebte Navigator-Fenster. Wenn es nicht eingeblendet ist, dann einfach Ansicht-Navigator wählen.

Hier kannst du im Fenster oben einen Suchbegriff eingeben. Du erhältst dann eine Auswahl von gefundenen Stichwörtern.

Beim Doppelklick auf eines von Solchigen wird im Fenster unten die Hilfe dazu angezeigt.

Bei deinem OrderClose-Befehl etwa, siehst du genau, welche Parameter du angeben musst und eine Erklärung, was diese bedeuten.

Ist zwar auf Englisch, aber fast selbsterklärend.

Zudem gibt's ganz unten immer ein Beispiel dazu...

MetaEditor.JPG

Geschrieben
  • Autor
Ist zwar auf Englisch, aber fast selbsterklärend.

Zudem gibt's ganz unten immer ein Beispiel dazu...

 

nun. das ganze bringt mir wenig wenn ich nicht weis in welchen zusammenhängen die ganzen Bausteine stehen. Dieses OrderSelect z.B. reicht es da einmal für Order Send und Close hin?

 

Als bsp zu orderClose steht da ja:

 

if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)

{

OrderClose(order_id,1,Ask,3,Red);

return(0);

}

 

 

dieses return(0) muss ich das hinter jedem befehl packen oder reicht es am ende des EA´s? diese Klammern: {} manchmal finde ich zwei davon.. manchmal nur eine. habe bis jetzt noch nicht gefunden wann wieviele gesetzt werden müssen. Wenn ich bei google nach MQL Grundlagen suche dann kommen einfach keine Grundlagen. Ganz oben find ich z.B diesen Thread. ja tolle Grundlagen^^

Geschrieben
Wenn ich bei google nach MQL Grundlagen suche dann kommen einfach keine Grundlagen. Ganz oben find ich z.B diesen Thread. ja tolle Grundlagen^^

 

1. Wie wärs mit der TomNext internen Suche? Order einfach die Forenstruktur mit offen Augen mal durchgehen?

2. MQL baut auf C auf, die Syntax ist defakto gleich. Für C gibts tausende Tutorials und Grundlagen.

3. zb Das Topic Hier ist sogar gepinnt... Eigeninitiative als Anfänger zeugt auch ein bissl von Respekt...

Geschrieben
  • Autor

Ja hey... ich war da vorhin etwas angepisst weil irgendwie grade nichts gefunzt hatte^^

 

Aber mal ne frage ganze generell zur auswertung von Indikatoren.

Wenn ich etwas öffnen will, bei einem Bestimmten Indikator Wert. Und ich dann hinterher sehe das er es eig hätte garnicht öffnen sollen. Woran kann das liegen?

Mein erster Gedanke war das es am PRICE_CLOSE liegt. Der ändert sich ja bei kerzenentstehung noch. Aber ich habe das glecihe Prob wenn ich den Parameter aufs PRICE_OPEN lege! Dieser kann sich doch nciht mehr ändern wenn er einmal auf gemacht wurde. Also wieso ändert sich ein Indikator wert der den PRICE_OPEn als input wählt, sich noch wärend die Kerze schon läuft? Diese öffnungsfehler kommen auch bei Shift1 . würde ja bedeuten das sich sogar ein bereits vergangener Wert nochmal ändert Oo.

 

edit:

doof.. wie bekomm ich das Bild wieder weg?

hm.. naja .. der Chart zeigt zumindest das orders geöffnet wärend der CCI irgendwo zwischen -100 und 100 rumdümpelt. Shift war 1 auf. Anwendung auf Öffnungskurs.

Ich weis jetzt tatsächlich nicht mehr so genau wann was geöffnet werden sollte. Jedenfals aber endweder über Hundert oder Unter -100. (war jetzt auch nur zu show zwecken. er die nicht öffnen dürfen da der Indikator eindeutig was anderes sagt.

post-2436-1276395369_thumb.png

Bearbeitet von dobbi

Geschrieben
Wenn ich etwas öffnen will, bei einem Bestimmten Indikator Wert. Und ich dann hinterher sehe das er es eig hätte garnicht öffnen sollen. Woran kann das liegen?

Da gibt's X Möglichkeiten, was du falsch machen kannst. Falsch programmierter Einstiegsbedingungs-Check, Indikator im falschen Timeframe, falsche Indikatorparameter. ..

Aber mal im Ernst! :blink:

So geht's nicht! Du kannst nicht erwarten, dass du einen funktionierenden EA hinbekommst, ohne jedliche Programmierkenntnisse. Das hat nichts mit Dummheit zu tun, sondern liegt einfach daran, dass für bestimmte Tätigkeiten bestimmte Vorbedingungen erfüllte sein müssen.

Ich kann auch keine Vertragsverhandlungen mit einem Italiener führen, ganz einfach deshalb, weil ich kein Italienisch kann. Da hilft's auch nichts, dass ich hin und wieder ein italienisches Lied im Radio hör...

Entweder ich lern halt die Grundlagen der Sprache, oder ich lass es sein.

MQL funktioniert genau so wie C. Les dir halt wenigstens mal ein C-Grundlagentutorial durch! Die gibt's wie Sand am Meer im Internet, auch auf Deutsch. :wub:

Geschrieben
  • Autor

Hmm...

Ja aber nochma wegen dem Indikator. Ich habe die ersten Schritte ja mit dieser Baukasten Seite gemacht. Wo ihr alle genörgelt habt wie furchtbar der Code zu lesen is^^ Ich Habe einmal ganz einfach nur mal zum testen eingestellt das er kaufen soll wenn sich die - und + Linien des ADX Kreutzen. Ganz einfach mit Diminus==Diplus.

Da hat er garnichts gemacht. Also ist jetzt die seite einfach nur scheiße oder sind sie einfach nur NIEMALS gleich? Und ist es wirklich ein Programmier Fehler oder ändern sich die Indikatoren selbst bei Price_Open noch in der aktuellen kerze? weil wenns ie das tun.. ist es dann nicht quasi unmöglich ein auf Indikatoren gestützten EA zu Baun? weil sie ja wenig zuverlässig sind... you know what i mean?^^

Geschrieben
Diminus==Diplus.

Ein letztes mal von meiner Seite. :wub:

C-Tutorial => Vergleichsoperatoren...

Von denen gibt's richtig viele, nicht nur "gleich"...

Geschrieben
Also ist jetzt die seite einfach nur scheiße oder sind sie einfach nur NIEMALS gleich?

Hast du dir mal angschaut wann in der History sie an einem Bar gleich sind? Hinweis: Im Datenfenster in MT siehst du die exakten Werte des Indikators. Schau mal wann die beiden Werte genau gleich sind.

 

btw. Der Vergleich von 2 double Werten ist nicht immer Zielführend da es leicht zu Rundungsfehlern kommen kann.

  • 3 Wochen später...
Geschrieben

doof... ich habe versucht Programming of Trade Operations - MQL4 Tutorial von google übersetzen zu lassen. aber er sagt da is irgendwas was er nich übersetzen kann. gibt es nicht irgendwo so "nackte" EA`s die man sich runterladen kann udn man nur noch die bedingungen udn variabeln reinbaun muss? Mit der Seite komm ich nämlich nicht weiter. Weis zum einen garnicht wo ich nachgucken mus sum den Befehl für Teilausstieg bei T/P zu finden. Und selbst wenn ich es gefunden hab würd ich es vllt garnicht erkennen wegen dem Englisch^^

 

Schau mal hier !! Mußt nur noch an mql4 anpassen.

Documentation on MQL5

 

Gruss Hansi

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.