MetaTrader4
Trailing Stop im MetaTrader 4: So sichern Sie Ihre Gewinne ab
Ein Trailing Stop ist ein äußerst nützliches Werkzeug, um beim Trading Gewinne abzusichern. Er verschiebt den Stop-Loss automatisch in den Gewinnbereich und hilft so, Ihre Positionen abzusichern, während Sie gleichzeitig von weiteren Kursgewinnen profitieren können. In diesem Artikel zeigen wir Ihnen, wie Sie die entsprechenden Parameter für den Trailing Stop im MetaTrader 4 festlegen können. input bool isTrailingStop = true; // Trailing Stop aktivieren
input int trailingStart = 15; // Trailing Start (Pips)
input int trailingStep = 5; // Trailing Schritt (Pips)
input int MagicNumber = 0; // Magic Number Globale Variable // Globale Variable
double myPoint = 0.0; Wenn wir diesen Expert Advisor (EA) starten, wird die OnInit()-Funktion als Erstes ausgeführt. In dieser Funktion validieren und initialisieren wir die Eingangsvariablen. int OnInit()
{
if (isTrailingStop && trailingStart <= 0){
Alert ("Parameter sind inkorrekt");
return(INIT_PARAMETERS_INCORRECT);
}
myPoint = GetPipPoint(Symbol());
return(INIT_SUCCEEDED);
} Jedes Mal, wenn eine Preisbewegung (Tick) im Chart auftritt, wird die OnTick()-Funktion aufgerufen. Innerhalb dieser Funktion wird die setTrailingStop()-Funktion aufgerufen. void OnTick()
{
//---
setTrailingStop(MagicNumber);
} Funktion setTrailingStop() void setTrailingStop(int magicNumber=0){
if (isTrailingStop==false) return;
int tOrder = 0;
string pair = "";
double sl = 0.0, tp = 0.0;
pair = Symbol();
tOrder = OrdersTotal();
for (int i=tOrder-1; i>=0; i--){
bool hrsSelect = OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() == magicNumber && StringFind(OrderSymbol(), pair, 0) == 0 ){
if (OrderType() == OP_BUY){
if ( (Bid - (trailingStart * myPoint)) >= OrderOpenPrice()
&& (Bid - ((trailingStart+trailingStep) * myPoint) >= OrderStopLoss() )
){
sl = NormalizeDouble(Bid - (trailingStart * myPoint), Digits());
if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, clrBlue)){
Print ("#", OrderTicket(), " konnte SL nicht aktualisieren");
}
}
}
if (OrderType() == OP_SELL){
if ( (Ask + (trailingStart * myPoint)) <= OrderOpenPrice()
&& ( (Ask + ((trailingStart+trailingStep) * myPoint) <= OrderStopLoss() ) || OrderStopLoss() == 0.0)
)
{
sl = NormalizeDouble(Ask + (trailingStart * myPoint), Digits() );
if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, clrBlue)){
Print ("#", OrderTicket(), " konnte SL nicht aktualisieren");
}
}
}
} // Ende der Überprüfung des MagicNumbers
}// Ende der Schleife
} Eine weitere wichtige Funktion, die benötigt wird, ist GetPipPoint(). // Funktion GetPipPoint
double GetPipPoint(string pair)
{
double point= 0.0;
int digits = (int) MarketInfo(pair, MODE_DIGITS);
if(digits == 2 || digits== 3) point= 0.01;
else if(digits== 4 || digits== 5) point= 0.0001;
return(point);
} Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar oder treten Sie unserer Gruppe bei, um sich mit anderen Tradern auszutauschen. Sie können uns auch auf t.me/codeMQL finden. Wir bieten auch die SignalForex App an. Unterstützen Sie uns, indem Sie die SignalForex App herunterladen und weiterhin nutzen, um Ihre Trading-Ergebnisse zu verbessern. Jetzt herunterladen
2021.03.30