Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1855

 
Tretyakov Rostyslav #:

Wenn eine Schließbedingung eintritt

//-------------------------------------------------------------------+  Команда на закрытие сетки ордеров
   if((CountTrade(0) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==0)||(CountTrade(1) > 1 && CalculiteProfit() >= 0 && OrderGroupCloseSignal()==1))
     {
      flag_close=1;
     }

Hier ist die Bedingung CalculiteProfit() >= 0. In diesem Fall können wir berechnen, zu welchem Preis der notwendige Gewinn für diese Positionen sein wird , und dort Take-Profit oder Stop-Loss setzen, abhängig von den Preisen und Positionen. Und da die Kauf- und Verkaufspositionen zu unterschiedlichen Preisen geschlossen werden, ist dies nur angemessen, wenn die Positionen vom gleichen Typ sind.

 
Andrey Sokolov #:

Die Bedingung hierfür ist CalculiteProfit() >= 0. In diesem Fall können Sie berechnen, zu welchem Preis der notwendige Gewinn für diese Positionen erzielt wird , und dort einen Take-Profit setzen.

Ich nicht)

EVGENII SHELIPOV ist der Autor von Bedingungen.

 

Grüße. Können Sie mir einen Tipp geben?

In der mt5 Roboter muss ich eine Kurve wie ein gleitender Durchschnitt auf dem Chart setzen. Gibt es eine "zivilisiertere" Methode als die Bildhauerei nach Gegenständen, und wenn ja, wie sieht sie aus?

 
Andrey Sokolov #:

Grüße. Können Sie mir einen Tipp geben?

In der mt5 Roboter muss ich eine Kurve wie ein gleitender Durchschnitt auf dem Chart setzen. Gibt es eine "zivilisiertere" Methode als die Bildhauerei nach Gegenständen, und wenn ja, wie sieht sie aus?

Ja - zeigen Sie es an
 
Artyom Trishkin #:
Ja - geben Sie es selbst aus

Das Schlüsselwort hier ist "wie". Es handelt sich um Ihre eigenen Daten, nicht um die eines Drittanbieters.

 
Andrey Sokolov #:

Grüße. Können Sie mir einen Tipp geben?

In der mt5 Roboter muss ich eine Kurve wie ein gleitender Durchschnitt auf dem Chart setzen. Gibt es eine "zivilisiertere" Art der Darstellung als die Zeichnung von Objekten?

Zeichnen von Werten auf CCanvas.

 
Andrey Sokolov #:

Das Schlüsselwort hier ist "wie". Es handelt sich um Ihre eigenen Daten, nicht um die eines Drittanbieters.

Erstellen Sie einen Indikator und fügen Sie ihn als #Ressource hinzu
 

Hallo. Können Sie mir einen Tipp geben? Das Handelsterminal verfügt über ein solches Konzept wie ALERT. Das heißt, wir setzen ihn auf diePreisskala und legen die Bedingungen für das Erreichen dieses Preises fest. Aber es hat sich herausgestellt, dass es ein Wegwerfartikel ist. Der Handelsroboter ist kein einmaliges Ereignis und der Alarm ist kein einmaliges Ereignis.

 
valentin104 Das Handelsterminal verfügt über ein solches Konzept wie ALERT. Das heißt, wir setzen ihn auf diePreisskala und legen die Bedingungen für das Erreichen dieses Preises fest. Aber es hat sich herausgestellt, dass es ein Wegwerfartikel ist. Die Reihenfolge ist ähnlich wie bei den Warnungen, aber sie sind wiederverwendbar, d. h. sie funktionieren so lange, bis sie deaktiviert werden.

// использовать алерт
input bool alert = true;
// уровень срабатывания
input double trigLv = 0.0;
// отклонение от trigLv в пунктах
input int deviation = 30; 


// функция взята из https://www.mql5.com/ru/docs/basis/types/double
bool EqualDoubles(double d1,double d2,double epsilon)
  {
   if(epsilon<0) 
      epsilon=-epsilon;
//---
   if(d1-d2>epsilon) 
      return false;
   if(d1-d2<-epsilon) 
      return false;
//---
   return true;
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
  return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[]
) {
  static bool triggered = false;
  static datetime time_ = 0;
  if (!alert)
    return rates_total;
  if (EqualDoubles(trigLv, close[0], deviation * SymbolInfoDouble(NULL, SYMBOL_POINT))) { // сравнение цены Close с trigLv
    if (time_ != time[rates_total - 1])
      time_ = time[rates_total - 1];
    else
      return rates_total;
    if (!triggered)
      Alert("Level ", NormalizeDouble(trigLv, (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " triggered!");
    triggered = true;
  }
  else
    triggered = false;
  
  return rates_total;
}

Der Code ist für MQL5. Der Code basiert auf den Regeln des MetaEditor's Code und dem Algorithmus des MetaEditor's Operation.

Dateien:
Alert.mq5  5 kb
Grund der Beschwerde: