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)
-   -   Manueller Entry => EA als TradeVerwaltung (http://www.expert-advisor.com/forum/showthread.php?t=6879)

RollsReus 05.01.21 20:57

Manueller Entry => EA als TradeVerwaltung
 
Hallo zusammen,
habe nun seit einiger Zeit keine EAs mehr geschrieben, möchte aber nun einen aufsetzen, der meinen Trade nach meinem manuellen Eingang verwaltet. Ich habe in Erinnerung, dass ich mit der magic Number arbeiten muss, aber meine Kenntnisse sind zu eingerostet, um mein Vorhaben umzusetzen. Der EA soll idealerweise auch mehrere trades gleichzeitig bedienen, wodurch ich vermutlich unterschiedliche magic Numbers benötige bzw vergeben muss. Kann mir jemand auf die Sprünge helfen, welcher Code Schnipsel mir diesbezüglich weiterhilft?

Vielen Dank vorab für Eure Hilfe.

MA-EA 05.01.21 22:47

Zitat:

Zitat von RollsReus (Beitrag 44917)
...der meinen Trade nach meinem manuellen Eingang verwaltet.

Was heißt "verwaltet"?


Die MN kann man nach OrderSend nicht mehr ändern. Jedenfalls nicht für die Order, die bereits raus ist. Das muss man vorher Alles managen.

Indikator-Trading 05.01.21 22:58

Bei einem Manuell geöffneten Trade wirst du die MagicNumber des Trades nicht kennen. Das einfachste ist es einfach alle offenen Orders durchzugehen und diese dann durch den EA zu managen, also den SL z.B. mit einem Tralingstop zu versehen oder einen Trade im Gewinn/Verlust zu schließen

RollsReus 05.01.21 23:11

Hallo zusammen,
erstmal vielen Dank für Eure Antworten.
Mit „Verwalten“ meine ich, dass insbesondere der Stop automatisch nachgezogen werden soll nachdem ich die Position manuell eingegangen bin. Das zu coden traue ich mir noch zu. Wofür ich aktuell noch keine Lösung habe ist, wie der EA erkennt dass er zB im Fx-Paar EUR/USD den Trade 1 erkennt und verwaltet und in einem anderen FX-Paar den Trade 2 verwaltet ohne sich gegenseitig in die Quere zu kommen.

Nachtrag: Die Magic Number ins Spiel zu bringen, war nur eine Idee meinerseits. Ich bin für andere Lösungen/Ideen offen und hänge diesbezüglich nicht an der MN

Indikator-Trading 05.01.21 23:30

Du brauchst OrdersTotal() um alle offenen Orders durchgehen zu können
Mit OrderSelect wählst du die jeweilige Order aus und kannst Sie dann mit allen anderen OrderFunktionen bearbeiten.

Code:

  for(int i=OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
        break;
      // Hier kommt dann ein Teil, welcher die Order verändert

    }


traderdoc 06.01.21 10:23

Prinzipiell:
1. Eine manuell geöffnete Order besitzt keine MagicNumber.
2. Orders, die nur auf verschiedenen Handelsinstrumenten basieren, benötigen keine MagicNumber.
3. Orders, die auf verschiedenen TimeFrames ein und desselben Handelinstrumentes basieren, benötigen unbedingt eine MagicNumber.
4. D.h. bzgl. 1., sollten manuell geöffnet, mehrere Orders ein und desselben Handelsinstrumentes auf verschiedenen TimeFrames existieren, dann können die nur unterschieden werden, indem beim Öffnen die dort nicht vergebbare MagicNumber in das Kommentarfeld des Auftragsfenster geschrieben wird und später nach OrderSelect() das Kommentarfeld mit OrderComment() ausgelesen wird.
Das Unterscheiden funktioniert aber auch dann nur so lange, die Ursprungsorder nicht teilgeschlossen wurde, weil dann der Inhalt des OrderComments geändert wird. Auch bei geschlossenen Order, die per SL oder TP geschlossen wurden, wird der Comment überschrieben und somit wäre die ursprüngliche Information verloren. Dann hilft nur noch die Orderkennzahlen, wie OpenPrice, OpenTime; Timeframe usw. zur Wiedererkennung in Globale Variablen zu schreiben, die im MT4 unangetastet 30 Tage erhalten bleiben, auch wenn zwischenzeitlich der PC ausgeschaltet oder auf anderem Wege die Verbindung gekappt wurde.

traderdoc

RollsReus 06.01.21 17:00

Hallo zusammen,

danke auch für die letzten beiden hilfreichen Antworten. Im aktuellen Szenario würde ich nur ein Closing des gesamten Geschäftes vornehmen. Darüber hinaus würde ich je Währungspaar auch nur einen (einzigen) Trade eingehen wollen und nicht in verschiedenen TimeFrames dasselbe FX-Paar handeln.
So wie ich die Antwort von Traderdoc verstanden habe, würde ich dadurch ein Stück weit Komplexität herausnehmen, die ich vermutlich auch mit dem derzeitigen Wissen nicht abbilden könnte.
Ich würde mein Glück jetzt zunächst mit dem Schnipsel von "Indikator-Trading" versuchen und drauf aufbauend die weiteren Punkte (Stop Loss etc) einbauen.

Vielen Dank bis hierin.

RollsReus 06.01.21 21:39

Nach dem ersten Erfolgserlebnis, dass ich beim Kompilieren keine Warnungen erhalten habe, kam in der tatsächlich Nutzung dann leider erstmal die Ernüchterung.

Habe den EA auf einen Trade angewendet, bei dem ich 40 Pips vorne war und habe den Stop Loss händisch auf 20Pips vom Einstand hinbewegt. Da ich bei 1zu1 auf Breakeven möchte (also in dem konkreten Beispiel ab 20 Pips plus), hätte der EA den Stop idealerweise auf Breakeven stellen sollen. Tat er jedoch nicht. Kann ein geneigter Leser auf meinen Code schauen und mir Unterstützung leisten: Vielen Dank vorab!

Code:


//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int init()
{
  return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void deinit()
  {
 
  }
//-------------------------------------------------------------+

int start()

{
for(int i=OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
        break;

//Trademanagement                             



  //Closing-Information
{
  if(Ask == OrderTakeProfit())
  { 
  SendNotification("TP erreicht");
  }

  return(0);
}
 
 

           
  // BreakEven       
   
      {
      if(OrderType() == OP_BUY && OrderOpenPrice() > OrderStopLoss() && ((Bid - OrderOpenPrice()) >= OrderStopLoss()))
             
                {
                OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0);
                SendNotification("SL = Break Even");
                }
                 
            if(OrderType() == OP_SELL && OrderOpenPrice() < OrderStopLoss() && ((OrderOpenPrice() - Ask) >= OrderStopLoss()))
                {
                OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0);
                SendNotification("SL = Break Even");
              }
      }
}

return(0);
}


