Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 908

 
Danke, Leute.
 
A.Vakutin:

Bitte teilen Sie, wer weiß und weiß, wie man einen EA aus dem Verkauf nach einem Stopp ausgelöst wird verbieten?

// Оставанивливает работу всех советников, если сработал SL.

#include <MT4Orders.mqh>      // https://www.mql5.com/ru/code/16006
#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

void OnTrade()
{
  static int PrevTotal = OrdersHistoryTotal();
  const int Total = OrdersHistoryTotal();
  
  for (int i = Total - 1; i >= PrevTotal; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL))
    {
      long Chart = ChartFirst();
  
      while (Chart != -1)
      {
        if ((Chart != ChartID()) && EXPERT::Is(Chart))
          EXPERT::Remove(Chart);
  
        Chart = ChartNext(Chart);
      }

      break;
    }        
    
  PrevTotal = Total;
}
 

Guten Abend, liebe Forumsnutzer!

Es ist ein Dilemma entstanden.

Ich hatte eine Transaktion und speicherte sie in einer Variablen

datetime now=TimeCurrent();

Einige Zeit später trat ein Ereignis ein, und ich speichere die Zeit in einer Variablen

datetime now2=TimeCurrent();

Wie kann ich überprüfen, ob zwischen diesen Ereignissen 15 Minuten vergangen sind?

Ich dachte, ich hätte jetzt zwei Variablen und now2 in Sekunden gesetzt, versucht, die Differenz zu nehmen und es sollte mehr als 700 Sekunden sein

 if(now2-now>700)

ABER es funktioniert nicht((

Ich bitte um die Hilfe der Gemeinschaft!

 
ISL:

Guten Abend, liebe Forumsnutzer!

Es ist ein Dilemma entstanden.

Ich hatte eine Transaktion und speicherte sie in einer Variablen

Einige Zeit später trat ein Ereignis ein, und ich speichere die Zeit in einer Variablen

Wie kann ich überprüfen, ob zwischen diesen Ereignissen 15 Minuten vergangen sind?

Ich dachte, ich hätte jetzt zwei Variablen und now2 in Sekunden gesetzt, versucht, die Differenz zu nehmen und es sollte mehr als 700 Sekunden sein

ABER es funktioniert nicht((

Bitte helfen Sie der Gemeinschaft!

Die datetime-Variable wird als Datum und Uhrzeit dargestellt. Sie können das Problem auch anders lösen, z.B. um 700 (obwohl 15 Minuten 900 Sekunden sind) in datetime darzustellen

if(now2-now>(datetime)700)

oder umgekehrt Variablen als int-Typ darstellen

if(int(now2-now)>700)

oder so

if((int)now2-(int)now>700)
Wie auch immer, wir müssen prüfen...
 
Alexey Viktorov:

Die datetime-Variable wird als Datum und Uhrzeit dargestellt. Sie können das Problem auf verschiedene Weise lösen, z. B. indem Sie 700 (obwohl 15 Minuten 900 Sekunden sind) als datetime darstellen


Der Abend naht)))

 
ISL:

Der Abend macht sich bemerkbar)))

Ja... Ich habe anderthalb Stunden gebraucht, um die Funktion vom Inluder aus anzuschließen...

 
Vladimir Karputov:

Schließen Sie die Standard-HandelsklasseCTrade
an (sie ist im Lieferumfang des Terminals enthalten)

und rufen zwei Methoden auf:

SetTypeFillingBySymbol

Legt die Auftragsart entsprechend dem angegebenen Symbol fest

SetMarginMode

Legt den Modus für die Berechnung der Marge entsprechend den aktuellen Kontoeinstellungen fest.

Vladimir, guten Abend, könnten Sie mich bitte beraten, bitte machen Sie eine Funktion, die den prozentualen Gewinn berechnet Ich möchte das gehandelte Volumen zu berechnen, aber ich kann nicht bekommen es richtig, ich denke, ich brauche, um die Reihenfolge mit der Richtung zu identifizieren und verwenden Sie sie, um das Volumen zu berechnen

double ALL_PROFIT(int rezult)
  {
   HistorySelect(0,TimeCurrent());
   double   rez=0.0;
   double   alprof=0.0;
   uint     total=HistoryDealsTotal();
   for(uint i=0;i<=total;i++) 
     {
      if(m_ticket.SelectByIndex(i))
        {
         if(m_ticket.Magic()==Mg)
           {
            alprof+=(m_ticket.Profit()+m_ticket.Swap()+m_ticket.Commission());
            rez=alprof;
            if(rezult==1 && alprof!=0.00){rez=alprof/(AccountInfoDouble(ACCOUNT_BALANCE)-alprof)*100;}
            if(rezult==2){rez+=m_ticket.Volume();}      
           }
        }
     }
   return(NormalizeDouble(rez,2)); 
  }
Übrigens ist die Anzahl der geschlossenen Positionen auch ein Problem, um herauszufinden, wie viele davon gehandelt wurden.
 
TYRBO:

Vladimir, guten Abend, könnten Sie vorschlagen, eine Funktion, die Gewinn-Prozent berechnet, möchte ich das gehandelte Volumen zu berechnen und es funktioniert nicht richtig, ich denke, ich brauche, um den Auftrag mit der Richtung zu identifizieren und mit ihnen das Volumen zu berechnen.

Ich verstehe nichts, alle Briefe sind übereinander gestapelt. Übergeben Sie Ihren Code durch den Code Styler.

 
TYRBO:

Vladimir, guten Abend, könnten Sie vorschlagen, eine Funktion, die Gewinn-Prozent berechnet, möchte ich das gehandelte Volumen zu berechnen und es funktioniert nicht richtig, ich denke, ich brauche, um den Auftrag mit der Richtung zu identifizieren und mit ihnen das Volumen zu berechnen.


Übrigens ist auch die Anzahl der geschlossenen Stellen ein Problem.

Bitte senden Sie den Code korrekt. Ich habe Sie bereits einmal korrigiert und den Code korrekt eingegeben.

 
TYRBO:

Vladimir, guten Abend, könnten Sie vorschlagen, eine Funktion, die Gewinn-Prozent berechnet, möchte ich das gehandelte Volumen zu berechnen und es funktioniert nicht richtig, ich denke, ich brauche, um den Auftrag mit der Richtung zu identifizieren und mit ihnen das Volumen zu berechnen.

Übrigens ist auch die Zahl der geschlossenen Stellen ein Problem.

Ich habe Ihren Code zum dritten Mal korrekt übermittelt. Ich frage mich, wie viele Versuche wir noch unternehmen müssen. :)