Questions des débutants MQL5 MT5 MetaTrader 5 - page 1268

 
Alexey Viktorov:

Il est très probable qu'après avoir renommé un objet, celui-ci ne soit pas encore disponible pour être consulté. Vous pouvez essayer de mettre ChartRedraw après le renommage. Si cela ne fonctionne pas, vous devez alors construire la séquence d'une autre manière.

ps ; Une autre option est de repeindre avec le nom de sparam d'abord et de renommer ensuite.

Merci encore ! !! Que ferais-je sans vous ? ))))

 
Vladimir Karputov:

Exemple dans le codeRR deFibonaci-

Merci pour l'exemple, mais il s'agit simplement de fixer des niveaux de négociation. Je suis intéressé par la mise en place de niveaux de Fibonacci comme 0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

https://www.metatrader5.com/ru/terminal/help/objects/fibo/fibo_retracement

L'indicateur automatique dessine par défaut et par niveaux de Fibo standard. Il devrait y avoir un code source des outils Fibo dans le terminal qui pourrait être modifié ou copié... Je n'arrive pas à le trouver, si vous le connaissez, donnez-moi un indice.

Ou comment ajouter les niveaux suivants dans un indicateur personnalisé:0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8%...

   ObjectCreate(chart_id,name,OBJ_EXPANSION,nwin,time1,price1,time2,price2,time3,price3);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);

   if(ray>0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,true);
   if(ray<0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,true);

   if(ray==0)
     {
      ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);
      ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,false);
     }

   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

   for(int numb=0; numb<10; numb++)
     {
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELCOLOR,numb,Color);
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELSTYLE,numb,style);
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELWIDTH,numb,width);
     }

Veuillez me conseiller

 
Kira27:

Merci encore ! !! Que ferais-je sans vous ? ))))

Peut-être que j'apprendrais à penser logiquement.)))

 
VVT:

Merci pour l'exemple, mais il s'agit simplement de fixer des niveaux de négociation. Je suis intéressé par la mise en place de niveaux de Fibonacci comme 0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

https://www.metatrader5.com/ru/terminal/help/objects/fibo/fibo_retracement

L'indicateur tire par défaut et par niveaux de Fibo standard. Il devrait y avoir un code source des outils Fibo dans le terminal qui pourrait être modifié ou copié... Je n'arrive pas à le trouver, si vous le connaissez, donnez-moi un indice.

Ou comment ajouter les niveaux suivants dans un indicateur personnalisé:0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8%...

Veuillez me conseiller

l'exemple que j'ai donné ci-dessus - il n'y a que le réglage des niveaux. Si vous le demandez, pourriez-vous ouvrir le code et vérifier ?

 
Vladimir Karputov:

Je vous ai donné un exemple ci-dessus - il n'y a que le réglage des niveaux. Si vous demandez, prenez la peine d'ouvrir le code et de vérifier.

Merci, oui il y en a un, c'est un peu confus mais j'essaie de comprendre) merci

 

Ce à quoi ressemblerait le code en Mql5


extern int    StartHour   = 12;    //Час начала торговли(терминальное время)

int start()
{
if  (Hour()==StartHour)
    {
     OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Ask-StopLoss*Point,Bid+TakeProfit*Point,"советник",MAGIC,expiration,Blue);
    }  
return(0);
}
 
Dmitriywelcome:

Comment le code ressemblerait-il en Mql5 ?

   MqlDateTime tm;
   TimeCurrent(tm);
   if(tm.hour==12) {
    ...
   }

Exactement comme il apparaîtrait dans mql4


Un peu d'aide

MqlDateTime

La structure de la date contient huit champs de typeint.

structMqlDateTime
{
intyear;// année
intmon;// mois
intday;// jour
intheure;// heure ; // heure
intmin;// minutes
intsec;// secondes
intday_of_week;// jour de la semaine (0-Sunday, 1-Monday, ....,6-samedi)
intday_of_year;// numéro de séquence dans une année (le 1er janvier a le numéro 0)
};

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
 
Vladimir Karputov:

Je vous ai donné un exemple ci-dessus - il n'y a que le réglage des niveaux. Si vous demandez, veuillez ouvrir le code et vérifier.

Beau dessinateur automatique) avec différents objets, niveaux, délais, merci beaucoup.

 
int OnInit()
  {
//---
   ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

/***********************OnChartEvent function************************/
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {
   if(id == CHARTEVENT_OBJECT_CREATE)
     {
      //----------------------------------------------------------------------------------------
      double   Level_0= ObjectGetDouble(
                           0,          // идентификатор графика
                           sparam,              // имя объекта
                           OBJPROP_PRICE,           // идентификатор свойства
                           0     // модификатор свойства
                        );


      double   Level_1= ObjectGetDouble(
                           0,          // идентификатор графика
                           sparam,              // имя объекта
                           OBJPROP_PRICE,           // идентификатор свойства
                           1     // модификатор свойства
                        );
      //------------------------------------------------------------------------------------------------------
      if(Level_0 > Level_1)
         ObjectSetInteger(0,sparam,OBJPROP_COLOR,clrDeepSkyBlue);
      else
         ObjectSetInteger(0,sparam,OBJPROP_COLOR,clrYellow);
      //+------------------------------------------------------------------+
      ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); //  получим время создания объекта
      string newName = "fibka"+string(timeCreate); //  сформируем новое имя объекта
      ObjectSetString(0, sparam, OBJPROP_NAME, newName);  //  переименуем объект
     }
  }/******************************************************************/

//+------------------------------------------------------------------+
Alexey Viktorov
:

Peut-être que j'apprendrais à penser logiquement)))).

J'ai essayé tout ce que j'ai pu à partir de ce que vous m'avez dit, j'ai tourné et retourné, mais toujours les mêmes lignes de couleur dans MT5. Dans MT4, il se recolore de manière normale, sans aucun délai.

 

comment organiser un algorithme dans un indicateur pour prendre des points et les transférer dans un autre tampon.

- Pour dessiner les lignes de tendance. (comme sur la photo)

Instantané d'un point

-----------------------------------------

J'ai tout essayé avec mon intuition, ils sont dessinés mais dans des endroits étranges.

//---
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);
//---
   z=Z_;
   for(i=limit; i>=0; i--)
     {
      if(!CalculatePivot())
         return(0);
      if(rates_total!=prev_calculated && i==0)
         Z_=z;
      //---
      DnArrowiCustom[i]=0.0;
      UpArrowiCustom[i]=0.0;
      CoralDn=((Inpyna && BufferC[i]<BufferC[i+1]) || (Inpdoy && BufferCcop[i]<BufferCcop[i+1]) ||
               (Inptrei && BufferC[i]<BufferCcop[i]) || (Inppatry && BufferCcop[i]<BufferC[i]) ||
               (Inpcinc && close[i]<m_Coral_price) || (Inpshase && close[i]<BufferC[i]) || (Inpshapt && close[i]<m_p_price));
      CoralUp=((Inpyna && BufferC[i]>BufferC[i+1]) || (Inpdoy && BufferCcop[i]>BufferCcop[i+1]) ||
               (Inptrei && BufferC[i]>BufferCcop[i]) || (Inppatry && BufferCcop[i]>BufferC[i]) ||
               (Inpcinc && close[i]>m_Coral_price) || (Inpshase && close[i]>BufferC[i]) || (Inpshapt && close[i]>m_p_price));
      if(CoralDn)
         z = 1;
      if(CoralUp)
         z = 2;
      if(CoralDn && (z==1 || z==0))
        {
         if(((InpFiltryP && close[i]<m_p_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryC && close[i]<m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryM && close[i]<m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)))
            if(OldTrend>0)
               UpArrowiCustom[i]=high[i];
         if(i!=0)
            OldTrend=-1;
         //if(FractalUpBuffer[i]==UpArrowiCustom[i])
           // return(rates_total);
        }
      if(CoralUp && (z==2 || z==0))
        {
         if(((InpFiltryP && close[i]>m_p_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryC && close[i]>m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryM && close[i]>m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)))
            if(OldTrend<0)
               DnArrowiCustom[i]=low[i];
         if(i!=0)
            OldTrend=+1;
        // if(FractalDownBuffer[i]==DnArrowiCustom[i])
           // return(rates_total);
        }
     }
   m_left_Ctime=time[rates_total-2];
//---
   /*if(prev_calculated==0)
     {
      //---
      for(int u=rates_total-4; u>=10; u--)
        {
         if(FractalUpBuffer[u]!=0.0 && FractalUpBuffer[u]!=EMPTY_VALUE)
           {
            if(upper_left==0.0)
              {
               upper_left=FractalUpBuffer[u];
               upper_left_date=time[u];
              }
            else
               if(upper_right==0.0)
                 {
                  upper_right=FractalUpBuffer[u];
                  upper_right_date=time[u];
                 }
           }
         if(FractalDownBuffer[u]!=0.0 && FractalDownBuffer[u]!=EMPTY_VALUE)
           {
            if(lower_left==0.0)
              {
               lower_left=FractalDownBuffer[u];
               lower_left_date=time[u];
              }
            else
               if(lower_right==0.0)
                 {
                  lower_right=FractalDownBuffer[u];
                  lower_right_date=time[u];
                 }
           }
         if(upper_left!=0.0 && upper_right!=0.0 && lower_left!=0.0 && lower_right!=0.0)
            break;
        }
      if(upper_left==0.0 || upper_right==0.0 || lower_left==0.0 || lower_right==0.0)
         return(rates_total);
      //---
      TrendPointChange(0,m_Upper_line,0,upper_right_date,upper_right);
      TrendPointChange(0,m_Upper_line,1,upper_left_date,upper_left);
      TrendPointChange(0,m_Lower_line,0,lower_right_date,lower_right);
      TrendPointChange(0,m_Lower_line,1,lower_left_date,lower_left);
      //---
      return(rates_total);
     }*/
//---

-----------------------------------------------------------------------------------------------------

J'ai joint l'indicateur - il fonctionne - mais ces lignes ne peuvent pas être ajustées.

Dossiers :
1.mq5  82 kb
Raison: