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)
-   -   trailing stop order öffenen. wie ? (http://www.expert-advisor.com/forum/showthread.php?t=2366)

daysofthunder 13.08.12 14:30

trailing stop order öffenen. wie ?
 
so nachdem ich nun meinen einstiegspunkt gefiltert habe und der log den anzeigt, würde mich nun folgendes interessieren.

wie macht man eigentlich eine order auf ?
setzt einen trailing stop ?
muss man den laufend selber neu setzen oder haben die broker ne automatik die selbst mitzieht ?

schliessen tut sich die order sicher beim unterschreiten des stops selbst oder ?

ehirsch 13.08.12 14:39

Welche Software benutzt du?

daysofthunder 13.08.12 15:43

bis jetzt teste ich nur auf metatrader4

ehirsch 13.08.12 16:16

Wenn du F9 drückst, so öffnet sich die Order Maske mit den Auswahlmöglichkeiten: "Sofortige Ausführung" bzw. "Pending Order". Sofortige Ausführung ist klar, du brauchst nur noch oberhalb dieses Buttons das Volumen auswählen und wenn du willst den SL (was ich dir raten würde) und den TP setzen. Dann einfach auf buy oder sell drücken.
Die Pending order ist eine order die du schon vorher am Broker platzierst. Wählst du diese aus, so musst du dich fragen, ob du zu einem gewissen Preis, der oberhalb des aktuellen Preises liegt, kaufen willst (buy order), oder vielleicht dort verkaufen willst (sell limit); oder ob du zu einem gewissen Preis, der unterhalb des aktuellen Preises liegt verkaufen willst (sell order), oder vielleicht dort kaufen willst (buy limit). Achte darauf, dass du nicht limit mit order verwechselst, aber normalerweise bekommst du einen Fehler vom Mt4:p

Der Trailingstop beim Mt4 liegt auf deinem PC oder deinem VPS und nicht beim Broker. Das heißt, wenn du den MT4 schließt ist auch der Trailingstop weg, nicht aber dein SL oder TP, denn die liegen ja beim Broker. So und nun happy trading :-)

daysofthunder 13.08.12 17:47

ich meinte programmiertechnisch.

kann mir mal einer die ordersend funktion genau erklären ?

Blu_Royal 13.08.12 22:17

hi,

also die Ordersend funktion sieht in den meisten fällen so aus:

if ("das was du siehst" == "das was du suchst"){
ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0," Short",12345,0,Green);
if(ticket < 0){
Print("OrderSend failed with error #", GetLastError());}

Symbol() ist das aktuelle Symbol auf dem der EA läuft. Lots, Bid, und Slippage kennst du hoffentlich. Short ist die Bemerkung, 12345 ist die Magicnumber. Die null danach ist die Verfallszeit, die macht allerdings bei einem OP_SELL keinen sinn. Und Green ist für die Farbe des Pfeils im Chartfenster. Wenn du weitere fragen hast:
OrderSend - MQL4 Documentation

Einen TrailingStop kann man nicht einfach setzen, du musst mit einer Schleife die Stops nachziehen. Das sieht dann so aus:

if (OrdersTotal() > 0 ){
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--){
OrderSelect(pos, SELECT_BY_POS);
if (OrderType() == OP_BUY){
if ((Trailing == true) && (OrderProfit() > 1)){
if ((Bid - ((TrailingStop*Point) + (TrailingStep*Point))) > OrderStopLoss()){
if ((Bid - ((TrailingStop*Point) + (TrailingStep*Point))) > OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),(Bid - (TrailingStop*Point)),OrderTakeProfit(),0,Green);} }}
if (OrderType() == OP_SELL){
if ((Trailing == true) && (OrderProfit() > 1)){
if ((Ask + ((TrailingStop*Point) + (TrailingStep*Point))) < OrderStopLoss()){
if ((Ask + ((TrailingStop*Point) + (TrailingStep*Point))) < OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),(Ask + (TrailingStop*Point)),OrderTakeProfit(),0,Green);} }}

Hoffe ich konnte ein bisschen helfen.

daysofthunder 14.08.12 09:39

ja ist schon mal was ich suche.

was bedeutet *point ?
das ist dann sozusagen prozentual oder ?
weil damit bin ich nicht klar gekommen.

also wäre nen trst von 12 dann:

if ((Bid - 12) > OrderStopLoss()){

richtig ?

daysofthunder 14.08.12 10:09

also wenn der z.b. dow bei 13000 punkten 25 anteile kaufen soll und nen stop 12 pkt drunter. stimmt dann diese zeile ? oder muss das anders

OrderSend(Symbol(),
OP_BUYLIMIT, //kaufen wenn drüber
25, //25 stk
13000, //dow 13000
1, //-+1 pkt unterschied
13000-12, //stop
NULL, //kein take profit
"My order #2", //infozeile
1234, //selbstdefinierte ident nummer
0, //kein ablauf
Green); //grün anzeigen

daysofthunder 14.08.12 11:28

wenn ich den code jetzt starte kommt error 4109 Trade is not allowed.

wieso das denn ?

Blu_Royal 14.08.12 12:31

Also Point ist die letzte Dezimalstelle abhängig vom Broker bei 5 digit Broker ist 160*Point also 0,00160.
4109 heisst dass in deinem Mt4 Terminal Extras\Optionen\Expert Advisor - "Life trading zulassen" abgehakt werden muss

if ((Bid - 12) > OrderStopLoss()){ //würde gehen


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