Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   EA soll position schließen wenn sie sich MACD kreuzen (http://www.expert-advisor.com/forum/showthread.php?t=3295)

Bardel 22.10.13 00:23

EA soll position schließen wenn sie sich MACD kreuzen
 
Hallo,
ich bin hier neu und brauche eure hilfe bei einem EA. Es soll einfach nur die geöffnete Position (von Hand eröffnet) automatisch beim durchkreuzen der Durchschnitte geschlossen werden. Das EA habe ich auf StrategyTune: How to make an expert advisor. Metatrader ea builder mt4, mql4 tutorials, mql4 manual, codebase mql. Metatrader expert advisor builder for mt4, free expert advisors for mt4. Expert adviser builder. erstellt. Wenn jemand was besseres kennt oder dieses EA schon hat wäre ich dafür dankbar.

Meine erste Frage ist, kann ein EA die Position überhaupt schließen, wenn sie von Hand eröffnet wurde oder nicht?

Meine zweite Frage, welches Symbol muß ich einsetzen, um beim durchkreuzen zweier Linien ein Verkaufsbefehl auszulösen?
Im Moment steht bei Level 2 ein != als Auslöser was ich denke der Fehler ist.

Vielen Dank für eure Hilfe

#define __STRATEGY_MAGIC 1154413728

//Inputs

//Declaration
bool _Close_Position;
bool _Compare;
double _Moving_Avarage_schnell;
double _Moving_Avarage_langsam;

int start(){

//Level 1
_Moving_Avarage_schnell = iMA(Symbol(),0,14,0,0,0,0);
_Moving_Avarage_langsam = iMA(Symbol(),0,14,0,0,0,0);

//Level 2
_Compare = _Moving_Avarage_schnell != _Moving_Avarage_langsam;

//Level 3
if(_Compare)_Close_Position = OrderClose(__Ticket(0),OrderLots(),MarketInfo(Orde rSymbol(),MODE_BID)+MarketInfo(OrderSymbol(),MODE_ SPREAD)*MarketInfo(OrderSymbol(),MODE_POINT)*(Orde rType()==1),0);
return(0);
}

//Services
bool __selectOrderByMagic(int __magic){for(int __i=0;__i<OrdersTotal();__i++){if(OrderSelect(__i, SELECT_BY_POS,MODE_TRADES)&&OrderMagicNumber()==__ STRATEGY_MAGIC+__magic)return(true);}return(false) ;}
int __Ticket(int __magic){if(!__selectOrderByMagic(__magic))return( 0);return(OrderTicket());}

feelfree 22.10.13 09:45

Hi Bardel,

manuell erstellte Position haben immer die MagicNumber 0.
Der EA muss also mit der MagicNumber 0 arbeiten.

Und deine MA Definition für schnell und langsam ist exakt gleich.
So wird es nie zu einer Kreuzung kommen.

Zitat:

//Level 1
_Moving_Avarage_schnell = iMA(Symbol(),0,14,0,0,0,0);
_Moving_Avarage_langsam = iMA(Symbol(),0,14,0,0,0,0);

Bardel 22.10.13 11:41

Hallo,
die MACD habe ich natürlich in 10 und 20 geändert also gekreuzt haben sie sich.
Die Magic Number werd ich nochmal schauen.

Alerdings welches Zeichen steht für das durchkreuzen selbst? "<=>" wäre ja unlogisch denn das würde ja sofort die Position glatt stellen.

feelfree 22.10.13 11:52

Die MagicNumber ist das hier:

Code:

#define __STRATEGY_MAGIC 1154413728
Das sie hier anders heißt liegt an der Baukastensoftware die du verwendest.

Die MA Kreuzung selbst kannst du nur mit 2 Schritten abfragen.
Bei der vorletzten Kerze darf die Bedingung (MAschnell < MAlangsam) noch nicht erfüllt sein.
Bei der letzten Kerze muss die Bedingung (MAschnell > MAlangsam) erfüllt sein.

Fragst du den Wert direkt auf der aktuellen Kerze ab kann es passieren das der MA eben doch keine Kreuzung vollendet und du die Position zu früh schließt.

traderdoc 22.10.13 14:18

Zitat:

Zitat von Bardel (Beitrag 23962)
Hallo,
die MACD habe ich natürlich in 10 und 20 geändert also gekreuzt haben sie sich.
Die Magic Number werd ich nochmal schauen.

Alerdings welches Zeichen steht für das durchkreuzen selbst? "<=>" wäre ja unlogisch denn das würde ja sofort die Position glatt stellen.

Ich sehe aber in dem Code keinen MACD. Der hätte auch nichts direkt mit der Berechung der MAs zu tun und die sind, wie feelfree schon richtig bemerkte, völlig identisch. Und da in dieser MA-Formel auch keine Variablen stehen, wird immer dasselbe errechnet werden müssen.

traderdoc

Bardel 23.10.13 01:32

So, ich hab nochmal etwas gebastelt. STRATEGY_MAGIC 0 habe ich manuell eingegeben. In der Bausteinsoftware wurde die Nummer auch mit 0 angegeben obwohl in dem ausgegebenen Code die lange Nummer stand. Ich habe versucht die Kreuzung über zwei Schritte zu erfragen. Fehler bekomme ich bei dem Meta Editor nicht angezeigt. Allerdings passiert beim Strategietester auch nicht viel.

Nach der Methode von feelfree muß ich ja demnach ein EA für Short und eins für Long haben richtig?

Nun da ich ja völlig neu bin in der Materie stellt sich nun auch die Frage ob die Bausteinsoftware(für strategy tune gibt es kein Manual´s) sinnvoll ist oder besser, welche ist einfach und sinnvoll? (Ich möchte ja schließlich in erster Linie erfolgreich traden nicht programmieren)


#define __STRATEGY_MAGIC 0
//Inputs

//Declaration
double _s1;
double _l1;
double _s;
double _l;
double _Bar_Data;
bool _Compare;
double _Bar_Data_2;
bool _Compare_2;
bool _AND;
bool _Close_Position;

int start(){

//Level 1
_s1 = iMA(Symbol(),0,10,0,0,0,0);
_l1 = iMA(Symbol(),0,20,0,0,0,0);
_s = iMA(Symbol(),0,10,0,0,0,0);
_l = iMA(Symbol(),0,20,0,0,0,0);

//Level 2
_Bar_Data = iClose(Symbol(),0,_s1);
_Bar_Data_2 = iClose(Symbol(),0,_l1);
_Compare_2 = _s < _l;

//Level 3
_Compare = _Bar_Data > _Bar_Data_2;

//Level 4
_AND = !_Compare && _Compare_2;

//Level 5
if(_AND)_Close_Position = OrderClose(__Ticket(0),OrderLots(),MarketInfo(Orde rSymbol(),MODE_BID)+MarketInfo(OrderSymbol(),MODE_ SPREAD)*MarketInfo(OrderSymbol(),MODE_POINT)*(Orde rType()==1),0);
return(0);
}

//Services
bool __selectOrderByMagic(int __magic){for(int __i=0;__i<OrdersTotal();__i++){if(OrderSelect(__i, SELECT_BY_POS,MODE_TRADES)&&OrderMagicNumber()==__ STRATEGY_MAGIC+__magic)return(true);}return(false) ;}
int __Ticket(int __magic){if(!__selectOrderByMagic(__magic))return( 0);return(OrderTicket());}

feelfree 23.10.13 10:37

Zitat:

Zitat von Bardel (Beitrag 23967)
(Ich möchte ja schließlich in erster Linie erfolgreich traden nicht programmieren)

Erfolgreich programmieren kann dir den Weg zum erfolgreichen Trading doch sehr erleichtern, da sich Strategien schneller auf ihre Profitabilität testen lassen.

Zurück zum Thema:
Was soll denn im Strategietester passieren?
In deinem Script soll ja nur eine "manuell" erstellte Position geschlossen werden.

Zitat:

Nach der Methode von feelfree muß ich ja demnach ein EA für Short und eins für Long haben richtig?
Absolut nicht. Du solltest aber je eine CloseOption für Long und Short Trades haben. Diese Unterscheidung findet sich allerdings nirgends.
Also zurück an's Reißbrett.

Für deine ersten Schritte halte ich dieses Baukastensystem für geeigneter:
Expert Advisor Builder for MetaTrader 4

Expert Advisor haben den ganz großen Vorteil das man ALLES exakt definieren muss.
Spätestens da geht so manchem "aus-dem-Bauch-Trader" ein Licht auf. :rolleyes:

Viel Erfolg
Dan

traderdoc 23.10.13 11:19

Zitat:

Zitat von Bardel (Beitrag 23967)
Nun da ich ja völlig neu bin in der Materie stellt sich nun auch die Frage ob die Bausteinsoftware(für strategy tune gibt es kein Manual´s) sinnvoll ist oder besser, welche ist einfach und sinnvoll? (Ich möchte ja schließlich in erster Linie erfolgreich traden nicht programmieren)

Wenn Du erfolgreich traden willst, dann gibt es nur zwei Wege.
1. Ohne EA, mit viel Fachwissen und v.a. sehr viel Erfahrung
2. Mit EA, den Du selber! programmiert hast und das ohne einen Builder!

Beide Methoden sind zeitaufwändig und steinig. Es gibt keinen einfachen und leichten Weg in diesem Markt, langfristig zu den Gewinnern zu zählen.
Und wer Spitzenleistung erzielen will, muß im Vorfeld Spitzenbelastungen aushalten und durchlaufen.

Nur Mut!

VG

traderdoc

traderdoc 23.10.13 11:26

int start(){

//Level 1
_s1 = iMA(Symbol(),0,10,0,0,0,0);
_l1 = iMA(Symbol(),0,20,0,0,0,0);
_s = iMA(Symbol(),0,10,0,0,0,0);
_l = iMA(Symbol(),0,20,0,0,0,0);

//Level 2
_Bar_Data = iClose(Symbol(),0,_s1);
_Bar_Data_2 = iClose(Symbol(),0,_l1);
_Compare_2 = _s < _l;

Ohne mir den Rest des Codes genauer angesehen zu haben, kann der Teil unter Level 2 nicht funktionieren, weil bei der Funktion iClose() die letzte Variable eine Integerzahl für die zu betrachtende Kerze stehen muß. In Deinem Falle steht aber ein double-Wert, der aus dem iMA errechnet wurde. Das kann keinen sinnvollen iClose()-Wert ergeben und damit auch keinen nachfolgenden Werte.

Was mich an dieser Stelle v.a. mal interessiert, hat der Builder diese o.g. Zeilen geschrieben oder wer ist der Urheber?
VG

traderdoc

Bardel 24.10.13 00:44

Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
bin zurück vom Reißbrett :).
Also die Idee ist, die auf scalp trading vorgestellte Handelsstrategie Momentum von Hand zu eröffnen und beim durchqueren eines MA automatisch zu schließen. Ich habe ein EA auf Expert Advisor Builder geschrieben (Danke feelfree).

Ich habe eine Close (sell) strategy mit zwei MA 10 und 20. Durchkreuzt der 10´er den 20´er nach unten (<)soll die Position geschlossen werden. Um ein vorzeitiges schließen zu verhindern, habe ich als Bedingung (and)das gleiche nochmal umgekehrt eingegeben (>)allerdings soll die vorletzte Periode dafür verwendet werden. Damit habe ich denke ich eine Long Position abgedeckt.Dann habe ich alle vorherig beschriebenen Punkte umgekehrt eingegeben um auch eine short Position zu schließen (Bediengung or). Ich hoffe ich habe feelfree richtig verstanden.

Passiert ist trotz allem mal wieder nichts!

Zu traderdoc(auch Dir Danke), der Urheber also das Bausteinprogramm war Strategy Tune die Parameter habe ich eingegeben. ich möchte auch gerne weiter diese Programme verwenden. Der Fehler liegt sicher an meiner Logik, allerdings wo der Fehler liegt kann ich nicht sagen.

Hey, beim verfassen des Textes habe ich nochmal eine Version ausprobiert die nur die Long Position enthält (YourExpertAdvisor 5) und siehe da es hat geklappt:). Wie bekommt man dann noch die Short Position dazu?


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:54 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum