Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36909
Benutzer: 6.083
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: Wombat
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 4 Stunden
- Wombat
vor 19 Stunden
- idur
vor einem Tag
- DarthTrade...
vor einem Tag
- Eren
vor 2 Tagen
- Rene1504

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 44
Gesamt: 46
Team: 0
Team:  
Benutzer:  fxnoob, Stier
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.10.13
Neues Mitglied
 
Registriert seit: Oct 2013
Beiträge: 5
Bardel befindet sich auf einem aufstrebenden Ast
Standard 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());}
  #2 (permalink)  
Alt 22.10.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

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);
  #3 (permalink)  
Alt 22.10.13
Neues Mitglied
 
Registriert seit: Oct 2013
Beiträge: 5
Bardel befindet sich auf einem aufstrebenden Ast
Standard

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.
  #4 (permalink)  
Alt 22.10.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

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.
  #5 (permalink)  
Alt 22.10.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Bardel Beitrag anzeigen
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
  #6 (permalink)  
Alt 23.10.13
Neues Mitglied
 
Registriert seit: Oct 2013
Beiträge: 5
Bardel befindet sich auf einem aufstrebenden Ast
Standard

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());}
  #7 (permalink)  
Alt 23.10.13
Premium Mitglied
 
Registriert seit: Mar 2013
Beiträge: 332
feelfree befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Bardel Beitrag anzeigen
(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.

Viel Erfolg
Dan
  #8 (permalink)  
Alt 23.10.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Bardel Beitrag anzeigen
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
  #9 (permalink)  
Alt 23.10.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
  #10 (permalink)  
Alt 24.10.13
Neues Mitglied
 
Registriert seit: Oct 2013
Beiträge: 5
Bardel befindet sich auf einem aufstrebenden Ast
Standard

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?
Angehängte Dateien
Dateityp: mq4 YourExpertAdvisor (4).mq4 (9,7 KB, 8x aufgerufen)
Dateityp: mq4 YourExpertAdvisor (5).mq4 (9,3 KB, 11x aufgerufen)
Thema geschlossen

Lesezeichen

Stichworte
macd, macd kreuzen, macd kreuzung, mql5, programmierung, programmierung metatrader


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------