![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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!
Ich freue mich darauf, deine Tricks zu lernen und dir meine zu zeigen.
Hallo. Ich freue mich darauf, Ihre Tricks zu lernen und Ihnen meine zu zeigen.
In diesem Forum findest du eine Menge toller Sachen.
Lies und benutze die Suchfunktion ohne jede Einschränkung!!!
Fühlen Sie sich frei, alles zu fragen ... Hier gibt es eine Menge großartiger Mitwirkender/Helfer.
FerruFx
In diesem Code ist der Trailing-Stop auf 45 Pips eingestellt. Aber der Trailing-Stop scheint nicht aktiviert zu werden, bis er sich um 45 Pips bewegt. Wie müsste ich es ändern, um den Trailing-Stop zu aktivieren, wenn der Handel platziert wird?
extern string Remark1 = "== Main Settings ==";
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = true;
extern double Lots = 4;
extern int Slippage = 2;
extern bool UseStopLoss = false;
extern int StopLoss = 100;
extern bool UseTakeProfit = false;
extern int TakeProfit = 15;
extern bool UseTrailingStop = true;
extern int TrailingStop = 45;
extern bool MoveStopOnce = False;
extern int MoveStopWhenPrice = 50;
extern int MoveStopTo = 1;
extern int MaxConcurrentTrades = 2;
//Version 2.01
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderStopLoss() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
Geändert in Rot
Ich habe die Änderungen in rot, aber jetzt die EA doesnt scheinen zu arbeiten. Ich werde den ganzen EA posten, damit Sie einen Blick darauf werfen können. Danke!
Stellen Sie sicher, dass Sie () nach orderstoploss einfügen
Cool, das war's!
Wie wäre es mit diesem Indikator....
Könnte er so modifiziert werden, dass die Preise je nach Eröffnungszeitpunkt unterschiedliche Farben aufweisen? Zum Beispiel, wenn er höher als der vorherige Balken eröffnet, wäre der Preis grün, wenn er niedriger ist, dann rot und wenn er gleichmäßig ist, dann gelb? Und diese Farben können ausgewählt werden? Könnten Sie es auch erweitern, um 10 Eröffnungen statt nur 6 anzuzeigen?
Wie würde ich bei dem EA, den wir gerade repariert haben, eine Eingabeeinstellung wie "Pips to Activate Trailing Stop" vornehmen? Ich habe dies in einem anderen EA aber unsicher, wie es zu codieren.
BestellungKommentar()
BestellungTicket()
BestellungLose()
BestellungStopLoss()
BestellungGewinnmitnahme()
OrderOpenTime()
Dies sind alles potenzielle Tools zur Auftragsfilterung.
Was macht diese spezifischen Trades sonst noch einzigartig?
BestellungKommentar()
OrderTicket()
BestellungLose()
BestellungStopLoss()
BestellungGewinnmitnahme()
OrderOpenTime()
Dies sind alles potentielle Werkzeuge zum Filtern von Aufträgen.
Was macht diese speziellen Berufe noch einzigartig?Zwei der wichtigsten für die Filterung von Aufträgen sind OrderSymbol() und OrderMagicNumber(). Ein weiteres erwähnenswertes Werkzeug ist OrderComment().
Am besten geben Sie einen dieser Befehle in den Metaeditor ein, klicken dann auf das Wort asnd und drücken dann F1. Dadurch wird die Hilfe angezeigt und alle Bestellfunktionen aufgelistet.
Viel Spaß beim Programmieren,
Hiachiever
OrderComment verwenden
Seien Sie vorsichtig, wenn Sie OrderComment() zur Identifizierung von Geschäften verwenden. Manchmal fügt der Broker dem Kommentar Zeichen hinzu.
Am besten ist es, Folgendes zu verwenden
if (StringFind(OrderComment(), UserComment, 0) > 0)
{
// Order identifiziert durch UserComment in OrderComment gefunden
}
anstelle von
if (Bestellkommentar() == Benutzerkommentar)
{
// Auftrag könnte durch UserComment identifiziert werden
// wenn OrderComment nicht vom Broker geändert wurde
}
Robert
Schließen von Geschäften bei beakeven
..............