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)
-   -   EA für Trailing Stop (http://www.expert-advisor.com/forum/showthread.php?t=3493)

uagnet 24.02.14 22:00

EA für Trailing Stop
 
Hi Leute, ich bin echt am verzweifeln. Ich habe jetzt schon sämtliche EA's versucht die einen Trailing Stop tätigen. Leider ist nichts passendes dabei.
Ich hoffe Ihr könnt mir helfen. ich erkläre mal kurz den Bedarf:

Der EA soll in mehreren Steps den SL nachziehen (3-4 Steps), also nicht wie beim Trailing Stop, wo der SL ständig nachgezogen wird, sondern nach einem bestimmten erreichten + Pips

Also so z.B:

1. Step: wenn Gewinn bei + 10 Pips liegt zieht der EA den SL auf +1 Pips
2. Step: wenn Gewinn bei + 30 Pips liegt zieht der EA den SL auf +20 Pips
3. Step: wenn Gewinn bei + 50 Pips liegt zieht der EA den SL auf +40 Pips
4. Step: wenn Gewinn bei + 100 Pips liegt zieht der EA den SL auf +90 Pips

Ich hoffe ihr versteht mich, wie ich das meine und kann mir etwas empfehlen oder programmieren (ich zahle auch)

Danke

steve468 25.02.14 14:27

Hallo Uagnet,

für Step1 könntest Du eine Braekeven Routine nutzen und für Step 2-4 TrailingStop mit TrailingStep, dadurch wird der SL Immer nur in einen bestimmten Step hinter her gezogen.

Gruß Steve

uagnet 25.02.14 14:38

Zitat:

Zitat von steve468 (Beitrag 25350)
Hallo Uagnet,

für Step1 könntest Du eine Braekeven Routine nutzen und für Step 2-4 TrailingStop mit TrailingStep, dadurch wird der SL Immer nur in einen bestimmten Step hinter her gezogen.

Gruß Steve

Hallo, vielen dank für deine Rückantwort. 2 Fragen habe ich noch zu deiner Umsetzungsvariante.

1. Breakeven Routine ? Gibt es da einen EA oder indikator oder kann ich das im MT4 eistellen ?

2. ich habe in meinem MT4 nur den Standard Trailingstop ! Gibt es wo einen Trailingstop mit trailingstep ? habe auch schon mal im Web danach gesucht aber leider keinen gefunden.

Sorry für meine Unwissenheit :-(

steve468 25.02.14 15:24

Also für Breakeven wirst Du sicher im Netz was finden.
Sieht in etwa so aus :

void MoveBreakEven()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(BreakEven>0)
{
if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*Point)
{
if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),Digits)<0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(OrderOpenPrice()+0*Point,Digits),OrderTak eProfit(),0,Blue);
return(0);
}
}
}
}
else
{
if(BreakEven>0)
{
if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*Point)
{
if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),Digits)<0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(OrderOpenPrice()-0*Point,Digits),OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
}

Und für TrailingStep etwa so:

void TrailingPositions(int trailingStopLoss, int trailingStep, int magicNumber) {
double bid = 0;
double ask = 0;
for (int i = 0; i < OrdersTotal(); i++) {
if (!(OrderSelect(i, SELECT_BY_POS)) || OrderSymbol() != Symbol() || OrderMagicNumber() != magicNumber) {
continue;
}

bid = MarketInfo(OrderSymbol(), MODE_BID);
ask = MarketInfo(OrderSymbol(), MODE_ASK);

if (OrderType() == OP_BUY) {
if (bid - OrderOpenPrice() > trailingStopLoss * Point) {
if (OrderStopLoss() < bid - (trailingStopLoss + trailingStep) * Point || OrderStopLoss() == 0) {
OrderModify(OrderTicket(), OrderOpenPrice(), bid - trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration());

}
}
} else if (OrderType() == OP_SELL) {
if (OrderOpenPrice() - ask > trailingStopLoss * Point) {
if (OrderStopLoss() > ask + (trailingStopLoss + trailingStep) * Point || OrderStopLoss() == 0) {
OrderModify(OrderTicket(), OrderOpenPrice(), ask + trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration());

}
}
}
}
}

Falls Du hilfe brauchst, dann gib bescheid.

uagnet 25.02.14 15:29

danke dir, werde das gleich mal testen

madmike90 10.04.14 12:19

Hallo, ich habe mir auch mal die Freiheit genommen den Trailing Stop auszuprobieren. Ich bekomme aber immer die Warnung :


"return value of 'OrderModify' should be checked"
bei der Zeile:

OrderModify(OrderTicket(), OrderOpenPrice(), bid - trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration());

sowie

OrderModify(OrderTicket(), OrderOpenPrice(), ask + trailingStopLoss * Point, OrderTakeProfit(), OrderExpiration());



kann mir jemand einen Tipp geben wie ich das beheben kann?

liegt das vielleicht an der neuen Version des MetaEditors?

vielen Dank schon mal
mike

fxdaytrader 10.04.14 12:26

bool result;

result = OrderModify...

result = OrderModify...

madmike90 10.04.14 12:38

klasse! danke für die schnelle Antwort:)


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