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

 
de_leonid:

Merci pour votre aide. Puis-je également demander un exemple d'EA (partie du code) sur la façon d'obtenir la valeur de ces lignes dans l'EA.

J'ai créé un Expert Advisor pour moi-même https://www.mql5.com/ru/code/34046- qui peut effectuer des opérations sur des lignes horizontales ou de tendance.

Vous devez connaître le nom des lignes horizontales deTymen_STARC_Bands_MTF

voici leurs noms

string   m_r2_name      = "Highest";
string   m_r1_name      = "Top";
string   m_0_name       = "Middle";
string   m_s1_name      = "Bottom";
string   m_s2_name      = "Lowest";

et les entrer dans l'Expert Advisor et définir la commande

ici

sinput group "----------------- Trade Line UP ------------------------"
sinput ENUM_MODE          FilterLine_13              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Up               = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedUp         = open_buy;         // Trade command:
sinput string             InpNameAverageUp           = "Line Up";        // Line Name UP(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedUpLow      = open_sell;        // Trade command:
sinput bool               InpDelLineUp               = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeUp          = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrUp         = clrBlue;          // EA only monitors this lines color
sinput group "----------------- Trade Line_2 UP ----------------------"
sinput ENUM_MODE          FilterLine_15              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Up_2             = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedUp_2       = open_buy;         // Trade command:
sinput string             InpNameAverageUp_2         = "Line_2 Up";      // Line Name UP(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedUpLow_2    = open_sell;        // Trade command:
sinput bool               InpDelLineUp_2             = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeUp_2        = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrUp_2       = clrBlue;          // EA only monitors this lines color
sinput group "----------------- Trade Line DOWN ----------------------"
sinput ENUM_MODE          FilterLine_14              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Down             = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedDown       = open_buy;         // Trade command:
sinput string             InpNameAverageDown         = "Line Down";      // Line Name DOWN(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedDownLow    = open_sell;        // Trade command:
sinput bool               InpDelLineDown             = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeDown        = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrDown       = clrRed;           // EA only monitors this lines color
sinput group "----------------- Trade Line_2 DOWN --------------------"
sinput ENUM_MODE          FilterLine_16              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Down_2           = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedDown_2     = open_buy;         // Trade command:
sinput string             InpNameAverageDown_2       = "Line_2 Down";    // Line Name DOWN(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedDownLow_2  = open_sell;        // Trade command:
sinput bool               InpDelLineDown_2           = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeDown_2      = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrDown_2     = clrRed;           // EA only monitors this lines color
Algorithm manually automate
Algorithm manually automate
  • www.mql5.com
Эксперт для Автоматизации Ручной торговли.
 
de_leonid:

Merci pour votre aide. Puis-je également demander un exemple d'EA (partie du code) pour savoir comment obtenir la valeur de ces lignes dans l'EA.

la fonction elle-même dans Expert Advisor à partir de la ligne horizontale ou de tendance

Ici -(marqué en jaune - ici le nom de la ligne est défini ) \\\\\\\\\\\\ pour un test de 1 minute - mettre manuellement une ligne horizontale ou de tendance, définir le même nom dans Expert Advisor et dans la ligne elle-même.

//+------------------------------------------------------------------+
//|                                                TrendOpenedUp.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
sinput string InpNameAverageUp = "Line Up"; // Line Name UP(Horizontal Line or Trend Line)
sinput bool   InpDelLineUp     = false;     // Delete (Horizontal Line or Trend Line)
//---
datetime ExtPrevBarsUp;    // "0" -> D'1970.01.01 00:00';
datetime ExtLastAverageUp; // "0" -> D'1970.01.01 00:00';
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TrendOpenedUp();
  }
//+------------------------------------------------------------------+
//| Check for long position opening                                  |
//+------------------------------------------------------------------+
bool TrendOpenedUp(void)
  {
   bool res=false;
   datetime time_0=iTime(Symbol(),Period(),0);
   if(time_0==ExtPrevBarsUp)
      return(true);
   ExtPrevBarsUp=time_0;
     {
      if(ObjectFind(0,InpNameAverageUp)<0)
         return(true);
      MqlRates ratesAverage[];
      ArraySetAsSeries(ratesAverage,true);
      int start_pos=0,count=3;
      if(CopyRates(Symbol(),Period(),start_pos,count,ratesAverage)!=count)
         return(false);
      if(ratesAverage[0].time==ExtLastAverageUp)
         return(true);
      double price_line=0.0;
      long object_type=ObjectGetInteger(0,InpNameAverageUp,OBJPROP_TYPE);
      if(object_type==OBJ_HLINE)
         price_line=ObjectGetDouble(0,InpNameAverageUp,OBJPROP_PRICE);
      else
         if(object_type==OBJ_TREND)
            price_line=ObjectGetValueByTime(0,InpNameAverageUp,ratesAverage[1].time,0);
      double value_by_time=price_line;
      if(value_by_time==0.0)
         return(true);
      if(ratesAverage[1].open<value_by_time && ratesAverage[1].close>value_by_time)
        {
         PlaySound("request.wav");
         if(InpDelLineUp)
            ObjectsDeleteAll(0,InpNameAverageUp);
         res=true;
        }
      if(ratesAverage[1].open>value_by_time && ratesAverage[1].close<value_by_time)
        {
         PlaySound("tick.wav");
         if(InpDelLineUp)
            ObjectsDeleteAll(0,InpNameAverageUp);
         res=true;
        }
     }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
 
de_leonid:

Merci pour votre aide. Puis-je également demander un exemple d'EA (partie du code) pour savoir comment obtenir la valeur de ces lignes dans l'EA.

Le moyen le plus simple et le plus facile est d'obtenir les noms des lignes horizontales ou de tendance à partir de l'indicateur.

- cliquez avec le bouton droit de la souris sur un graphique et trouvez LIST OF OBJECTS(copier et coller dans Expert Advisor)

Photo par

 
Bonjour à tous !
Je demande de l'aide, je me suis déjà creusé la tête, je ne trouve pas comment mettre en œuvre ce qui suit.
Lorsque vous ouvrez une nouvelle barre, effectuez un calcul.
Lors de la réouverture d'une nouvelle barre, effectuez le calcul et effectuez les actions éventuelles.
Je ne le trouve pas dans MQL5
S'il vous plaît, aidez-moi !!!
 
m-r LSV:
Bonjour à tous !
Je demande de l'aide, je me suis déjà creusé la tête, je ne trouve pas comment mettre en œuvre ce qui suit.
Lorsque vous ouvrez une nouvelle barre, effectuez un calcul.
Lors de la réouverture d'une nouvelle barre, effectuez le calcul et effectuez les actions éventuelles.
Je ne le trouve pas dans MQL5
S'il vous plaît, aidez-moi !!!
Si c'est pour un indicateur, il y a rates_total et prev_calculated. Si c'est pour un EA, alors la même chose que dans mql4...
 
Alexey Viktorov:
Si c'est pour l'indicateur, il y a rates_total et prev_calculated. Si c'est pour Expert Advisor, c'est la même chose que dans mql4...

Puis-je avoir un court morceau de code s'il vous plaît, je suis un débutant et ma tête est déjà en ébullition. Confus.

 
Alexey Viktorov:
Si c'est pour un indicateur, il y a rates_total et prev_calculated. Si c'est pour un EA, alors la même chose que dans mql4...

Oui, c'est pour l'indicateur

 

Alexey Viktorov:
Если это для индикатора, то есть rates_total и prev_calculated. Если-же для советника, то так-же как и в mql4…


if(rates_total > prev_calculated)
 Print("Новый бар");

Est-ce que je lis bien ?

 

L'ouverture de la bougie est retardée de 9 à 12 secondes.
Pouvez-vous me dire si c'est la première tique ?

Il est juste extrêmement important pour moi de faire des calculs et d'effectuer des actions sur le premier tick d'une nouvelle bougie.

2021.06.02 16:42:09.522 Test (Volatility 10 Index,M1)      Новый бар
2021.06.02 16:43:09.621 Test (Volatility 10 Index,M1)      Новый бар
2021.06.02 16:44:09.552 Test (Volatility 10 Index,M1)      Новый бар

 
m-r LSV:

Est-ce que je lis bien ?

datetime fin=0, last=0;

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[])
   {
   fin=iTime(symbol,frame,0);
   if(last==fin) return(rates_total);
   last=fin;
Raison: