초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1268

 
Alexey Viktorov :

개체의 이름을 바꾼 후 아직 액세스할 수 없을 가능성이 매우 높습니다. 이름을 바꾼 후에 ChartRedraw를 넣어 볼 수 있습니다. 도움이되지 않으면 어떻게 든 시퀀스를 다르게 빌드해야합니다.

추신; 또 다른 옵션: 먼저 이름을 sparam으로 다시 칠한 다음 이름을 바꿉니다.

그리고 다시 한 번 감사합니다!!! 당신이 없었다면 나는 어떻게 했을까요?

 
Vladimir Karputov :

피보나치 RR 코드의 예 -

예를 들어 주셔서 감사합니다. 하지만 이것은 거래 수준을 설정하는 것일 뿐입니다. 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

자동 표시기는 기본적으로 표준 fibo 수준에 따라 빌드됩니다. 터미널에 fibo 도구의 소스 코드가 있어야 합니다. 이 소스 코드는 레벨 빌드 방법에서 변경하거나 복사할 수 있습니다. 찾을 수 없습니다. 위치를 아시는 분은 알려주세요.

또는 사용자 지정 지표에 수준을 추가하는 방법:   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);
     }

말해주세요

 
Kira27 :

그리고 다시 한 번 감사합니다!!! 당신 없이 나는 무엇을 했을까요?

논리적으로 생각하는 법을 배울 수 있을지도 몰라요.)))

 
VVT :

예를 들어 주셔서 감사합니다. 하지만 이것은 거래 수준을 설정하는 것일 뿐입니다. 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

자동 표시기는 기본적으로 표준 fibo 수준에 따라 빌드됩니다. 터미널에 fibo 도구의 소스 코드가 있어야 합니다. 이 소스 코드는 레벨 빌드 방법에서 변경하거나 복사할 수 있습니다. 찾을 수 없습니다. 위치를 아시는 분은 알려주세요.

또는 사용자 지정 지표에 수준을 추가하는 방법:   0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8%...

말해주세요

위의 예를 들었습니다. 레벨 작업만 있습니다. 라고 묻는다면 수고를 해서 코드를 열어 확인해보세요.

 
Vladimir Karputov :

위의 예를 들었습니다. 레벨 작업만 있습니다. 라고 묻는다면 수고를 해서 코드를 열어 확인해보세요.

네 감사합니다 조금 헷갈리긴 하지만 이해하려고 노력중입니다) 감사합니다

 

코드가 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 :

코드가 Mql5에서 어떻게 보일지

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

mql4에서 정확히 동일하게 보입니다.


도움

MqlDateTime

날짜 구조에는 다음 유형의 8개 필드가 있습니다.   정수 .

구조체 MqlDateTime
{
    정수   ; // 년도
    정수   ; // 월
    정수   하루 ; // 낮
    정수   시간 ; // 시간
    정수   ; // 분
    정수   ; // 초
    정수   day_of_week ; // 요일(0-일요일, 1-월요일, ... ,6-토요일)
    정수   day_of_year ; // 연도의 일련 번호(1월 1일의 숫자는 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 :

위의 예를 들었습니다. 레벨 작업만 있습니다. 라고 묻는다면 수고를 해서 코드를 열어 확인해보세요.

다른 개체, 수준, 시간 프레임으로 멋진 자동 스크라이브가 나타 났습니다. 감사합니다.

 
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);   //  переименуем объект
     }
  } /******************************************************************/

//+------------------------------------------------------------------+
알렉세이 빅토로프:

논리적으로 생각하는 법을 배울 수 있을지도 몰라요.)))

나는 당신이 제안한 것에서 내가 할 수있는 모든 것을 시도했지만 침을 비틀었지만 여전히 MT5의 선을 한 가지 색상으로 그립니다. 그리고 MT4에서는 지체 없이 규범을 다시 그립니다.

 

포인트를 가져 와서 다른 버퍼로 전송하기 위해 하나의 지표에서 알고리즘을 구성하는 방법.

- 추세선을 그립니다. (그림처럼)

포인트 스냅샷

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

나는 이미 타이핑하여 모든 것을 시도했지만 그것들은 그려졌지만 어딘가 이해할 수없는 지점에 있습니다.

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

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

표시기를 부착합니다. 작동 중입니다. 이 선만 적용할 수 없습니다.

파일:
1.mq5  82 kb
사유: