Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1268

 
Alexey Viktorov:

È molto probabile che dopo aver rinominato un oggetto, questo non sia ancora disponibile per l'accesso. Puoi provare a mettere ChartRedraw dopo aver rinominato. Se questo non funziona, allora dovete costruire la sequenza in qualche altro modo.

ps; Un'altra opzione è quella di ridipingere prima con il nome sparam e poi rinominare.

Grazie ancora!!! Come farei senza di voi? ))))

 
Vladimir Karputov:

Esempio in codiceFibonaci RR-

Grazie per l'esempio, ma questo è solo l'impostazione dei livelli di trading. Sono interessato a impostare i livelli di Fibonacci come 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'indicatore automatico disegna di default e per livelli di Fibo standard. Ci dovrebbe essere un codice sorgente degli strumenti Fibo nel terminale che potrebbe essere cambiato o copiato da esso... Non riesco a trovarlo, se lo conosci, per favore dammi un suggerimento.

O come aggiungere i seguenti livelli nell'indicatore personalizzato: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);
     }

Si prega di consigliare

 
Kira27:

Grazie ancora!!! Come farei senza di voi? ))))

Forse imparerei a pensare in modo logico.)))

 
VVT:

Grazie per l'esempio, ma questo è solo l'impostazione dei livelli di trading. Sono interessato a impostare i livelli di Fibonacci come 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'indicatore disegna di default e per livelli Fibo standard. Ci dovrebbe essere un codice sorgente degli strumenti Fibo nel terminale che potrebbe essere cambiato o copiato da esso... Non riesco a trovarlo, se lo conosci, per favore dammi un suggerimento.

O come aggiungere i seguenti livelli nell'indicatore personalizzato:0,0%, 23,6%, 38,2%, 50%, 61,8%, 100%, 161,8%, 261,8%...

Si prega di consigliare

l'esempio che ho dato sopra - ha solo l'impostazione dei livelli. Se lo chiedi, ti dispiacerebbe aprire il codice e controllare?

 
Vladimir Karputov:

Ti ho dato un esempio sopra - c'è solo l'impostazione dei livelli. Se lo chiedi, preoccupati di aprire il codice e controllare.

Grazie, sì c'è, è un po' confuso ma sto cercando di capire) grazie

 

Come sarebbe il codice in 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:

Come sarebbe il codice in Mql5

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

Esattamente come sarebbe in mql4


Un po' di aiuto

MqlDateTime

La struttura della data contiene otto campi di tipoint.

structMqlDateTime
{
intyear;// anno
intmon;// mese
intday;// giorno
intora;// ora; // ora
intmin;// minuti
intsec;// secondi
intday_of_week;// giorno della settimana (0-domenica, 1-lunedì, ....,6-sabato)
intday_of_year;// numero di sequenza in un anno (il 1° gennaio ha il numero 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:

Ti ho dato un esempio sopra - c'è solo l'impostazione dei livelli. Se lo stai chiedendo, per favore apri il codice e controlla.

Bel disegnatore automatico) con diversi oggetti, livelli, tempi, grazie mille

 
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
:

Forse imparerei a pensare logicamente)))).

Ho provato tutto quello che potevo da quello che mi hai detto, ho girato e rigirato, ma tutte le linee dello stesso colore in MT5. In MT4 si ricolora in modo normale, senza alcun ritardo.

 

come organizzare un algoritmo in un indicatore per prendere punti e trasferirli in un altro buffer.

- Per disegnare le linee di tendenza. (come nella foto)

Istantanea di un punto

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

Ho provato di tutto con l'istinto, sono disegnati ma in posti strani.

//---
   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);
     }*/
//---

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

Ho allegato l'indicatore - funziona - ma queste linee non possono essere regolate.

File:
1.mq5  82 kb
Motivazione: