OnTradeTransaction - Seite 5

 
Anatoli Kazharski:
Ja, das stimmt in etwa. Ich habe es nur noch nicht auf diese Weise getestet.

Versuchen Sie es...

Hinzugefügt von

case TRADE_TRANSACTION_DEAL_ADD:
  if (trans.order != my_order_ticket)
  {
    if(trans.symbol==Symbol())
    {
      if(проверяем магик)
      {    
        //Сработал SL или TP
      }
    }
  }
break;
 
prostotrader:

Was ist an dieser Methode falsch?

case TRADE_TRANSACTION_DEAL_ADD:
  if (trans.order != my_order_ticket)
  {
   //Сработал SL или TP
  }
break;

Denn die letzten bekannten SL- und TP-Positionen stimmen möglicherweise nicht mit dem Abschlusspreis überein und es gibt nichts, womit man sie vergleichen könnte.

Und Sie teilen Ihre Codes nicht gerne, aber Sie sehen sich die Codes anderer Leute mit großem Vergnügen an...

Dies wird nicht immer funktionieren:

int    G_LastTicket  = 0;   //Последний известный тикет
double G_LastSLlevel = 0.0; //Последний известный уровень SL
double G_LastTPlevel = 0.0; //Последний известный уровень TP
//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
  {
    if(PositionsAny (G_Symbol))
    {
      G_LastSLlevel = GetSLlevel (G_Symbol);
      G_LastTPlevel = GetTPlevel (G_Symbol);
      Print ("SLlevel: " + G_LastSLlevel);
      Print ("TPlevel: " + G_LastTPlevel);
    }
    
    if(trans.deal != G_LastTicket)
    {
      if(trans.price == G_LastSLlevel)
        Print ("Сработал SL");
        
      if(trans.price == G_LastTPlevel)
        Print ("Сработал TP");
    }
  }
}
 
prostotrader:
Probieren Sie es aus...
Ich werde es auf jeden Fall einmal ausprobieren. Ich werde es mal ausprobieren. Danke. Ich bin im Moment mit anderen Aufgaben beschäftigt.
 
prostotrader:

Was ist an dieser Methode falsch?

Solltemy_order_ticket speichern
 
fxsaber:
Sie müssenmy_order_ticket behalten

Wissen Sie überhaupt, wovon Sie sprechen?

my_order_ticket - diese Bestellung hat einen Platz zum Leben, wenn Sie

und Sie sind verpflichtet, sie einzuhalten.

 
fxsaber:
Sie müssenmy_order_ticket speichern
Und nicht nur das.
 
Anatoli Kazharski:
Ich werde es mal ausprobieren. Danke. (lacht) Ich bin im Moment mit anderen Aufgaben beschäftigt.
Viel Glück mit dem Code!
 
Andrey Dik:
Und nicht nur das.

Ja, es wird tatsächlich vorgeschlagen, die tatsächliche Umgebung selbst zu pflegen und zu speichern und sie mit dem zu vergleichen, was OnTradeTransaction erzeugt.

Dies ist keine Lösung.

 
fxsaber:

Ja, es wird tatsächlich vorgeschlagen, die tatsächliche Umgebung selbst zu pflegen und zu speichern und sie mit dem zu vergleichen, was OnTradeTransaction erzeugt.

Dies ist keine Lösung.

Du verfolgst das Thema einfach nicht genau. :)

Der ursprüngliche Themenstarter schrieb:

"Woher weiß ich beiOnTradeTransaction(), dass SL/TP ausgelöst hat? "

Was sollte die Lösung sein?

Sie können sich nichts merken und nichts überprüfen, außer der Position selbst, vorausgesetzt, dass

Sie haben keine anderen Aufträge ausgeführt

case TRADE_TRANSACTION_DEAL_ADD:
  if (!PositionSelect(Symbol())
  {
   //Сработал SL или TP

  }
break;
 
prostotrader:

Du verfolgst das Thema einfach nicht genau. :)

Der ursprüngliche Themenstarter schrieb:

Sie sind derjenige, der eher unaufmerksam ist, ich bin nichtder Themenstarter.

Sie sollten auch Code wie diesen anzeigen:

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

Tja, was soll's - wer's braucht, macht's selbst fertig, mag's nicht - es gibt einen Joba! Ist das so?