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

MA-EA 22.06.18 19:00

Trailing Stop
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Seit etlichen Stunden versuche ich einen Trailing Stop hin zu bekommen. Er soll alle 7 Pips den SL hinter ASK/BID herziehen. Einfacher SL und TP funktionieren einwandfrei.

Ich hab alles Mögliche probiert und gedreht und studiert und getestet und mir das Hirn zerbrochen. Aber er wird einfach nicht hinter her gezogen. Fehlermeldungen oder sowas kommen auch nicht. :(
Code:

extern string TS="Trailing Stop";
extern bool Trailing_Stop=true;//
 extern int Trailing_Stop_Step=7;//Bei ActivTrades müssen SL/TP anscheinend mindestens 5 sein

Code:

double M_CA=MarketInfo(Symbol(),MODE_ASK);
double M_CB=MarketInfo(Symbol(),MODE_BID);

Code:

if(Trailing_Stop==true){
 
  double M_CB_SL_TSS=NormalizeDouble(M_CB-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask
 
  double M_CA_SL_TSS=NormalizeDouble(M_CA+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid

  double B_TS=NormalizeDouble(M_CB-Stoploss*_Point,_Digits);
 
  double S_TS=NormalizeDouble(M_CA+Stoploss*_Point,_Digits);

}

Code:

//Modify Orders (Trailing Stop nach ziehen)
if(Trailing_Stop==true){

  for(i=OrdersTotal()-1;i>=0;i--){
    if(OrderSelect(i,SELECT_BY_TICKET)){

      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){//modify Buy
        if(OrderStopLoss()<M_CB_SL_TSS)OrderModify(OrderTicket(),OrderOpenPrice(),B_TS,OrderTakeProfit(),0,LawnGreen);}// ?

      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){//modify Sell
        if(OrderStopLoss()>M_CA_SL_TSS)OrderModify(OrderTicket(),OrderOpenPrice(),S_TS,OrderTakeProfit(),0,Gold);}}}}// ?


MA-EA 27.06.18 16:44

Benutzt hier Niemand nen Trailing Stop?


Er wird nie hinterher gezogen und ich hab nicht die leisteste Ahnung warum.


Anscheinend werden auch keine Orders modifiziert.

traderdoc 27.06.18 19:21

Na Du weißt doch, wie man die Fehler eingrenzen kann.

traderdoc

MA-EA 27.06.18 22:40

Entweder stimmt die OrderModify Funktion nicht, oder die entsprechenden Bedingungen sind nicht erfüllt. Aber es kommen keine Fehlermeldungen oder Warnungen.

Aber eigentlich ist doch Alles richtig. :confused: Hab wirklich keinen Schimmer was nicht stimmt.



extern bool Trailing_Stop=true;
extern int Trailing_Stop_Step=15;


double M_CA=MarketInfo(Symbol(),MODE_ASK);
double M_CB=MarketInfo(Symbol(),MODE_BID);


if(Trailing_Stop==true){

//Bid - Stoploss = neuer Buy "SL", der bei OrderModify gesendet werden soll
double B_TS=NormalizeDouble(M_CB-Stoploss*_Point,_Digits);

//Ask + Stoploss = neuer Sell "SL", der bei OrderModify gesendet werden soll
double S_TS=NormalizeDouble(M_CA+Stoploss*_Point,_Digits) ;


//neuer Buy "SL" - Trailing Stop Step.
//Wenn alter Buy SL kleiner ist, soll neuer Buy "SL" (B_TS) gesendet werden.
double B_TS_TSS=NormalizeDouble(B_TS-Trailing_Stop_Step*_Point,_Digits);

//neuer Sell "SL" - Trailing Stop Step.
//Wenn alter Sell SL kleiner ist, soll neuer Sell "SL" (B_TS) gesendet werden.
double S_TS_TSS=NormalizeDouble(S_TS+Trailing_Stop_Step*_ Point,_Digits);

}


if(Trailing_Stop==true){

for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_TICKET)){

if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Ma gicNumber&&OrderSymbol()==Symbol()){//modify Buy
if(NormalizeDouble(OrderStopLoss()<B_TS_TSS*_Point ,_Digits)){
OrderModify(OrderTicket(),OrderOpenPrice(),B_TS,Or derTakeProfit(),0,LawnGreen);}}

if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_ MagicNumber&&OrderSymbol()==Symbol()){//modify Sell
if(NormalizeDouble(OrderStopLoss()>S_TS_TSS*_Point ,_Digits)){
OrderModify(OrderTicket(),OrderOpenPrice(),S_TS,Or derTakeProfit(),0,Gold);}}}}}




Edit:Kam nen paar Mal die Meldung "Trade Context is busy" oder so. Aber normaler SL und TP werden ja richtig gesetzt...

traderdoc 27.06.18 22:52

Tja, was soll ich bei solch gravierenden Fehlern noch schreiben?
Sorry, aber da fällt mir wirklich nichts mehr zu ein, wenn Du hier große EAs schreiben willst:

for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_TICKET)){

ist denn i die Ticketnummer?

traderdoc

MA-EA 28.06.18 15:07

Liste der Anhänge anzeigen (Anzahl: 1)
So wird der TS auch nie nach gezogen:

for(i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(ticket,SELECT_BY_TICKET)){


Liegts vielleicht daran, dass ein Buy und ein Sell geöffnet werden?

Und diese Schleifen hab ich nie kapiert. :(


Edit:Fehler gibts keine, ausser bei EURNZD "invalid SL or TP"

Leopold 28.06.18 15:57

Hallo MA-EA (Elite Mitglied),

du hast das scheinbar nicht verstanden, das traderdoc vorhin geschrieben hat.
Du musst SELECT_BY_POS verwenden!

https://docs.mql4.com/trading/orderselect

---Leopold---

MA-EA 28.06.18 16:20

select_by_pos wenn mit ner Schleife gearbeitet werden soll. Soweit ich das kapiert hab.


Aber wie muss es aussehn mit select_by_ticket ? :confused:


Ich kapier überhaupt nix mehr. :(

Leopold 28.06.18 16:24

Hallo,

da du das in einer Schleife mit dem Zähler i hast:

if(OrderSelect(i, SELECT_BY_POS))
....

wenn du mit der Ticketnummer arbeiten willst benötigst du diese Schleife nicht, musst aber die Ticketnummer wissen.

bitte schau dir die Doku an!

---Leopold---

traderdoc 28.06.18 17:06

@MA-EA, ich glaube fest, dass Du deshalb nix mehr kapierst, wie Du es selber geschrieben hast, weil Dir einfach die Grundlagen fehlen. Denn diese Grundlagen sind überall nachlesbar und müssen einfach sitzen, sonst fragst Du Dir hier den Wolf. Ein Beispiel war der damalige Thread mit dem CCI.

Also, Hausaufgaben erledigen und erst dann große EAs programmieren.

traderdoc


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