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 MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   simpel buy sell ea (http://www.expert-advisor.com/forum/showthread.php?t=6127)

Martin 30.05.18 21:58

simpel buy sell ea
 
hallo leute ich brauche mal bitte eure hilfen
und zwar suche ich ein ea der gleichzeitig eine buy und sell positon öffnet
und wen eine von beiden geschlossen wird soll er wider eine buy und sell position öfnen

kann mir bitte da jemand weiter helfen habe irgendwie nichs in der richtung gefunden was funktioniert

danke

Gruss Martin

MA-EA 01.06.18 21:03

Liste der Anhänge anzeigen (Anzahl: 1)
Arbeite derzeit an Einem.

Allerdings stimmt beim Trailing Stop was nicht. Im MT4 leuchtet SL zwar immer wieder mal auf, aber er ändert sich nicht. Wahrscheinlich irgendwo ein logischer Fehler drin. :confused:

Aber er öffnet erst wieder, wenn beide Richtungen geschlossen wurden. Oder soll er zumindest. :rolleyes:

Nachtrag: Ich glaube so müsste es richtig sein

Code:

//SL TP Deklarationen und Berechnungen
//ASK & BID
double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);//Mode Current ASK
double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);//Mode Current BID
//-------------------------------------------------------------------------------------------------------------
//Normaler SL
if(Stoploss>0)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll.
if(Stoploss>0)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll.
//Normaler TP
if(Takeprofit>0)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll.
if(Takeprofit>0)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll.
//-------------------------------------------------------------------------------------------------------------

Code:

if(Trailing_Stop=true&&Stoploss>0){
 
  double M_CA_SL_TSS=NormalizeDouble(M_CA_SL-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask
  double M_CB_SL_TSS=NormalizeDouble(M_CB_SL+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid


//Trailing Stop Bedingungen für neuen TS
// ?
  if(B_SL<M_CA_SL_TSS)B_TS=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);
  if(S_SL>M_CB_SL_TSS)S_TS=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);
// ?

}


MA-EA 01.06.18 22:09

Liste der Anhänge anzeigen (Anzahl: 1)
Waren ein paar Fehler drin. :rolleyes: Müsste jetzt funktionieren.

MA-EA 02.06.18 01:22

Liste der Anhänge anzeigen (Anzahl: 1)
Sorry, musste was ergänzen. Mach schließlich nicht jeden Tag nen automatischen Takeprofit. :rolleyes:

Vergesst die beiden Vers. vor diesem Post. Leider kann ich die nicht mehr entfernen...

Meine größte Sorge ist der Trailing Stop. Weiß nicht, ob das so funktioniert:
Code:

extern bool Trailing_Stop=true;
extern int Trailing_Stop_Step=5;

Code:

//SL TP Deklarationen und Berechnungen
//ASK & BID
double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);//Mode Current ASK
double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);//Mode Current BID
//-------------------------------------------------------------------------------------------------------------
//Normaler SL
if(Stoploss>0)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll.
if(Stoploss>0)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll.
//Normaler TP
if(Takeprofit>0)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll.
if(Takeprofit>0)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll.

Code:

if(Trailing_Stop=true&&Stoploss>0){
 
  double M_CA_SL_TSS=NormalizeDouble(M_CA-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask
  double M_CB_SL_TSS=NormalizeDouble(M_CB+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid


//Trailing Stop Bedingungen für neuen TS
// ?
  if(B_SL<M_CA_SL_TSS)double B_TS=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);
  if(S_SL>M_CB_SL_TSS)double S_TS=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);
// ?

 }

Code:

//Modify Orders (Trailing Stop nach ziehen)
if(Trailing_Stop==true&&Stoploss>0){// ganz oben Bedingungen für OrderModify eintragen müsste reichen...
for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){

if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){//modify Buy
if(B_SL<M_CA_SL_TSS)OrderModify(OrderTicket(),price,B_TS,OrderTakeProfit(),0,Blue);}// ?

if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){//modify Sell
if(S_SL>M_CB_SL_TSS)OrderModify(OrderTicket(),price,S_TS,OrderTakeProfit(),0,Red);}}}}// ?


MA-EA 03.06.18 02:13

Liste der Anhänge anzeigen (Anzahl: 1)
Moin.

Im Anhang der Versuch einer Art Hedge EA. Öffnet und schließt Buy und Sell entsprechend der Einstellungen.

Hab versucht den SL automatisch über den Spread zu berechnen.

Der Trailing Stop müsste in 5er Schritten die SLs nach ziehen. Jedenfalls wenn ichs richtig geproggt habe. :rolleyes:

Der TP sollte automatisch über die Spreads und vorrausichtlichen Verlust einer Richtung berechnet werden.

Wär dankbar, wenn Jemand damit ein paar (Back)Tests machen könnte. Bei mir heißt es immer nur "Order Close Error".

Viel Spass. ;) :cool:

Martin 03.06.18 17:28

danke für die antwort werd mal teste ob er das kann was ich möchte

MA-EA 04.06.18 00:24

Er öffnet nur, wenn gar keine Order offen ist.

Warum soll er gleich wieder Eine öffnen, wenn eine geschlossen wurde? :confused:

Falls Du Deinem Nick entsprechend Martin Gale versuchen willst, lass es. So ein System kann eigentlich nur früher oder später schief gehn. :(

https://de.wikipedia.org/wiki/Martingalespiel


Hat mal Jemand getestet, ob der SL alle (ich glaube) 5 Pips nach gezogen wird?

MA-EA 04.06.18 05:52

Moin.

Jetzt brauch wirklich mal die Hilfe von ein paar Proggern die sich richtig auskennen.

Ich will für winzige Spreads auch einen winzigen, alternativen Trailing Stop Schritt einrichten. Find aber nix zum Normalize. :confused:

So soll das werden:
Code:

extern bool Trailing_Stop=true;
extern int Trailing_Stop_Step=5;
extern string ATSS1="If Spread <";
extern string ATSS2="Trailing Stop Step";
extern int Alternative_TSS=3;
extern string ATSS3="If Spread <";
extern string ATSS4="Alternative Trailing";
extern string ATSS5="Stop Step";
 extern string ATSS6="TSS = 0";

Code:

//Falls Spread kleiner als Trailing Stop Step (5) ist, soll TSS = Alternative_TSS (3) sein
  if(NormalizeDouble(C_SPR<Trailing_Stop_Step*_Point,_Digits))Trailing_Stop_Step=NormalizeDouble(Alternative_TSS*_Point,_Digits);

//Falls Spread auch kleiner als Altervativer Trailing Stop Step (3) ist, soll TSS = 0 sein
  if(NormalizeDouble(C_SPR<Alternative_TSS*_Point,_Digits))Trailing_Stop_Step=NormalizeDouble(0*_Point,_Digits);

Muss da jetzt Alles normalized werden? Oder nur die neuen int Werte? Oder wie oder was? :confused:

MA-EA 04.06.18 06:03

Funktioniert das so ordnungsgemäß?

//Falls Spread kleiner als Trailing Stop Step (5) ist, soll TSS = Alternative_TSS (3) sein
if(NormalizeDouble(C_SPR<Trailing_Stop_Step*_Point ,_Digits))NormalizeDouble(Trailing_Stop_Step=Alter native_TSS*_Point,_Digits);

//Falls Spread auch kleiner als Altervativer Trailing Stop Step (3) ist, soll TSS = 0 sein
if(NormalizeDouble(C_SPR<Alternative_TSS*_Point,_D igits))NormalizeDouble(Trailing_Stop_Step=0*_Point ,_Digits);

Martin 04.06.18 06:24

nein kein marginal die lot grösse soll immer die selbe sein ich hab da eine idee die ich gerne mal testen möchte
wäre es den viel arbeit für dich den ea so zu endern wie ich das beschriben habe?
also das er gleich wider zwei neue aufmacht wen einer geschlossen ist ?

Zitat:

Zitat von MA-EA (Beitrag 41070)
Er öffnet nur, wenn gar keine Order offen ist.

Warum soll er gleich wieder Eine öffnen, wenn eine geschlossen wurde? :confused:

Falls Du Deinem Nick entsprechend Martin Gale versuchen willst, lass es. So ein System kann eigentlich nur früher oder später schief gehn. :(

https://de.wikipedia.org/wiki/Martingalespiel


Hat mal Jemand getestet, ob der SL alle (ich glaube) 5 Pips nach gezogen wird?



Alle Zeitangaben in WEZ +2. Es ist jetzt 14:07 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