Alle Inhalte von dobbi
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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?^^
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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.
-
EA immer auf letzte Wochen optimieren?
na also von wegen lernen. Einzelne Bausteine sind ja eig klar. Aber ich habe bis jetzt noch nichts gefunden was mir mal erklärt wie die zusammenhänge sind. Wann ich wieviel Klammern setzen muss und warum. in welcher Reihenfolge ich was schreiben muss. und wenn ich weis wie Baustein A funzt, dann weis ich aber immernoch nciht zu welchem Baustein ich Ihn packen soll. etc. Vllt bin ich ja auch einfach nur zu dumm um da irgenwo zusammenhänge zu sehen. Bis jetzt konnte ich mir eig vieles was mich so interessiert irgendwie selber beibringen. Aber programmieren is echt hardcore^^ Finds auch (auch wenns nichts nutzt) total bescheuert das die ein programm rausgeben ws für jeden frei zugänglich ist, aber wenn man es voll nutzen will man halb studieren muss. ich habe in den weiten des WWW tatsächlich ein Programm gefunden was wohl als Bauksten dienen soll. kostet aber 180 takken... xD ... ist auch leider nicht bekannt genug als das man es als DDL findet. es gibt aber auch sachen die ich einfach rein logisch nicht verstehe. wenn ich z.b sage öffne wenn linie a größer als liie b. so.. wenn ich dann auf den Backtest Chart gucke dann sehe ich eindeutig das erst lange dannach geöffnet wurde, nachdem die Bedingung schopn lange gegeben war. Wenn ich will das sich etwas öffnet wenn sich die ADX Linien kreutzen und ich sage minusdi == plusdi (oder so) dann amcht er irgendwann mal auf.. nur nicht dann, wenn sie sich kreutzen. Wenn ich mit dem Supertrend Indikator arbeite. ich ihm sage mach auf wenn grün, schließe wenn rot. also über Pufferstellen und dem XXX!=1 dann kann es vorkommen das er wie wild auf und zu macht und innerhalb einer Kerze alles geld verbrennt. Da werden dann auch Trades geöffnet wärend ich zugucke und genau sehe das er eig nicht hätte öffnen dürfen. Das sind alles so dinge die ich rein logisch nicht nachvollziehen kann und mich tierisch aufregen^^
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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^^
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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.
-
EA immer auf letzte Wochen optimieren?
OrderClose(takeprofit=50%) ? ja kp.. musst schon genauer werden.. wie oft mus sich noch schreiben das ich nochn anfänger bin^^ und woher weis ich ob der Broker das zulässt? steht das irgendwo auf seiner HP?
-
EA immer auf letzte Wochen optimieren?
ja schön^^ Aber wie geht das? hab doch vom programmieren null Ahnung. wäre auch gut wenn er keine Trad`s übers WE offen lässt. Normal würd ich ja manuell schließen. Aber das verfälscht ja nur den Backtest. und wie in einem anderen Thread schon gefragt: Wie mach ich das mit dem Teilaussteig bei T/P?^^ Muss doch auch brauchbare tut seiten auf deutsch geben. Find aber nur englische. und damit kann ich nur bedingt was anfangen....
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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^^
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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 =)
-
EA immer auf letzte Wochen optimieren?
hey... also meine erste eigene EA Gurke ist soweit startbereit. Naja.... das Grundgerüst habe ich von einer dieser EA Builder HP´s... Aber er Handelt immerhin. Ab Montag stell ich den einfach mal Demo mäßig online und guck zu ob er meine spielgeld vernichtet^^ Aber mal so ne ganz generelle Frage: Ich habe eig so ziemlich jeden Parameter der Irgendwie variabel ist .. ähm.. wie soll ich das sagen.. so erstellt das ich sie von MT4 aus da in dem Einstellungsfesnter direkt ändern kann. z.Z läuft da grade eine Optimierung auf die letzten Wochen. Längere zeiträume würden wahrscheinlich Jahre dauern. Also ist es sinnvoll im rahmen der aktuellen Marktanpassung immer mit aktuellen backtest optimierungsdaten zu arbeiten? Also wenn ich z.B jeden Fr. Abend diese Optimierung für die letzten 4 Wochen durchlaufen lasse und mit diesen Einstellungen am Montag beginne? Wäre ja dann nicht unbedingt überoptimiert. wäre halt immer aus aktuelle Marktzeiträume optimiert.... Bin aber auch generell in sachen Forex noch unerfahren udn am meisten reizt mich wohl nur das thema EA. Deshalb würd ich halt gern mal hören was die Profis dazu sagen =) Wie schnell neigt denn der Markt dazu komplett umzuschwenken? Habe mal ein paar tests mit aktuellen werten in 2007 und 2008 gemacht. also das ergebniss war echt fürn Arsch. Anfang des Jahres bis heute dagegen wesentlich besser. Wobei ich als noob einfach mal davon ausgehe, das wenn ich ihn auf die Zeiträume davor optimiert hätte, ein besseres ergebniss gehabt hätte. .. So genug geschwafelt...Aber eins noch. Mein EA lebt quasi vom Trend. gibt es da Tageszeiträume wo man so einen besser nicht laufen lassen sollte?
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
Verarsch mich nich xD
-
Mein erster eigener Robot
*post*
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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.
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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?
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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...
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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.
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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... 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.
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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.
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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?^^
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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...
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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...
-
MQL Codefrage: EA soll auf 2 Indikatoren zugreifen
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 =)