Fixe SL u. TP im MT4

Einloggen oder registrieren, um einen Kommentar zu schreiben
AndrewDjosten
17
AndrewDjosten  

hallo

brauche eure Hlfe :-)

Wie/wo kann ich fixe SL und TP einrichten? Diese Einstellung soll mir ermöglichen, dass ich bei jeder Positionseröffnung (Ein-Klick Handel) automatisch ein von mir vorgegebenes SL und TP habe.

Dies ist beim Scalping enorm wichtig.

Carl Schreiber
Moderator
8266
Carl Schreiber  
Such mal unter den Artikeln oder in der CodeBase - das Problem haben viele und wurde mehrfach gelöst!!
AndrewDjosten
17
AndrewDjosten  

danke für den Hinweis... bin bereits seit 2 Stunden auf der Suche , hab aber noch nichts Passendes gefunden.

Aber ich gebe nicht auf :-)

Würde mich trotzdem freuen, falls es jemand bereits weiß oder zumindest sagen kann, wo es GENAU steht.


gruß an alle

Carl Schreiber
Moderator
8266
Carl Schreiber  

Zum Beispiel auf der ersten Seite der Artikel in deutsch: "Entwicklung eines plattformübergreifenden Expert Advisors zur Festlegung von StopLoss und TakeProfit basierend auf den Risikoeinstellungen." Nicht gefunden - oder nicht gesucht?

Außerdem gibt es die Artikelserie (ist aber noch nicht ganz fertig): "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil X): Kompatibilität mit MQL4 - Ereignisse der Positionseröffnung und der Aktivierung von Pending-Orders".

Riskiere mal einen Blick hinein und ans Ende...

AndrewDjosten
17
AndrewDjosten  

Danke für deine Hilfe.

Habe mir die Artikel durchgelesen, allerdings verstehe ich v. Programmieren null-Komma-nichts.

Ich bin vielmehr davon ausgegangen, dass man im MT4 mit 3-4 Mausklicks die entsprechenden Eingabe-Felder findet und sie dann auch simple mit den gewünschten Parametern bedienen kann.

Otto Pauser
1573
Otto Pauser  
AndrewDjosten:

Danke für deine Hilfe.

Habe mir die Artikel durchgelesen, allerdings verstehe ich v. Programmieren null-Komma-nichts.

Ich bin vielmehr davon ausgegangen, dass man im MT4 mit 3-4 Mausklicks die entsprechenden Eingabe-Felder findet und sie dann auch simple mit den gewünschten Parametern bedienen kann.

Ich hab zwar schon lange nix mehr für den MT4 geproggt, im MT5 ist das alles viel leichter, aber .......

Siehe dazu den Link https://www.youtube.com/watch?v=IT2WinT4yjY

//+------------------------------------------------------------------+
//|                                                    Auto_SLTP.mq4 |
//|                                Copyright © 2019 Ing. Otto Pauser |
//|                       https://www.mql5.com/de/users/kronenchakra |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019 Ing. Otto Pauser"
#property link      "https://www.mql5.com/de/users/kronenchakra"
#property version   "1.00"
#property strict

input int inp_SL = 20;       // SL(points)
input int inp_TP = 20;       // TP(points)

double slDistance,
       tpDistance;
double SL,TP;

int OnInit()
{
   slDistance=inp_SL*_Point; // sl as price distance
   tpDistance=inp_TP*_Point; // tp as price distance
   return(INIT_SUCCEEDED);
}

void OnTick()
{
   int total=OrdersTotal(); 
   for(int pos=0;pos<total;pos++) 
      if(OrderSelect(pos,SELECT_BY_POS)) 
         if(OrderSymbol()==_Symbol)
            {
               if(OrderType()==OP_BUY)
                  {
                     SL=OrderOpenPrice()-slDistance;
                     TP=OrderOpenPrice()+slDistance;
                     if(OrderStopLoss()==NULL)
                        OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),OrderExpiration());
                     if(OrderTakeProfit()==NULL)
                        OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TP,OrderExpiration());
                  }
               if(OrderType()==OP_SELL)
                  {
                     SL=OrderOpenPrice()+slDistance;
                     TP=OrderOpenPrice()-slDistance;
                     if(OrderStopLoss()==NULL)
                        OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),OrderExpiration());
                     if(OrderTakeProfit()==NULL)
                        OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TP,OrderExpiration());

                  }
            }
}

Ist nicht getestet, sollte aber funktionieren. Ich teste das wenn der Markt wieder offen ist.

Dateien:
AndrewDjosten
17
AndrewDjosten  
Werde es ausprobieren, vielen herzlichen Dank :-)
Otto Pauser
1573
Otto Pauser  

Und für die Interessierten, so sieht das in MQL5 aus:

//+------------------------------------------------------------------+
//|                                                    Auto_SLTP.mq5 |
//|                               Copyright © 2019, Ing. Otto Pauser |
//|                       https://www.mql5.com/de/users/kronenchakra |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Ing. Otto Pauser"
#property link      "https://www.mql5.com/de/users/kronenchakra"
#property version   "1.00"

#include <Trade\TradeExt.mqh>

input int inp_SL = 20;       // SL(points)
input int inp_TP = 20;       // TP(points)

double slDistance,
       tpDistance;

int OnInit()
{
   slDistance=inp_SL*_Point; // sl as price distance
   tpDistance=inp_TP*_Point; // tp as price distance
   return(INIT_SUCCEEDED);
}

void OnTick()
{
   if(!Trade.OnTick())
      return;

   if(Trade.PosOpened)
      switch(Trade.PosType)
        {
         case POSITION_TYPE_BUY :
                     if(Trade.PosSL==NULL) Trade.DoModifyBuySL(slDistance);
                     if(Trade.PosTP==NULL) Trade.DoModifyBuyTP(tpDistance);
         break;
         case POSITION_TYPE_SELL :
                     if(Trade.PosSL==NULL) Trade.DoModifySellSL(slDistance);
                     if(Trade.PosTP==NULL) Trade.DoModifySellTP(tpDistance);
         break;
        }
}

Allerdings benötigt das eine Erweiterung der Systemlibrary (TradeExt.mqh).

Die war aber zu viel Arbeit um sie zu verschenken - sorry.

Otto Pauser
1573
Otto Pauser  

Kleines Update zu Auto_SLTP

SL, TP werden, falls nicht gesetzt jetzt gleichzeitig gesetzt.

Zu beachten ist, daß der Spread nicht mit gerechnet ist.

Also SL 7 bei einem Spread von 10 geht nicht. Das geht so wie so nicht!

SL und TP können erst nach dem Eintreffen eines neuen Ticks auf diese Art berechnet werden.

Dateien:
Einloggen oder registrieren, um einen Kommentar zu schreiben