Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3823
Beiträge: 36909
Benutzer: 6.071
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: Roerich
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 7 Stunden
- Roerich
vor 7 Stunden
- John_Liver...
vor 8 Stunden
- harry1001
vor einem Tag
- supadog
vor einem Tag
- POCJonah7

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 47
Gesamt: 50
Team: 0
Team:  
Benutzer:  jimydirektsaft, nobtrade, tbooo
Freunde anzeigen

Empfehlungen

Werbung

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Wink automatische (einmalige) Veränderung SL - für Scalper-EA

Hallo, liebe TradingGemeinde,
auf dem Weg MQL4 step by step zu erlernen, habe ich bereits einen kleinen Scalper-EA geschrieben, der auch tatsächlich funktioniert. TP = 10pip, SL (als Notstop) = 30pip - ansonsten Exit-Bedingungen). Der nächste Schritt sollte nun das Nachziehen dieses Stops sein; - und zwar (mit einem Ruck) auf 4pip Profit, wenn Kurs >= 7pip im Profit liegt.
Im Netz habe ich zwar unzählige Beispiele für SL`s und TrailingStops gefunden, schaffe es aber einfach nicht, diese auf meinen speziellen Wunsch zu übertragen.
Über Eure Unterstützung würde ich mich sehr freuen.
LG. piptrade
  #2 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

du musst prüfen ob zb bei buy der bid-wert - mindest Stoploss größer ist als orderopenprice + 7 * Point
Da du es in Pips angeben möchtest musst du 7 * Point rechnen
Und wenn das zutrifft OrderModify
fertig
  #3 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo, Top_SecreT,
hab mal versucht Deinen Gedanken umzusetzen. Könnte das so annähernd richtig sei ?

int start()
{
if(OrderSelect(MAGICMA, SELECT_BY_TICKET)==true)
{
switch(OrderType())
{
case OP_BUY:
if (Bid - mindestStopLoss >= OrderOpenPrice + 7* Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid + 4 * Point, 0, 0, Blue);
}
case OP_SELL:
if (Ask + mindestStopLoss <= OrderOpenPrice - 7* Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid - 4 * Point, 0, 0, Blue);
}
}
}
else
Print("OrderSelect has not been able to find the order ", MAGICMA, ":", GetLastError());
return(0);
}
  #4 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Ja so dachte ich mir das.
2 Sachen noch
ich weiß nicht wie du jetzt mindestStopLoss definiert hast musste mal gucken das kann man mit MarketInfo() und MODE_STOPLEVEL abfragen
und 2. bei OrderModify muss es nicht heißen Bid + 4 * Point sondern OrderOpenPrice() + 4 * Point
Und bei SELL dann - statt +
  #5 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Anhang zum code:

Nach dem Kompilieren werden keine Fehler angezeigt, - könnte also ggf. richtig sein. Allerdings erscheinen 2 Warnungen: OrderModify - Rückgabewert sollte geprüft werden ! - Wie ergänze ich den code ? - Könntest Du mir nochmals helfen ? Danke bereits im Vorraus.

LG. piptrade
  #6 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Den Rückgabewert prüfst du indem du einfach noch mal ein if um OrderModify machst
Code:
if(!OrderModify(...)){
    Print("Fehler beim Ändern der Position: "+GetLastError());
}
  #7 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

... jetzt warst Du schneller als ich !

Also den code hab ich geändert - hoffentlich richtig !

1.: OrderModify(OrderTicket(),OrderOpenPrice() + 4 * Point, 0, 0, Blue);
2.: OrderModify(OrderTicket(),OrderOpenPrice() - 4 * Point, 0, 0, Red);

Dennnoch tauchen die Warnungen zu "OrderModify" - man solle den Rückgabewert prüfen - immer noch auf. Was tun ??? (Wie kann ich diese Überprüfung durchführen ?)

Ich hoffe, nach dieser Erledigung ist dann alles o.k..

Wie gesagt, bis hierher schon einmal recht herzlichen Dank.

LG: piptrade
  #8 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

... habe die Überprüfung des Rückgabewert, so wie beschrieben, vorgenommen:

case OP_BUY: // für OP_SELL analog
if (Bid - mindestStopLoss >= OrderOpenPrice + 7* Point)
{
OrderModify(OrderTicket(),OrderOpenPrice() + 4 * Point, 0, 0, Blue); // Warnung: Rückgabewert von OrderModify sollte geprüft werden !
}
if(!OrderModify(OrderTicket(),OrderOpenPrice() + 4 * Point, 0, 0, Blue))
{
Print("Fehler beim Ändern der Position: "+GetLastError());
}

... dennoch bleiben die Warnungen zur Überprüfung des Rückgabewertes bestehen ! Was nun ??
  #9 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Ach bist du niedlich xD

Also erstmal hast du jetzt bei OrderModify einen Parameter vergessen.
Es muss nicht
OrderModify(OrderTicket(),OrderOpenPrice() + 4 * Point, 0, 0, Blue)
heißen, sondern
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + 4 * Point, 0, 0, Blue)

Dann zur Überprüfung des Rückgabewertes musst du nicht den Code zusätzlich einbauen.

So wie du es jetzt geschrieben hast führst du einmal OrderModify aus und dann führst du es nochmal aus mit Überprüfung des Rückgabewertes.

Verstehst du was ich meine?

Code:
if(!OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + 4 * Point, 0, 0, Blue)){
    Print("Fehler beim Ändern der Position: "+GetLastError());
}
Dieser Code führt schon das Modify aus. Übersetzt steht da sozusagen wenn OrderModify fehlschlägt dann gebe folgende Meldung aus.

Also mit ! negierst du. Wenn nicht OrderModify dann....



Hoffe das ist verständlich
  #10 (permalink)  
Alt 12.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

... alles völlig logisch und durchaus auch halbwegs verständlich. Und so sieht der code jetzt aus:

case OP_BUY: // analog für OP_SELL
if (Bid - mindestStopLoss >= OrderOpenPrice + 7* Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice() + 4 * Point, 0, 0, Blue);
// Warnung: "Rückgabewert von OrderModify sollte geprüft werden" - bleibt bestehen !
}
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ord erOpenPrice() + 4 * Point, 0, 0, Blue))
{
Print("Fehler beim Ändern der Position: "+GetLastError());
}

Obwohl ich das Prinziep der "Umkehrung" verstanden habe und jetzt keinen Fehler mehr im code entdecken kann - die Kompelier-Warnung bleibt bestehen: "Überprüfe Rückgabewert".
(Ich bekomme schon ein schlechtes Gewissen - ist da schon wieder etwas falsch ?)
LG. piptrade
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, scalper sl, sl, stoploss, stoploss ea, stoploss nachziehen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------