- Bitte verwende die Code-Darstellung mit
oder Alt+s in der Editor-Zeile für Posts (Du kannst das auch im Nachhinein noch ändern.
- Wenn ein Programm compiliert, aber nicht tut was es soll, ist die erste Wahl bzw. der nächste Entwicklungsschritt der Debugger, lies dazu:
Tracing, Debugging und strukturelle Analyse von Quellcodes: https://www.metatrader5.com/de/metaeditor/help/development/debug
Zur Fehlerbehebung von MQL5-Programmen (Debugging): https://www.mql5.com/de/articles/654
Einführung in MQL5: Schreiben eines einfachen Expert Advisor und benutzerdefinierten Indikators, Siehe Ende: Starten und Debuggen: https://www.mql5.com/de/articles/35
Die Fehlerverarbeitung und Protokollierung in MQL5: https://www.mql5.com/de/articles/2041
https://www.mql5.com/de/articles/272
Fehler finden und Protokollierung: https://www.mql5.com/de/articles/150

Code-Debugging - Programme entwickeln - MetaEditor Hilfe
- www.metatrader5.com
MetaEditor hat einen eingebauten Debugger, mit dem Sie die Programmausführung Schritt für Schritt (durch einzelne Funktionen) ü...

Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Hallo liebe Leute
Ich habe da (vermutlich) eine peinliche Frage !
Ich habe eine EA zusammengebaut welcher von einem Externen Indikator gefütter wird.
Der Einstieg ist sehr simpel gehalten. Ein Alarmt löst einen Order aus. Und das funktioniert auch.
Aber der Trailingstop zieht einfach nicht nach. (?)
Darüber hinaus wird der Stoploss und der TP mit Werten übergeben welche ich nicht eingestellt habe.
Ich bin also etwas verwirrt und frage ein nach einen Guten Rat von Eurer Seite.
-------------------
#include <Trade/Trade.mqh>;
CTrade trade;
input int TslPoint = 65;
input int TtpPoint = 45;
input int TslTrailing = 10;
input double Lot = 0.2;
input ENUM_TIMEFRAMES erste_period=PERIOD_M5; // Periode M5
input ENUM_TIMEFRAMES zweite_period=PERIOD_M15; // Periode M15
input ENUM_TIMEFRAMES dritte_period=PERIOD_H1; // Periode H4
void OnTick()
{
int handle;
int handle2;
int handle3;
int handleDown;
int handleUp;
string name ="Market\\UniversalMA MT5.ex5";
handle = iCustom(_Symbol,erste_period,name);
handle2 = iCustom(_Symbol,zweite_period,name);
handle3 = iCustom(_Symbol,dritte_period,name);
handleDown = iCustom(_Symbol,erste_period,name);
handleUp = iCustom(_Symbol,erste_period,name);
// double indi_Status_H1[3];
// CopyBuffer(handle3,1,1,1,indi_Status_H1);
double indi_Status_M5[3];
CopyBuffer(handle,2,1,1,indi_Status_M5);
// double indi_Status_M30[3];
// CopyBuffer(handle2,1,1,1,indi_Status_M30);
double indi_Status_Down[3];
CopyBuffer(handleDown,5,1,1,indi_Status_Down);
double indi_Status_Up[3];
CopyBuffer(handleUp,4,1,1,indi_Status_Up);
//Ask Preis berechnen
double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) ,_Digits);
//Bid Preisberechnen
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID) ,_Digits);
if ((PositionsTotal()<1) && (indi_Status_Down[0] != 0))
{
trade.Sell(Lot,NULL,Bid,(Bid+TslPoint *_Point),(Bid-TtpPoint *_Point),NULL);
}
if ((PositionsTotal()<1) && (indi_Status_Up[0] != 0))
{
trade.Buy(Lot,NULL,Ask,(Ask-TslPoint*_Point),(Ask+TtpPoint *_Point),NULL);
}
} // Das Ende der OnTick Funktion !
void CheckTrailingStopAsk(double Ask)
{
// Zielsetzung des Trailing Stop auf 150 Punkte
double SL=NormalizeDouble(Ask-TslPoint*_Point,_Digits);
double TP=NormalizeDouble(Ask+TtpPoint*_Point,_Digits);
// Überprüfung aller offenen Positionen im aktuelle Symbol
for( int i=PositionsTotal()-1; i>=0; i--) // Zählt alle runter von der aktuellen Position
{
string symbol=PositionGetSymbol(i); // damit erhält man das Währungspaar
if (_Symbol==symbol) // Wenn das Chart Symbol gleich wie das gewünschte Symbol
{
// zum erhalten der TicketNummer
ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
// ermittlung des aktuellen SL
double CurrentStopLoss=PositionGetDouble(POSITION_SL);
// ermittlung des aktuellen TP
// double CurrentTakeProfit=PositionGetDouble(POSITION_TP);
// wen der aktuelle SL ist unter xxx Punkte vom Ask Preis
if (CurrentStopLoss<SL)
{
// ! Dann Modifizieren wir den SL mit 10 Punkten
trade.PositionModify(PositionTicket,(CurrentStopLoss+10*_Point),0);
}
}// Ende des Symbol Loop
}// Ende des Loops
}// Ende des TrailingStop Funktion
void CheckTrailingStopBid(double Bid)
{
// Zielsetzung des Trailing Stop auf 150 Punkte
double SL=NormalizeDouble(Bid+TslPoint*_Point,_Digits);
double TP=NormalizeDouble(Bid-TtpPoint*_Point,_Digits);
// Überprüfung aller offenen Positionen im aktuelle Symbol
for( int i=PositionsTotal()-1; i>=0; i--) // Zählt alle runter von der aktuellen Position
{
string symbol=PositionGetSymbol(i); // damit erhält man das Währungspaar
if (_Symbol==symbol) // Wenn das Chart Symbol gleich wie das gewünschte Symbol
{
// zum erhalten der TicketNummer
ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
// ermittlung des aktuellen SL
double CurrentStopLoss=PositionGetDouble(POSITION_SL);
// ermittlung des aktuellen TP
// double CurrentTakeProfit=PositionGetDouble(POSITION_TP);
// wen der aktuelle SL ist unter xxx Punkte vom Ask Preis
if (CurrentStopLoss>SL)
{
// ! Dann Modifizieren wir den SL mit 10 Punkten
trade.PositionModify(PositionTicket,(CurrentStopLoss-10*_Point),0);
}
}// Ende des Symbol Loop
}// Ende des Loops
}// Ende des TrailingStop Funktion
Bitte Bitte kan mir jemand Helfen ?
Danke vorab !