Ca$hDigger 06.01.21 21:48

Ich will nochmal anmerken, dass man Orders manuell durchaus mit MagicNumber versehen kann indem man die Orders über ein Button eines mql Programms öffnet. Die Order wird über den Button per Hand geöffnet/geschlossen aber dies wird dann per mql Programm ausgeführt. Hat auch den Vorteil, dass man zB die Ausführungszeit messen und weitere Statistiken speichern kann. Würde ich manuell traden, dann würde ich die Orders immer über ein mql Programm öffnen und schließen da neben definieren einer MagicNumber so auch noch weitere mehr Möglichkeiten bestehen die man sonst nicht hat.

traderdoc 07.01.21 00:30

Das rein manuelle Öffnen bezieht sich exakterweise gesehen auf die Betätigung der Taste F9. In diesem Auftragsfenster existiert keine Möglichkeit des Vergebens einer MagicNumber, aber der Eingabe eines Kommentars.
Auch über die Möglichkeit des One-Click-Trading per Alt+T wäre eine zweite Möglichkeit des manuellen Tradings gegeben, aber ohne MagicNumber.
Bei beiden Methoden geht es einzig und allein darum, kein!! mql-Programm zum Öffnen von Market- bzw. Setzen von PendingOrders zu benutzen.

Das Öffnen oder Setzen von Order per Button, welcher zwangsweise mit einem Script oder EA verküpft sein muss, ist eine andere Möglichkeit. Nur hierbei kann jederzeit eine MagicNumber vergeben werden.

traderdoc


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