Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1855

 
Tretyakov Rostyslav #:

Si une condition de fermeture se produit

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

Dans ce cas, la condition est CalculiteProfit() >= 0. Dans ce cas, nous pouvons calculer à quel prix le profit nécessaire sera pour ces positions et y fixer le take profit ou le stop loss, en fonction des prix et des positions. Et parce que les positions d'achat et de vente sont fermées à des prix différents, cela n'est approprié que si les positions sont du même type.

 
Andrey Sokolov #:

La condition ici est CalculiteProfit() >= 0, auquel cas vous pouvez calculer à quel prix le profit nécessaire sera pour ces positions et fixer un take profit à cet endroit.

Pas moi)

EVGENII SHELIPOV est l'auteur de conditions.

 

Salutations. Pouvez-vous me donner un indice ?

Dans le robot mt5 j'ai besoin de mettre une courbe comme une moyenne mobile sur le graphique. Existe-t-il un moyen plus "civilisé" que de sculpter à partir d'objets, et si oui, lequel ?

 
Andrey Sokolov #:

Salutations. Pouvez-vous me donner un indice ?

Dans le robot mt5 j'ai besoin de mettre une courbe comme une moyenne mobile sur le graphique. Existe-t-il un moyen plus "civilisé" que de sculpter à partir d'objets, et si oui, lequel ?

Oui - affichez-le
 
Artyom Trishkin #:
Oui - produisez-le vous-même

le mot clé ici est "comme". Il s'agit de vos propres données, et non d'un indicateur tiers.

 
Andrey Sokolov #:

Salutations. Pouvez-vous me donner un indice ?

Dans le robot mt5 j'ai besoin de mettre une courbe comme une moyenne mobile sur le graphique. Existe-t-il une manière plus "civilisée" de l'afficher que de la dessiner à partir d'objets ?

Dessiner des valeurs sur CCanvas.

 
Andrey Sokolov #:

le mot clé ici est "comme". Il s'agit de vos propres données, et non d'un indicateur tiers.

Créer un indicateur et l'ajouter comme #resource
 

Bonjour. Pouvez-vous me donner un indice ? Le terminal de trading dispose d'un concept tel que ALERT. C'est-à-dire que nous le plaçons sur l'échelle desprix et fixons les conditions pour atteindre ce prix. Mais il s'avère qu'il est jetable. Le robot de trading n'est pas un événement ponctuel et l'alerte n'est pas un événement ponctuel.

 
valentin104 Le terminal de trading dispose d'un concept tel que ALERT. C'est-à-dire que nous le plaçons sur l'échelle desprix et fixons les conditions pour atteindre ce prix. Mais il s'avère qu'il est jetable. L'ordre est similaire à celui des alertes mais elles sont réutilisables, c'est-à-dire qu'elles continuent à fonctionner jusqu'à ce qu'elles soient désactivées.

// использовать алерт
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;
}

Le code est pour MQL5. Le code est basé sur les règles de fonctionnement du MetaEditor et sur l'utilisation des alertes.

Dossiers :
Alert.mq5  5 kb