Jump to content
Tom Next - Daytrading Community

MQL Codefrage: EA soll auf 2 Indikatoren zugreifen


dobbi

Recommended Posts

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 =)

Edited by Henrik
Threadüberschrift präzisiert
Link to comment
Share on other sites

Hi dobbi,

erst einmal ein herzliches Willkommen hier im Forum. :ph34r:

 

Dir wird sicher geholfen, aber auf jeden Fall hilft dir eher einer, wenn die Groß- und Kleinschreibung beachtet und aussagekräftige Threadüberschriften gewählt wird...würde mich freuen wenn du in Zukunft das beherzigen würdest :gossip:

Link to comment
Share on other sites

willkommen im Forum,

 

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

 

gute Frage. einem totalen Anfänger würde ich raten sich zuerst in die MQL Grundlagen einzuarbeiten (sofern er es selber programmieren will), denn da sind schon ein paar Komponenten beisammen die für Anfänger vermutlich nicht so einfach sind.

 

Danach das Standardvorgehen, wenn man neue Indis verwenden will die man nur optisch kennt: In den Chart ziehen und mal analysieren welche Werte welches Indikatorbild erzeugen. Denn im EA kriegt man nur die Werte der Indikatorlinien, dem EA ist reichlich egal welche Farbe das Ding hat.

 

Wenns darum geht einen Fehler im vorhandenen EA zu finden, wärs sinnvoll den Code reinzustellen und den Fehler zu beschreiben.

 

hth

 

btw. bei so langem Code bitte als File einbinden oder die mql-tags verwenden, sonst wird der Thread so länglich...

Link to comment
Share on other sites

Hi dobbi,

 

Herzlich Willkommen hier bei Tom-Next.

 

Ohne deine Indikatoren jetzt im Detail anzuschauen soviel schon mal im Voraus.

 

Grundsätzlich werden Indikatoren über sog. Indicator Buffers gezeichnet, d.h. du definierts ein (oder mehrere) Arrays, die MetaTrader selbständig verwaltet.

Diese können dann als Indikatorlinie/Histogram... dargestellt werden.

 

Hat ein Indikator verschiedene Farben, so wird das immer über unterschiedliche Buffers gehandelt, d.h. ein Buffer wird z.B. rot, der andere grün usw. definiert.

Ist nun die Bedingung für grün erfüllt, so werden alle andere Farben auf EMPTY_VALUE gesetzt und somit nur grün gezeichnet.

 

Für EAs gibt's dann die Funktion iCustom. Mit der kannst du die verschiedenen Buffer des Indikators abgreifen, also wenn dich z.B. nur die grüne Linie interessiert,

dann für den iCustom-Mode den Index für grün angeben.

 

Ich kann dir gerne mit dem Thema helfen, denke aber Mythos hat recht, wenn er sagt, ohne die MQL4-Grundlagen zu verstehen dürfte es recht schwer für dich werden

einen EA nach deinen Wünschen anzupassen.

 

Welche Programmierkenntnisse hast du denn? Kennst du dich grundsätzlich mit C aus? Wenn ja, dann sollte auch das Erlernen von MQL4 kein größeres Problem sein.

 

Gruss,

Wogo

Link to comment
Share on other sites

also was meine gro und kleinschreibung betrifft:

ich habe da dieses problem mit der rechtschreibung.... tatsächlich auch was gro und kleinschreibung betrift. also schreib ich alles klein, dann sieht es aus wie gewollt =)

 

mein wissenstand zum thema programmierung geht eig gegen null... naja mittlerweile wohl schon gegen 0,5.^^ ich habe mir meinen ersten EA über sone baulasten seite erstellt und lerne nun durch ansehen und verstehen. zumindest ist das der plan. bin jetzt schon soweit das ich den supertrend indikator ansprechen kann. aber bei dem anderen gelingt mir das einfach nicht. egal welche bufferstelle ich da anspreche. es ist total egal welche farbe dieser hat. fährt man aber mit der maus über die balken steht überall ein wert von 1.000 denke mal hier liegt das problem. si ehaben alle den gleichen wert. kann das hinkommen? wenn ja dann muss es doch eine funktion geben die dem EA sagt: kaufe wenn buffer 1 aktiv. da habe ich einfach mal versucht: if buy1_2 = true ... naja.. das interessiert den auch nich so.

aber ich pack mal den code vom aktuellen stand mit rein:

 

//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder                  |
//|                [url="http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"]http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/[/url] |
//|                                                                  |
//|  In no event will author be liable for any damages whatsoever.   |
//|                      Use at your own risk.                       |
//|                                                                  |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0
#define SIGNAL_BUY   1
#define SIGNAL_SELL  2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder"
#property link      "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = true;
extern int StopLoss = 60;
extern bool UseTakeProfit = false;
extern int TakeProfit = 60;
extern bool UseTrailingStop = True;
extern int TrailingStop = 30;

int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() {
  BarCount = Bars;

  if (EachTickMode) Current = 0; else Current = 1;

  return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() {
  return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
  int Order = SIGNAL_NONE;
  int Total, Ticket;
  double StopLossLevel, TakeProfitLevel;



  if (EachTickMode && Bars != BarCount) TickCheck = false;
  Total = OrdersTotal();
  Order = SIGNAL_NONE;

  //+------------------------------------------------------------------+
  //| Variable Begin                                                   |
  //+------------------------------------------------------------------+



double Buy1_2 = iClose (NULL, PERIOD_M15, +0);
double Buy2_1 = iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MAIN, PERIOD_M15 + 0);
double Buy2_2 = 20;

double Buy2_3 = iCustom  (NULL, PRICE_CLOSE, "supertrend", 2,1.3,0, + 0);
double Buy2_6 = iCustom  (NULL, PRICE_CLOSE, "mj_ADXFilter_vBob", 14,15,1, + 0);



 


  
  //+------------------------------------------------------------------+
  //| Variable End                                                     |
  //+------------------------------------------------------------------+

  //Check position
  bool IsTrade = False;

  for (int i = 0; i < Total; i ++) {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if(OrderType() <= OP_SELL &&  OrderSymbol() == Symbol()) {
        IsTrade = True;
        if(OrderType() == OP_BUY) {
           //Close

           //+------------------------------------------------------------------+
           //| Signal Begin(Exit Buy)                                           |
           //+------------------------------------------------------------------+

         
           

           //+------------------------------------------------------------------+
           //| Signal End(Exit Buy)                                             |
           //+------------------------------------------------------------------+

           if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
              OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
              if (SignalMail) SendMail("[signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
              if (!EachTickMode) BarCount = Bars;
              IsTrade = False;
              continue;
           }
           //Trailing stop
           if(UseTrailingStop && TrailingStop > 0) {                 
              if(Bid - OrderOpenPrice() > Point * TrailingStop) {
                 if(OrderStopLoss() < Bid - Point * TrailingStop) {
                    OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
                    if (!EachTickMode) BarCount = Bars;
                    continue;
                 }
              }
           }
        } else {
           //Close

           //+------------------------------------------------------------------+
           //| Signal Begin(Exit Sell)                                          |
           //+------------------------------------------------------------------+
                    

           //+------------------------------------------------------------------+
           //| Signal End(Exit Sell)                                            |
           //+------------------------------------------------------------------+

           if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
              OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
              if (SignalMail) SendMail("[signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
              if (!EachTickMode) BarCount = Bars;
              IsTrade = False;
              continue;
           }
           //Trailing stop
           if(UseTrailingStop && TrailingStop > 0) {                 
              if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
                 if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
                    OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
                    if (!EachTickMode) BarCount = Bars;
                    continue;
                 }
              }
           }
        }
     }
  }

  //+------------------------------------------------------------------+
  //| Signal Begin(Entry)                                              |
  //+------------------------------------------------------------------+

       if (Buy2_3 < Buy1_2 &&  Buy2_2 < Buy2_1)  Order = SIGNAL_BUY;

   
  //+------------------------------------------------------------------+
  //| Signal End                                                       |
  //+------------------------------------------------------------------+

  //Buy
  if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
     if(!IsTrade) {
        //Check free margin
        if (AccountFreeMargin() < (1000 * Lots)) {
           Print("We have no money. Free Margin = ", AccountFreeMargin());
           return(0);
        }

        if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
        if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

        Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
        if(Ticket > 0) {
           if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
			Print("BUY order opened : ", OrderOpenPrice());
               if (SignalMail) SendMail("[signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
		} else {
			Print("Error opening BUY order : ", GetLastError());
		}
        }
        if (EachTickMode) TickCheck = True;
        if (!EachTickMode) BarCount = Bars;
        return(0);
     }
  }

  //Sell
  if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
     if(!IsTrade) {
        //Check free margin
        if (AccountFreeMargin() < (1000 * Lots)) {
           Print("We have no money. Free Margin = ", AccountFreeMargin());
           return(0);
        }

        if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
        if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

        Ticket = OrderSend(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 opened : ", OrderOpenPrice());
               if (SignalMail) SendMail("[signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
		} else {
			Print("Error opening SELL order : ", GetLastError());
		}
        }
        if (EachTickMode) TickCheck = True;
        if (!EachTickMode) BarCount = Bars;
        return(0);
     }
  }

  if (!EachTickMode) BarCount = Bars;

  return(0);
}
//+------------------------------------------------------------------+

 

so jetzt hab ich auch die codebox gefunden =)

 

ich habe da auch mal mit dem austieg rumexperimentiert. nur scheint der zahlenwert des supertrend indikator schneller zu sein als die farbe. denn wenn ich die später für sell vorgesehene option als ausstieg zuweise dann macht er teilweise alle naselang zu und gleich wieder auf. das ist kacke...

Link to comment
Share on other sites

also was meine gro und kleinschreibung betrifft:

ich habe da dieses problem mit der rechtschreibung.... tatsächlich auch was gro und kleinschreibung betrift. also schreib ich alles klein, dann sieht es aus wie gewollt =)

 

BITTE versuche es trotzdem.

Es ist hier ausdrücklich nicht erwünscht, durchgängig klein zu schreiben.

Fehler werden ohne weiteres toleriert, keine Sorge.

Link to comment
Share on other sites

...aber ich pack mal den code vom aktuellen stand mit rein:

 

Uargh, :ph34r:

 

ich hab da mal kurz drüber geschaut.

Sorry, aber das ist echt grausam.

Da gibt's keinen einzigen richtigen Kommentar, alle if-else Strukturen sind in einer Ebene, ...

Echt übel zu lesen :Howdy:

 

Nochmal einen Schritt zurück.

Funktionieren deine beiden Indikatoren wie gewünscht, wenn du sie einzeln im Terminal anzeigst?

 

Ich muss mir erst mal deine Indikatoren anschaun.

Kann ein bischen dauern, frühestens heute Abend.

 

Ich nehme mal an, du versuchst dich hier erst mal an Metatrader und das automatisierte Handeln heranzutasten.

Von einem EA, den man ansatzweise live schalten kann ist das aber noch ein ganz ganz großes Stück enfernt.

 

Aber, wo ein Wille ist, da ist auch ein Weg.

Einfach nicht unterkriegen lassen. :gossip:

Link to comment
Share on other sites

@ WOGO: Das ist von einem Skript generierter Code, siehe

 

#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/

 

Ich stimme dir aber zu, das ist grausam. :ph34r:

 

 

was bringen denn diese Builder wenn da nur Mist bei rauskommt???

das ist echt deprimierend xD

 

 

ich habe die indikatoren noch nicht längere zeit bei aktuellen kursen beobachtet (hab ja nich ewig zeit stundenlang auf den Chart zu schauen^^)

aber in visuellen backtests haben sie ganz gut funktioniert. finds nur merkwürdig das an Stellen wo ich manuell einsteigen würde (weil er grün oder rot wird) steigt der EA nicht ein. also muss ja echt irgendwas am Code falsch sein. nur wie soll ich es lernen wenn die einzigst vernünftige hilfe Seite auf English is -.- deshalb hatte ich gehofft diese Builder helfen mir da etwas.... aber wenn ich jetzt lese das die nur Scheiße fabrizieren weis ich auch nich .. hm...

Link to comment
Share on other sites

...aber wenn ich jetzt lese das die nur Scheiße fabrizieren weis ich auch nich .. hm...

Kopf nicht hängen lassen! :ph34r:

In erster Linie ist es mal das Format, das abschreckt. Mit einem vernünftigen Editor formatiert sieht vieles bestimmt schon ganz anders aus.

Trotzdem solltest du so einem Builder nicht vertrauen. Wichtig bei einem EA ist nicht nur, dass er zur richtigen Zeit kauft/verkauft, sondern dass

auch das Drum-Herum passt, also Fehlerhandling, Money Management, TrailingStop-Strategie uvm.

 

Zum ersten ausprobieren und um sich in die Materie einzuarbeiten kann man so ein Tool sicher schon mal verwenden

Link to comment
Share on other sites

So ich habe mal etwas weiter rumprobiert.

Gibt es denn echt keine möglichkeit ein kauf Signal zu bekommen just in dem mm wo der Indikator die farbe switcht? Der indikator muss doch intern auch sowas haben was ihm sagt wann er welche farbe anzeigen soll. Also habe ich in meiner unwissenheit mal Befehle getstest wie: wenn buffernummer 1 =true, wenn buffer nummer 1 = 1, buffer number 1 = uptrend (steht ja da im Indikator auch als name so .. )

 

wie ihr euch denken könnt hat das alles nichts gebracht. wobei es mir doch eig nur logisch erscheint... *grübel*

denn wenn man jetzt nur von dem Wert des Buffers ausgeht macht er z.b wenn ich ihm sage kaufe da, schließe wenns andersrum is. dann macht er solange auf und zu bis die kohle alle is. was mir jetzt auch nich so ganz verständlich ist. die Farbe des indikators wechselt ja auch nicht wie wild hin und her.

 

oh und noch eine sache die ich mich frag. wie kann so ein indikator bei kerzenentstehung schon die Farbe wechseln? wenn er doch auf PRICE_CLOSE angewendet wird. der schlusskurs kann doch unmöglich vor schluss feststehen?! Wenn ich dem EA nun sage er sol dann kaufen wenn Buffer 0 < Price_Close. Dann kauft er zu mir vollkommen unverständlichen Momenten. Nämlich Dann wenn die Weichen zum Up Trend schon lange gestellt sind. Sieht man ganz deutlich wenn man mit der Maus an die Stelle fährt wo er kaufen sollte und den Indikator Wert mit Kerzenschlusskurs vergleicht. Bin ich einfach nur zu Blöde um da den Sinnigen Zusammenhang zu sehen? oder verlange ich unmögliches?^^

Edited by dobbi
Link to comment
Share on other sites

Gibt es denn echt keine möglichkeit ein kauf Signal zu bekommen just in dem mm wo der Indikator die farbe switcht?

Gibt's bestimmt... :ph34r: Keine Angst! Hab ja gesagt ich schau's mir mal an.

wie kann so ein indikator bei kerzenentstehung schon die Farbe wechseln?

close[0] gibt dir den Schlusskurs des aktuellen Balkens, auch wenn dessen Zeit noch nicht abgelaufen ist...

Lösung wäre einen shift von 1 zu verwenden, aber wie gesagt... Geduld! :gossip:

Link to comment
Share on other sites

hab mir mal deinen ADXFilter Indi angeschaut:


extern int DeinePeriode=14;
extern int DeinAdx=20;
...
int start()
{
  int IndiUp=0;
  int IndiDn=0;
  IndiUp=iCustom(NULL, 0, "ADXFilter",DeinePeriode,DeinAdx,0,0);
  IndiDn=iCustom(NULL, 0, "ADXFilter",DeinePeriode,DeinAdx,1,0);

  if (IndiUp==1)
  {
     hier ist dein uptrend  
  }
  if (IndiDn==1)
  {
     hier ist dein downtrend
  }
...
}

Du willst ja nur die beiden "Extremen" haben. Die sind im Buffer 0 sowie 1 enthalten.

Wenn du aber Fehlsignale ausfiltern willst wäre eine shift von 1 besser.

Link to comment
Share on other sites

//+------------------------------------------------------------------+
//|                                                    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);    
}

Link to comment
Share on other sites

Ignoriert einfach den vorherigen Beitrag von mir,

bin grad am BBCode testen.

 

 

[mql4] --- normale codebox [/mql4]

 

 

oder

 

 

MQLC
 [color= #339933;]---[/color] mit syntax highlighting [color= #339933;]---[/color]

 

 

 

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #666666; font-style: italic;]//| ADXFilter.mq4 |[/color]

[color= #666666; font-style: italic;]//| Copyright © 2006, Forex-TSD.com |[/color]

[color= #666666; font-style: italic;]//| Written by mj_bolt| [/color]

[color= #666666; font-style: italic;]//| | [/color]

 
 [color= #339933;]---[/color] mit syntax highlighting [color= #339933;]---[/color]

 

 

 

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #666666; font-style: italic;]//| ADXFilter.mq4 |[/color]

[color= #666666; font-style: italic;]//| Copyright © 2006, Forex-TSD.com |[/color]

[color= #666666; font-style: italic;]//| Written by mj_bolt| [/color]

[color= #666666; font-style: italic;]//| | [/color]

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #339933;]#property copyright "Copyright © 2007, Forex-TSD.com "[/color]

[color= #339933;]#property link "http://www.forex-tsd.com/"[/color]

 

[color= #339933;]#property indicator_separate_window[/color]

[color= #339933;]#property indicator_minimum 0[/color]

[color= #339933;]#property indicator_maximum 0.5[/color]

[color= #339933;]#property indicator_buffers 4[/color]

[color= #339933;]#property indicator_color1 C' 23,139, 23'[/color]

[color= #339933;]#property indicator_color2 C'255, 32, 32'[/color]

[color= #339933;]#property indicator_color3 C' 90,185, 90'[/color]

[color= #339933;]#property indicator_color4 C'255,185,185'[/color]

 

 

 

[color= #666666; font-style: italic;]//---- input parameters[/color]

[color= #000000; font-weight: bold;]extern[/color] [color= #993333;]int[/color] PeriodADX[color= #339933;]=[/color][color= #0000dd;]14[/color][color= #339933;];[/color]

[color= #000000; font-weight: bold;]extern[/color] [color= #993333;]int[/color] ColorLevel[color= #339933;]=[/color][color= #0000dd;]15[/color][color= #339933;];[/color]

 

 

[color= #666666; font-style: italic;]//---- indicator buffers[/color]

[color= #993333;]double[/color] UpBuffer1[color= #009900;][[/color][color= #009900;]][/color][color= #339933;];[/color]

[color= #993333;]double[/color] DnBuffer1[color= #009900;][[/color][color= #009900;]][/color][color= #339933;];[/color]

[color= #993333;]double[/color] UpBuffer2[color= #009900;][[/color][color= #009900;]][/color][color= #339933;];[/color]

[color= #993333;]double[/color] DnBuffer2[color= #009900;][[/color][color= #009900;]][/color][color= #339933;];[/color]

 

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #666666; font-style: italic;]//| Custom indicator initialization function |[/color]

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #993333;]int[/color] init[color= #009900;]([/color][color= #009900;])[/color]

[color= #009900;]{[/color]

[color= #993333;]string[/color] short_name[color= #339933;];[/color]

 

[color= #666666; font-style: italic;]//---- indicator line[/color]

SetIndexStyle[color= #009900;]([/color][color= #0000dd;]0[/color][color= #339933;],[/color]DRAW_HISTOGRAM[color= #339933;],[/color]STYLE_SOLID[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color]

SetIndexStyle[color= #009900;]([/color][color= #0000dd;]1[/color][color= #339933;],[/color]DRAW_HISTOGRAM[color= #339933;],[/color]STYLE_SOLID[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color]

SetIndexStyle[color= #009900;]([/color][color= #0000dd;]2[/color][color= #339933;],[/color]DRAW_HISTOGRAM[color= #339933;],[/color]STYLE_SOLID[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color]

SetIndexStyle[color= #009900;]([/color][color= #0000dd;]3[/color][color= #339933;],[/color]DRAW_HISTOGRAM[color= #339933;],[/color]STYLE_SOLID[color= #339933;],[/color][color= #0000dd;]1[/color][color= #009900;])[/color][color= #339933;];[/color]

 

SetIndexBuffer[color= #009900;]([/color][color= #0000dd;]0[/color][color= #339933;],[/color]UpBuffer1[color= #009900;])[/color][color= #339933;];[/color]

SetIndexBuffer[color= #009900;]([/color][color= #0000dd;]1[/color][color= #339933;],[/color]DnBuffer1[color= #009900;])[/color][color= #339933;];[/color]

SetIndexBuffer[color= #009900;]([/color][color= #0000dd;]2[/color][color= #339933;],[/color]UpBuffer2[color= #009900;])[/color][color= #339933;];[/color]

SetIndexBuffer[color= #009900;]([/color][color= #0000dd;]3[/color][color= #339933;],[/color]DnBuffer2[color= #009900;])[/color][color= #339933;];[/color]

 

IndicatorDigits[color= #009900;]([/color]MarketInfo[color= #009900;]([/color]Symbol[color= #009900;]([/color][color= #009900;])[/color][color= #339933;],[/color]MODE_DIGITS[color= #009900;])[/color][color= #009900;])[/color][color= #339933;];[/color]

 

[color= #666666; font-style: italic;]//---- name for DataWindow and indicator subwindow label[/color]

short_name[color= #339933;]=[/color][color= #ff0000;]"ADX ("[/color][color= #339933;]+[/color]PeriodADX[color= #339933;]+[/color][color= #ff0000;]")"[/color][color= #339933;];[/color]

IndicatorShortName[color= #009900;]([/color]short_name[color= #009900;])[/color][color= #339933;];[/color]

SetIndexLabel[color= #009900;]([/color][color= #0000dd;]0[/color][color= #339933;],[/color][color= #ff0000;]"UpTrend"[/color][color= #009900;])[/color][color= #339933;];[/color]

SetIndexLabel[color= #009900;]([/color][color= #0000dd;]1[/color][color= #339933;],[/color][color= #ff0000;]"DownTrend"[/color][color= #009900;])[/color][color= #339933;];[/color]

SetIndexLabel[color= #009900;]([/color][color= #0000dd;]2[/color][color= #339933;],[/color][color= #ff0000;]"Mild UpTrend"[/color][color= #009900;])[/color][color= #339933;];[/color]

SetIndexLabel[color= #009900;]([/color][color= #0000dd;]3[/color][color= #339933;],[/color][color= #ff0000;]"Mild DownTrend"[/color][color= #009900;])[/color][color= #339933;];[/color]

 

[color= #666666; font-style: italic;]//----[/color]

SetIndexDrawBegin[color= #009900;]([/color][color= #0000dd;]0[/color][color= #339933;],[/color]PeriodADX[color= #009900;])[/color][color= #339933;];[/color]

SetIndexDrawBegin[color= #009900;]([/color][color= #0000dd;]1[/color][color= #339933;],[/color]PeriodADX[color= #009900;])[/color][color= #339933;];[/color]

SetIndexDrawBegin[color= #009900;]([/color][color= #0000dd;]2[/color][color= #339933;],[/color]PeriodADX[color= #009900;])[/color][color= #339933;];[/color]

SetIndexDrawBegin[color= #009900;]([/color][color= #0000dd;]3[/color][color= #339933;],[/color]PeriodADX[color= #009900;])[/color][color= #339933;];[/color]

 

[color= #666666; font-style: italic;]//----[/color]

[color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color]

[color= #009900;]}[/color]

 

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #666666; font-style: italic;]//| ADXFilter |[/color]

[color= #666666; font-style: italic;]//+------------------------------------------------------------------+[/color]

[color= #993333;]int[/color] start[color= #009900;]([/color][color= #009900;])[/color]

[color= #009900;]{[/color]

[color= #993333;]int[/color] shift[color= #339933;],[/color]trend[color= #339933;];[/color]

[color= #993333;]double[/color] ADX0[color= #339933;],[/color]ADX1[color= #339933;],[/color]ADX2[color= #339933;];[/color]

 

 

[color= #b1b100;]for[/color][color= #009900;]([/color]shift[color= #339933;]=[/color]Bars[color= #339933;]-[/color]PeriodADX[color= #339933;]-[/color][color= #0000dd;]1[/color][color= #339933;];[/color]shift[color= #339933;]>=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]shift[color= #339933;]--[/color][color= #009900;])[/color]

[color= #009900;]{[/color]

ADX0[color= #339933;]=[/color]iADX[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]PeriodADX[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_MAIN[color= #339933;],[/color]shift[color= #009900;])[/color][color= #339933;];[/color]

ADX1[color= #339933;]=[/color]iADX[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]PeriodADX[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_PLUSDI[color= #339933;],[/color]shift[color= #009900;])[/color][color= #339933;];[/color]

ADX2[color= #339933;]=[/color]iADX[color= #009900;]([/color]NULL[color= #339933;],[/color][color= #0000dd;]0[/color][color= #339933;],[/color]PeriodADX[color= #339933;],[/color]PRICE_CLOSE[color= #339933;],[/color]MODE_MINUSDI[color= #339933;],[/color]shift[color= #009900;])[/color][color= #339933;];[/color]

 

[color= #b1b100;]if[/color] [color= #009900;]([/color]ADX0[color= #339933;][/color]ADX2[color= #009900;])[/color] trend[color= #339933;]=[/color][color= #0000dd;]1[/color][color= #339933;];[/color]

[color= #b1b100;]if[/color] [color= #009900;]([/color]ADX0[color= #339933;]>[/color]ColorLevel [color= #339933;]&&[/color] ADX1[color= #339933;]>[/color]ADX2[color= #009900;])[/color] trend[color= #339933;]=[/color][color= #0000dd;]2[/color][color= #339933;];[/color]

[color= #b1b100;]if[/color] [color= #009900;]([/color]ADX0[color= #339933;][/color]ADX1[color= #009900;])[/color] trend[color= #339933;]=-[/color][color= #0000dd;]1[/color][color= #339933;];[/color]

[color= #b1b100;]if[/color] [color= #009900;]([/color]ADX0[color= #339933;]>[/color]ColorLevel [color= #339933;]&&[/color] ADX2[color= #339933;]>[/color]ADX1[color= #009900;])[/color] trend[color= #339933;]=-[/color][color= #0000dd;]2[/color][color= #339933;];[/color]

 

[color= #b1b100;]if[/color] [color= #009900;]([/color]trend[color= #339933;]==[/color][color= #0000dd;]1[/color][color= #009900;])[/color]

[color= #009900;]{[/color]

 

UpBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

UpBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]1[/color][color= #339933;];[/color]

DnBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

DnBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

 

[color= #009900;]}[/color]

[color= #b1b100;]if[/color] [color= #009900;]([/color]trend[color= #339933;]==[/color][color= #0000dd;]2[/color][color= #009900;])[/color]

[color= #009900;]{[/color]

 

UpBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]1[/color][color= #339933;];[/color]

UpBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

DnBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

DnBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

 

[color= #009900;]}[/color]

[color= #b1b100;]if[/color] [color= #009900;]([/color]trend[color= #339933;]==-[/color][color= #0000dd;]1[/color][color= #009900;])[/color]

[color= #009900;]{[/color]

 

UpBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

UpBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

DnBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

DnBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]1[/color][color= #339933;];[/color]

[color= #009900;]}[/color]

 

[color= #b1b100;]if[/color] [color= #009900;]([/color]trend[color= #339933;]==-[/color][color= #0000dd;]2[/color][color= #009900;])[/color]

[color= #009900;]{[/color]

 

UpBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

UpBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

DnBuffer1[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]1[/color][color= #339933;];[/color]

DnBuffer2[color= #009900;][[/color]shift[color= #009900;]][/color][color= #339933;]=[/color][color= #0000dd;]0[/color][color= #339933;];[/color]

 

[color= #009900;]}[/color]

[color= #009900;]}[/color]

[color= #b1b100;]return[/color][color= #009900;]([/color][color= #0000dd;]0[/color][color= #009900;])[/color][color= #339933;];[/color]

[color= #009900;]}[/color]

 

 

http://www.tom-next.com/community/Syntax-H...QL4-t38231.html

Link to comment
Share on other sites

hab mir mal deinen ADXFilter Indi angeschaut:

... und ich bin beim ersten Blick über den EA auf folgendes gestossen:

	double Buy2_3 = iCustom (NULL, PRICE_CLOSE, "supertrend", 2,1.3,0, + 0);												
double Buy2_6 = iCustom (NULL, PRICE_CLOSE, "mj_ADXFilter_vBob", 14,15,1, + 0);

Als 2. Parameter musst du den Time-Frame übergeben.

Zufälligerweise funktioniert das hier, da PRICE_CLOSE mit 0 definiert ist und 0 den aktuellen Time Frame des Charts

angibt. Ist aber zumindest extrem unsauber :ph34r:

Link to comment
Share on other sites

Du willst ja nur die beiden "Extremen" haben. Die sind im Buffer 0 sowie 1 enthalten.

Wenn du aber Fehlsignale ausfiltern willst wäre eine shift von 1 besser.

 

Danke für die Info. aber ich habe mal sowas von kein plan wie ich den ansteuern soll. mit > oder < oder == ist da nichts zu machen. wie schon erwähnt scheinen sie alle den wert 1.0000 zu haben. Den sieht man zumindest wenn man mit der Maus über die Balken fährt. lediglich in der Farbe und Bezeichnung unterscheiden sie sich.

Link to comment
Share on other sites

... und ich bin beim ersten Blick über den EA auf folgendes gestossen:

	double Buy2_3 = iCustom (NULL, PRICE_CLOSE, "supertrend", 2,1.3,0, + 0);												
double Buy2_6 = iCustom (NULL, PRICE_CLOSE, "mj_ADXFilter_vBob", 14,15,1, + 0);

Als 2. Parameter musst du den Time-Frame übergeben.

Zufälligerweise funktioniert das hier, da PRICE_CLOSE mit 0 definiert ist und 0 den aktuellen Time Frame des Charts

angibt. Ist aber zumindest extrem unsauber :ph34r:

 

Habe ich versucht. Wenn ich das da stehen habe macht er garkeinen Trade mehr. Weis der Geier warum.

 

...

 

Um nun mal die trade Öffnung etwas einzugrenzen habe ich Ihm gesgat er solle nur Traden wenn der letzte und jetzige Schlusskurs identisch sind. Auch da hat er mich wohl nicht verstanden und stellt das Traden komplett ein. Bekomme langsam lust irgendwas kaputt zu schlagen... :gossip:

 

Da dachte ich mir erst das wohl nur alle paar kerzen dieses Signal gegeben ist. Aber dann dürfte ja dann, wenn ich das gegenteilige Signal als Aussteig benutze, er nicht wie bescheuert auf und zu machen.

Edited by dobbi
Link to comment
Share on other sites

Also fangen wir mal an.

 

Du verwendest folgende Signale

double Buy1_2 = iClose (NULL, PERIOD_M15, +0);
double Buy2_1 = iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MAIN, PERIOD_M15 + 0);
double Buy2_2 = 20;

double Buy2_3 = iCustom (NULL, PRICE_CLOSE, "supertrend", 2,1.3,0, + 0);
double Buy2_6 = iCustom (NULL, PRICE_CLOSE, "mj_ADXFilter_vBob", 14,15,1, + 0);

Das ist erst mal (Sorry) Mist.

Richtiger ist's so:

double Buy1_2 = iClose (NULL, 0, 0);	   //oder einfach close[0];
double Buy2_1 = iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MAIN, 0);	//hier wurde der Shift auf 0 gesetzt. 			
double Buy2_2 = 20;

double Buy2_3 = iCustom (NULL, 0, "Supertrend", 2, 1.3, 0, 0);					
double Buy2_6 = iCustom (NULL, 0, "ADXFilter", 14, 15, 0, 0);	//hier wurde ein anderer Mode gewählt

 

Die Signale werden bei dir auf folgende Weise ausgewertet

if (Buy2_3 < Buy1_2 && Buy2_2 < Buy2_1) 
Order = SIGNAL_BUY;

Alles aussen rum ist nur Orderhandling, konzentrieren wir uns also erst mal auf die Signalgenerierung.

Du verwendest vom Supertrend-Indikator den Buffer 0 (vorletzter Parameter von iCustom). Das ist richtig.

Buffer 0 repräsentiert das lime-farbene Signal.

Vom ADXFilter verwendest du den Buffer 1. Das ist so nicht richtig. Wenn ich den ADXFilter richtig verstehe,

so zeigt der Buffer 0 einen Aufwärtstrend an. Also 0 als vorletzten Parameter des iCustom-ADXFilter-Aufrufes

 

Wenn du nun willst, dass beide Indikatoren grün sind und der ADX über 20 ist, dann muss deine Bedingung folgendermassen lauten:

if(Buy2_1>Buy2_2 && Buy2_3!=0 && Buy2_6!=0)
Order = SIGNAL_BUY;

d.h also: iADX > 20 UND supertrend ist grün UND ADXFilter ist grün

 

Die Bedingung "Buy2_3

Supertrend Indis unterhalb des aktuellen Kurses liegt (wobei du bei iClose mit dem PERIODE_M15+0 noch einen Shift von 15 Bars reinbekommst). Das tut sie auch, wenn die grüne Linie "0" ist und das ist sie sobald

das Aufwärtstrendkriterium nicht erfüllt ist...

 

Versuch es einfach erst mal bis hierhin nachzuvollziehen, ansonstens wird's zu komplex.

 

Viel Spass dabei! :ph34r:

Link to comment
Share on other sites

Danke für die Info. aber ich habe mal sowas von kein plan wie ich den ansteuern soll. mit > oder

Glaub du hast meinen Code missverstanden.

 

extern int DeinePeriode=14;

extern int DeinAdx=20;

 

Diese Zeilen brauchst du damit dein EA von aussen Parameter bekommt.

 

IndiUp=iCustom(NULL, 0, "ADXFilter",DeinePeriode,DeinAdx,0,0);

IndiDn=iCustom(NULL, 0, "ADXFilter",DeinePeriode,DeinAdx,1,0);

Hier rufst du dein Indikator ab und speicherst sie in eine Variable.

Dabei sieht der Syntax so aus.

iCustom(Währungspaar, chartzeit, Indikatorname, Parameter1, Parameter2, Buffer, shift)

- Währungspaar=NULL um den aktuellen Währungspaar anzugeben

- Chartzeit=0 -> soll die Zeiteinheit vom Chart übernehmen

- ADXFilter -> Name deines Indikators

- Parameter1=DeinePeriode den du ja bereits weiter oben definiert hast

- Parameter2=DeinAdx den du auch weiter oben definiert hast. Diese beiden Parameter braucht dein Indikator.

- Buffer hier erfragst du den eigentlichen Wert des Indikators. In deinem Fall hast du nur 4 Bufferwerte. 0, 1, 2, 3

- shift 0=aktuell 1=einen Bar davor 2=vorletzte Balken usw.

 

Laut deinem Indikator sind die Bufferwerte 0 und 1 die wichtigsten.

Wenn Buffer 0 ==1 ist dann hast du einen uptrend

ansonsten ist Buffer 0 ==0

Wenn Buffer 1 ==1 ist dann hast du einen downtrend

ansonsten ist Buffer 1 ==0

Genau dies wird im folgenden Code abgefragt:

Variable "IndiUp" hatte den Wert vom Buffer0

Variable "IndiDn" hatte den Wert vom Buffer1 gespeichert.

if (IndiUp==1)

{

hier ist dein uptrend

}

if (IndiDn==1)

{

hier ist dein downtrend

}

Link to comment
Share on other sites

...wie schon erwähnt scheinen sie alle den wert 1.0000 zu haben.

Das ist so nicht richtig. Es ist jeweils nur das Signal für das die Bedingung erfüllt ist 1. Die anderen 3 sind 0.

 

siscop will dir allerdings damit sagen, dass du vom ADX Filter nur die Buffer 0 und 1 (Aufwärts und Abwärts) brauchst

und diese am Besten mit einem Shift von 1 einsetzt, damit du immer abgeschlossene Balken verwendest...

also im Prinzip so:

 IndiUp=iCustom(NULL, 0, "ADXFilter",DeinePeriode,DeinAdx,0,1);
IndiDn=iCustom(NULL, 0, "ADXFilter",DeinePeriode,DeinAdx,1,1);

 

EDIT: War zu langsam...

Link to comment
Share on other sites

Hi,

 

kann leider nix produktives beitragen weil ich grad nicht die Zeit hab mir den Thread genau durchzulesen, aber wollt nur sagen: Finds genial was für ein Support hier geleistet wird. Ganz großes Danke an alle Beteiligten, ihr zeigt deutlich auf welchem Niveau sich TomNext dank euch befindet! :ph34r:

Link to comment
Share on other sites

Noch was.

Die Defaulteinstellungen für deinen Supertrend-Indikator sind 10 und 3

extern int Nbr_Periods = 10;
extern double Multiplier = 3.0;

Warum verwendest du im EA die Werte 2 und 1.3?

double Buy2_3 = iCustom (NULL, PRICE_CLOSE, "supertrend", 2,1.3,0, + 0);

Mit diesen Einstellungen werden deine Signale viel zu unruhig.

 

Für alle die aus dem Thema noch nicht ausgestiegen sind bzw. die grob wissen wollen worum es hier geht

mal ein Screenshot der besagten beiden Indikatoren.

Dobbi.JPG

 

Der Indikator im Chart-Window ist ein mit einem best. Verfahren gewichteter ATR und der Indikator im Fenster darunter ein über verschiedene Modes ausgewerteter ADX.

Link to comment
Share on other sites

Ja danke erstmal =)

 

wäre nie drauf gekommen das da nach dem buy_x ein ! hin muss.

na immerhin oerdert er jetzt. aber irgendwie immernoch nicht dann wann er soll!

rückblickend auf den Backtest Chart sieht man das er auch bei Rot nen Buy gesetzt hat. gut... dachte ich das liegt daran das die halt auch mal zwischendurch kurz switchen was man kaum oder garnicht sieht. also habe ich überall das Shift auf 1 gesetzt. also selbst wenn die Kerze davor mit Rot gekennzeichnet war, wurden Buy´s getätigt. das is doch mist. oh und wenn ich die sell Order als Buy ausstieg nehme und umgekehrt. dann macht er wieder wie bekloppt auf und zu bis alles Geld verbraten is. Wieso tut er das? das würde ja bedeuten das die in sekundenbruchteilen hin und herwechseln was man mit dem Auge garnicht mitkriegt. Und da hilft wie schon erwähnt auch Shift nichts. Fühl mich da irgendwie verarscht xD

Link to comment
Share on other sites

Noch was.

Die Defaulteinstellungen für deinen Supertrend-Indikator sind 10 und 3

extern int Nbr_Periods = 10;
extern double Multiplier = 3.0;

Warum verwendest du im EA die Werte 2 und 1.3?

double Buy2_3 = iCustom (NULL, PRICE_CLOSE, "supertrend", 2,1.3,0, + 0);

Mit diesen Einstellungen werden deine Signale viel zu unruhig.

 

Ui.. als ich die letzte Antwort geschrieben habe, habe ich nicht gesehen das schon eine Zweite Seite auf ist.

ja also ich habe da etwas rumprobiert und festgestellt das er so eher bescheit sagt wann man aufhören sollte. aber denke werde dann doch mal die 10.3er einstellung probieren.

 

....

 

So das hab ich grad gemacht. Genau das gleiche. Buy´s im roten Und Sells im Grünen. also nicht ausschließlich. hab also nicht die Buffer vertauscht.

wobei ich die Supertrend Signale vom aktuellen nehme und die des Filters vom letzten bar.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...