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)
-   -   Kauf- und Verkaufstopps setzen (http://www.expert-advisor.com/forum/showthread.php?t=1554)

Mast83 26.08.11 20:43

Kauf- und Verkaufstopps setzen
 
Hallo Zusammen,

bin an der o.g. Ordererteilung gescheitert...ich dachte wenn ich Ordersend () wähle, kann ich BUYSTOPP als Kaufstopp und SELLSTOPP als Verkaufsstopp setzen...am besten natürlich mit dem von mir gewünschten Kurs. Kann jemand helfen wie ich das im System implementiere?

VG und Danke Marc

Mast83 26.08.11 21:19

Also als Beispiel...mein Signal sagt mir, dass ich zum High der vorherigen Bars in den Markt long gehen will...wäre ja ein Kaufstopp.

Umgekehrt wäre es ja ein verkaufstopp, wenn ich zum low der vorherigen Kerze in den Markt will...

Mast83 30.08.11 16:18

kann sich jemand erbarmen und mir helfen?

Testmaster 01.09.11 19:12

schreib doch mal Dein OrderSend hier rein, dann kann man Dir auch vielleicht helfen. Der 2. Parameter der OrderSend Funktion muss
OP_BUYLIMIT 2 Buy limit pending position.
OP_SELLLIMIT 3 Sell limit pending position.
sein.

Je nach Wunsch.

Viel Erfolg

Testmaster

Mast83 01.09.11 23:25

Hallo Testmaster,

so sieht es derzeit aus...
Mein Ziel ist bei der Strategie auf Tagesbasis wenn die vorherige Kerze positiv war beim high mit einem Kaufstopp zu kaufen und 10 Pips gewinn zu machen...andersherum...sollte die Kerze rot sein mit einem Verkaufstopp zu shorten und 10 Pips mit zu nehmen:


extern int BTP=10;
extern int BSL=20;
extern int STP=10;
extern int SSL=20;
extern double Lots=0.1;
extern int slippage=1;
int iOrderOpenStatus;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

//----Kauflogik
if (Open[-1] < Close[-1])
{
double BSL=Ask-(BSL*Point);
double BTP=Ask+(BTP*Point);


iOrderOpenStatus=OrderSend (Symbol(), OP_BUY,Lots, Ask, slippage, BSL, BTP, "Kauf",0,Green);
}

//----Verkaufslogik
if (Close[-1] < Open[-1])
{
double SSL=Bid-(SSL*Point);
double STP=Bid+(STP*Point);


iOrderOpenStatus=OrderSend (Symbol(), OP_SELL,Lots, Bid, slippage, SSL, STP, "Verkauf",0,Red);
}

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


Hier muss ich den KS und VS rein setzen...aber wie markeire ich das high der für mich relevanten Kerze bzw wie sieht das aus?


Vielen Dank für Deine Hilfe

Foxi 02.09.11 18:33

Pending Orders
 
Hallo Marc,

verstehe ich dein Problem richtig, dass du gerne Orders zur späteren Ausführung (Pending) setzen möchtest, mit Buy-Stop bzw. Sell-Stop? In dem obigen Quelltext setzt du Orders zur sofortigen Ausführung.

Den Unterschied macht der zweite Parameter in der OrderSend(...)-Funktion, wie Testmaster schon geschrieben hat.

Mit OP_BUY bzw. OP_SELL werden die Orders sofort ausgeführt, mit OP_BUYSTOP bzw. OP_SELLSTOP werden Pending Orders mit Stop aufgegeben (und mit OP_BUYLIMIT / OP_SELLLIMIT wären auch noch Pending Orders mit Limit möglich, was von dir aber wohl nicht gewünscht wird).

Liegt es daran?

Gruß
Foxi

Mast83 03.09.11 15:05

Hallo Zusammen,

ich habe schon gedacht, dass im 2 ten Parameter "OP_BUYSTOP" oder "OP_SELLSTP" stehen muss, allerdings nun die Frage erkennt MT4 automatisch, dass Kauf und verkauf am high und low der vorherigen Kerze sein sollen?

Dementsprechend müsste ich (wenn das so klappen würde) ja nur:
Hallo Testmaster,


extern int BTP=10;
extern int BSL=20;
extern int STP=10;
extern int SSL=20;
extern double Lots=0.1;
extern int slippage=1;
int iOrderOpenStatus;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

//----Kauflogik
if (Open[-1] < Close[-1])
{
double BSL=Ask-(BSL*Point);
double BTP=Ask+(BTP*Point);


iOrderOpenStatus=OrderSend (Symbol(), OP_BUYSTOP,Lots, Ask, slippage, BSL, BTP, "Kauf",0,Green);
}

//----Verkaufslogik
if (Close[-1] < Open[-1])
{
double SSL=Bid-(SSL*Point);
double STP=Bid+(STP*Point);


iOrderOpenStatus=OrderSend (Symbol(), OP_SELLSTOP,Lots, Bid, slippage, SSL, STP, "Verkauf",0,Red);
}

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

abändern..

Vielen Dank und schönes WE

Marc

Foxi 05.09.11 08:22

[QUOTE=Mast83;4878]
ich habe schon gedacht, dass im 2 ten Parameter "OP_BUYSTOP" oder "OP_SELLSTP" stehen muss, allerdings nun die Frage erkennt MT4 automatisch, dass Kauf und verkauf am high und low der vorherigen Kerze sein sollen?

Hallo,

das kann das Programm so nicht wissen. Deshalb muss man den gewünschten Preis in der Order eintragen und zwar dort, wo in deinem Beispiel <Bid> bzw. <Ask> steht (bei Orders zur sofortigen Ausführung wäre Bid/Ask richtig, aber nicht bei Pending Orders).

Es gibt dann aber noch einige Einschränkungen, damit das ganze funktioniert:
- Der Open-Preis darf nicht zu nahe am Marktpreis liegen
- Der Open-Preis für Buy-Stop darf nicht über dem Marktpreis liegen und der für Sell-Stop nicht darunter
- Bei einigen Brokern muss wohl noch eine Verfallszeit als vorletzter Parameter (vor der Farbe) eingetragen werden, diese kann aber <0> sein und bedeutet dann "kein Verfall"

Das musst du im Programm berücksichtigen. Naja, oder du versuchst es halt erstmal so und schaust, welche Fehlermeldungen auftreten.

Es wäre bestimmt sinnvoll, wenn du dir im MetaEditor den Hilfetext zur OrderSend() durchlesen würdest. Das stehen weitere Einzelheiten. Einfach im Navigator (meist oben rechts) <OrderSend> eingeben und dann anklicken.

Grüße
Foxi

Testmaster 05.09.11 08:39

Hallo, wenn Du am High der letzten Kerze einsteigen willst sollte Dein OderSend wie folgt aussehen:

iOrderOpenStatus=OrderSend (Symbol(), OP_BUYSTOP,Lots, High[1], slippage, BSL, BTP, "Kauf",0,Green);

Wenn da ein Fehler auftaucht musst Du noch normalizeDouble davor packen.

Short dann Low[1].

Viel Erfolg.

Mast83 05.09.11 11:48

Vielen Dank für die Hilfe euch beiden...In verschiedenen Foren habe ich mal geschaut und bei MQL sind irgendwie nur Scripte in denen direkt per Marktorder agiert wird.

Eigentlich logisch, dass es so aussehen müsste...Aber wiederrum nicht explizit in der Documentation dargestellt, sondern nur die "normale" Variante...


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