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)
-   -   Hit SL/TP sound einbinden (http://www.expert-advisor.com/forum/showthread.php?t=6278)

AVT 06.12.18 15:55

Hit SL/TP sound einbinden
 
Ich will in meinen einen EA einen Sound einbinden: sobald ein SL oder TP getroffen wird (der Trade also beendet ist), soll ein Soundsignal gespielt werden. Ich brauche Eure Kommentare, wo ich das am besten mache.

Es gibt meines Erachtens 2 Möglichkeiten:
1. ich überwache die laufenden Trades MODE_TRADES und frage ab, ob Ask/Bid == SL oder TP ist, ist das der Fall, müßte der Trade eigentlich geschlossen werden.
2. ich überwache die letzte Position der History MODE_HISTORY, wenn dort eine neue Position erscheint, kann ich anhand des Kommentars ([sl] oder [tp]) sehen, ob es sich um einen Gerissenen handelt oder nicht.

Was meint Ihr, welche Lösung die bessere ist?
Danke. AVT

traderdoc 06.12.18 17:25

Die zweite Option ist die Bessere.
Und damit das Signal nicht permanent gegeben wird, sollte in eine Variable die Closezeit gespeichert werden, um beim nächstzen Aufruf nur ein Signal zuzulassen, welches von einer später geschlossenen Order im SL oder TP herrührt.

traderdoc

AVT 07.12.18 10:28

Vielen Dank traderdoc :)

Code sieht so aus, falls jemand es braucht (oder es vielleicht noch was zu verbessern gibt):
Code:

// === head
#resource "\\Files\\Sounds\\HitSl.wav" // SL Treffer
#resource "\\Files\\Sounds\\HitTp.wav" // TP Treffer
datetime LastCloseTime=TimeCurrent();  // reicht hier

void OnTimer()
{
  GetExitHits(); // reicht hier, je nach Timereinstellung
}

void GetExitHits()
{
  string sl_subst="[sl]"; // Zeichen im Kommentar für SL
  string tp_subst="[tp]"; // Zeichen im Kommentar für TP
  int    res=EMPTY;      // Resultatnummer, -1 ist nicht gefunden

  // === 0 ist die 1. Position (früheste), wird hochgezählt bis zur letzten
  // === wir zählen runter von der letzten zur frühesten
  //    und stoppen nach dem ersten Fund mit break
  for(int i=OrdersHistoryTotal(); i>=0; i--)
  {
      if( OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) )
      {
        if(  OrderSymbol()==_Symbol  // unser Markt
            && OrderType()<=1        ) // Market Orders
        {

            // === SL Sound
            res=StringFind(OrderComment(),sl_subst,0);
            if(  res!=-1                          // [sl] im Kommentar
              && OrderCloseTime()>LastCloseTime ) // nach dem letzten Fund
            {
              FuncPlaySound("::Files\\Sounds\\HitSl.wav"); // Sound spielen
              LastCloseTime=OrderCloseTime();              // als letzten Fund merken
              break;                                      // stop, keine älteren mehr
            }

            // === TP Sound
            res=StringFind(OrderComment(),tp_subst,0);
            if(  res!=-1                          // [tp] im Kommentar
              && OrderCloseTime()>LastCloseTime ) // nach dem letzten Fund
            {
              FuncPlaySound("::Files\\Sounds\\HitTp.wav"); // Sound spielen
              LastCloseTime=OrderCloseTime();              // als letzten Fund merken
              break;                                      // stop, keine älteren mehr
            }

        } // Symbol, MarketOrders
      } // select MODE_HISTORY
  } // HistoryTotal
}

Die FuncPlaySound(string FileName) prüft ob SoundOn und wenn ja dann PlaySound(FileName).
AVT


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