EA schließt Position nicht

 

Hallo,

ich benötige eure Hilfe. Mein EA öffnet zwar über folgenden Code die Position:

    if (signal)
    {
        CTrade trade;
        trade.SetExpertMagicNumber(MAGICMA);
        trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, TradeSizeOptimized(),
                           SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0);
    }

Aber schließt ihn nicht durch:

  if (signal)
    if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
       if(Bars(_Symbol,_Period)>100)
      {
        CTrade trade;
        trade.PositionClose(_Symbol,0);
      }

Woran könnte es liegen?

Vielen Dank

 
  1. Verwende bitte den Code-Button (oder Alt+S) für Code:
  2. Woran es liegt steht im Log: Experts & Journal!
  3. Hier ...\Include\Trade\Trade.mqh findest Du Trade.mqh und da drin 2 Funktionen PositionClose(),
    eine mit Symbol (für Netting-Konten, da gibt es nur ein Position pro Symbol)
    und eine für Hedging-Konten (wo mehrere Positionen eines Symbols existieren können)
  4. Frage was ist Dein Konto?
  5. Wahrscheinlich muss Du die zweite verwenden: PositionClose( ticket, deviation) also zB. PositionClose( 12345678934, 5).
 
Carl Schreiber #:
  1. Verwende bitte den Code-Button (oder Alt+S) für Code:
  2. Woran es liegt steht im Log: Experts & Journal!
  3. Hier ...\Include\Trade\Trade.mqh findest Du Trade.mqh und da drin 2 Funktionen PositionClose(),
    eine mit Symbol (für Netting-Konten, da gibt es nur ein Position pro Symbol)
    und eine für Hedging-Konten (wo mehrere Positionen eines Symbols existieren können)
  4. Frage was ist Dein Konto?
  5. Wahrscheinlich muss Du die zweite verwenden: PositionClose( ticket, deviation) also zB. PositionClose( 12345678934, 5).
#include <Trade\Trade.mqh>

Habe ich ganz oben im EA.

Ja, ich muss die zweite verwenden, da ich eine Magic Nummer vergeben habe. Trotzdem schließt der EA nicht den Trade, wie er sollte.
 
FH215 #:

Habe ich ganz oben im EA.

Ja, ich muss die zweite verwenden, da ich eine Magic Nummer vergeben habe. Trotzdem schließt der EA nicht den Trade, wie er sollte.

Lies die doku zu ctrade, du verwendest position aber hast kein include file dazu.

die logs sagen dir eh was passiert

 
FH215:

Hallo,

ich benötige eure Hilfe. Mein EA öffnet zwar über folgenden Code die Position:

    if (signal)
    {
        CTrade trade;
        trade.SetExpertMagicNumber(MAGICMA);
        trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, TradeSizeOptimized(),
                           SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0);
    }

Aber schließt ihn nicht durch:

  if (signal)
    if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
       if(Bars(_Symbol,_Period)>100)
      {
        CTrade trade;
        trade.PositionClose(_Symbol,0);
      }

Woran könnte es liegen?

Vielen Dank

Hallo,

man kann nicht die Position schließen, weil

trade.PositionClose(_Symbol,0);

da von Position das Ticket fällt.

So muss ungefähr aussehen:

#include <Trade/SymbolInfo.mqh>  // Globale Variable
CPositionInfo  m_position; // Globale Variable

for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))

if(m_position.Symbol()== _Symbol ) { // Prüft nach Symbol 
            trade.PositionClose(m_position.Ticket());
         }

Ich hoffe war Verständlich.

Gruß Igor