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

 
Kira27 :

세금)) 마지막 질문에 대한 답변은 안보리의 구조를 이해하는 데 많은 도움이 되었습니다. 그런 질문이 있었고, 후행 수업에는 그런 질문이 있습니다.

변수 -- *위치. 빨간색으로 표시했습니다. 그런 이름을 가진 변수입니까, 아니면 *가 의미하는 바가 있습니까? 이 후행은 #include를 컴파일하고 포함합니다 .

그리고 그들 중 누구도 그런 변수를 가지고 있지 않습니다. 그것은 어디에서 왔으며 어딘가에 선언 되었습니까?)) 게다가, 그것이 무엇인지는 그다지 흥미롭지 않습니다 - double &sl ???

먼저 기능 을 확인하십시오. 함수 선언에 변수가 있습니다.

또한 버튼을 사용하여 올바른 코드를 삽입하십시오. 암호

 

무엇이 문제일 수 있습니까? 나는 고문을 차트에 넣었습니다. 그것은 넣지 않았습니다. 전문가들은 다음과 같이 씁니다.

 2021.01 . 24 22 : 11 : 44.019 Nova V6 (EURUSD,H1) cannot load custom indicator 'Standard Deviation smoothing' [ 4802 ]
2021.01 . 24 22 : 11 : 44.020 Nova V6 (EURUSD,H1) Failed to create handle of the iCustom indicator for the symbol EURUSD/ PERIOD_H1 , error code 4802



로그에서 이것은 다음과 같습니다.  

 2021.01 . 24 22 : 18 : 04.506 Experts expert Nova V6 (EURUSD,H1) loaded successfully
2021.01 . 24 22 : 18 : 07.274 Experts initializing of Nova V6 (EURUSD,H1) failed with code 1
2021.01 . 24 22 : 18 : 07.288 Experts expert Nova V6 (EURUSD,H1) removed
Standard Deviation - Трендовые индикаторы - Справка по MetaTrader 5
Standard Deviation - Трендовые индикаторы - Справка по MetaTrader 5
  • www.metatrader5.com
Технический Индикатор Стандартное отклонение (Standard Deviation, StdDev) измеряет волатильность рынка. Этот индикатор характеризует размер...
 
pit84 :

무엇이 문제일 수 있습니까? 나는 고문을 차트에 넣었습니다. 그것은 넣지 않았습니다. 전문가들은 다음과 같이 씁니다.



로그에서 이것은 다음과 같습니다.  

"지표" 폴더에 ' 표준편차 평활화' 표시가 없습니다.

 
pit84 :

무엇이 문제일 수 있습니까? 나는 고문을 차트에 넣었습니다. 그것은 넣지 않았습니다. 전문가들은 다음과 같이 씁니다.



로그에서 이것은 다음과 같습니다.  

사용자 지정 지표 표시기가 없습니다.

 

가장 흥미로운 점은 지표가 있고 문제없이 차트에 배치되지만 어드바이저가 원하지 않는다는 것입니다.

 
pit84 :

가장 흥미로운 점은 지표가 있고 문제없이 차트에 배치되지만 어드바이저가 원하지 않는다는 것입니다.

주의 깊게 읽으십시오. 표시한 곳에 표시기가 없습니다.

버튼을 사용하여 MQL5 코드 붙여넣기 암호 표시기의 존재를 증명하기 위해 Windows 탐색기에서 스크린샷을 붙여넣습니다.
 
BillionerClub :

금전 등록기에서 멀지 않은 곳에서 걸어가면 같은 오류가 발생합니다. 코드의 오류는 무엇입니까?

모든 텔레파시가 휴가 중입니다. 불행히도 당신의 생각을 읽어줄 사람이 없습니다.

 
BillionerClub :

금전 등록기에서 멀지 않은 곳에서 걸어가면 같은 오류가 발생합니다. 코드의 오류는 무엇입니까?

금전 등록기에서, 멀리, 멀리 이동 - 나는 말할 것입니다, s - XZ)))))))))))

 
Vladimir Karputov :

모든 텔레파시가 휴가 중입니다. 불행히도 당신의 생각을 읽어줄 사람이 없습니다.

기본적으로, 나는 내 코드에서 버그를 찾습니다. 이것에는 문제가 없지만 여기에서 논의되고 있기 때문에 그것을 던지기로 결정했습니다. 아마도 이것이 논의되고있는 것일 수도 있습니다. 아마도 내 코드가 해결 될 것입니다.

 
//+------------------------------------------------------------------+
//|                                 Standard Deviation smoothing.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.000"
#include <MovingAverages.mqh>
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots    1
//--- the iStdDev plot
#property indicator_label1    "StdDev smoothing"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrGreenYellow
#property indicator_style1    STYLE_SOLID
#property indicator_width1    2
//--- input parameters 
input int                   Inp_StdDev_ma_period    = 20 ;           // period of averaging
input int                   Inp_StdDev_ma_shift     = 0 ;           // shift
input ENUM_MA_METHOD        Inp_StdDev_ma_method    = MODE_SMA ;     // type of smoothing
input ENUM_APPLIED_PRICE    Inp_StdDev_applied_price= PRICE_CLOSE ; // type of price
//--- indicator buffer 
double StdDevBuffer[];
double StdDevBufferTemp[];
int     handle_iStdDev;         // variable for storing the handle_iStdDev of the iStdDev indicator 
string short_name;             // name of the indicator on a chart 
int     bars_calculated= 0 ;     // we will keep the number of values in the Standard Deviation indicator 
int     m_weightsum;
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int OnInit ()
  {
   m_weightsum= 0 ;
//--- assignment of array to indicator buffer 
   SetIndexBuffer ( 0 ,StdDevBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,StdDevBufferTemp, INDICATOR_CALCULATIONS );
//--- set shift 
   PlotIndexSetInteger ( 0 , PLOT_SHIFT ,Inp_StdDev_ma_shift);
//--- create handle_iStdDev of the indicator iStdDev   
   handle_iStdDev= iStdDev ( Symbol (), Period (),Inp_StdDev_ma_period,
                          Inp_StdDev_ma_shift,Inp_StdDev_ma_method,Inp_StdDev_applied_price);
//--- if the handle_iStdDev is not created 
   if (handle_iStdDev== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code 
       PrintFormat ( "Failed to create handle_iStdDev of the iStdDev indicator for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early 
       return ( INIT_FAILED );
     }
//--- show the symbol/timeframe the Standard Deviation indicator is calculated for 
   short_name= StringFormat ( "StdDev smoothing(%d)" ,Inp_StdDev_ma_period);
   IndicatorSetString ( INDICATOR_SHORTNAME ,short_name);
//--- normal initialization of the indicator   
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
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[])
  {
//--- number of values copied from the iStdDev indicator 
   int values_to_copy;
//--- determine the number of values calculated in the indicator 
   int calculated= BarsCalculated (handle_iStdDev);
   if (calculated<= 0 )
     {
       PrintFormat ( "BarsCalculated() returned %d, error code %d" ,calculated, GetLastError ());
       return ( 0 );
     }
//--- if it is the first start of calculation of the indicator or if the number of values in the iStdDev indicator changed 
//---or if it is necessary to calculated the indicator for two or more bars (it means something has changed in the price history) 
   if (prev_calculated== 0 || calculated!=bars_calculated || rates_total>prev_calculated+ 1 )
     {
       //--- if the iStdDevBuffer array is greater than the number of values in the iStdDev indicator for symbol/period, then we don't copy everything  
       //--- otherwise, we copy less than the size of indicator buffers 
       if (calculated>rates_total)
         values_to_copy=rates_total;
       else
         values_to_copy=calculated;
     }
   else
     {
       //--- it means that it's not the first time of the indicator calculation, and since the last call of OnCalculate() 
       //--- for calculation not more than one bar is added 
      values_to_copy=(rates_total-prev_calculated)+ 1 ;
     }
//--- fill the array with values of the Standard Deviation indicator 
//--- if FillArrayFromBuffer returns false, it means the information is nor ready yet, quit operation 
   if (!FillArrayFromBuffer(StdDevBufferTemp,Inp_StdDev_ma_shift,handle_iStdDev,values_to_copy))
       return ( 0 );
   if (prev_calculated== 0 )
       for ( int i= 0 ;i<Inp_StdDev_ma_period- 1 ;i++)
         StdDevBufferTemp[i]= 0.0 ;
   switch (Inp_StdDev_ma_method)
     {
       case    MODE_SMA :
         SimpleMAOnBuffer(rates_total,prev_calculated, 0 , 3 ,StdDevBufferTemp,StdDevBuffer);
         break ;
       case    MODE_EMA :
         ExponentialMAOnBuffer(rates_total,prev_calculated, 0 , 3 ,StdDevBufferTemp,StdDevBuffer);
         break ;
       case    MODE_SMMA :
         SmoothedMAOnBuffer(rates_total,prev_calculated, 0 , 3 ,StdDevBufferTemp,StdDevBuffer);
         break ;
       default :
         LinearWeightedMAOnBuffer(rates_total,prev_calculated, 0 , 9 ,StdDevBufferTemp,StdDevBuffer,m_weightsum);
         break ;
     }
//--- memorize the number of values in the Standard Deviation indicator 
   bars_calculated=calculated;
//--- return the prev_calculated value for the next call 
   return (rates_total);
  }
//+------------------------------------------------------------------+ 
//| Filling indicator buffers from the iStdDev indicator             | 
//+------------------------------------------------------------------+ 
bool FillArrayFromBuffer( double &std_buffer[],   // indicator buffer of the Standard Deviation line 
                         int std_shift,         // shift of the Standard Deviation line 
                         int ind_handle,         // handle_iStdDev of the iStdDev indicator 
                         int amount             // number of copied values 
                         )
  {
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iStdDevBuffer array with values from the indicator buffer that has 0 index 
   if ( CopyBuffer (ind_handle, 0 ,-std_shift,amount,std_buffer)< 0 )
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the iStdDev indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( false );
     }
//--- everything is fine 
   return ( true );
  }
//+------------------------------------------------------------------+ 
//| Indicator deinitialization function                              | 
//+------------------------------------------------------------------+ 
void OnDeinit ( const int reason)
  {
//--- clear the chart after deleting the indicator 
   Comment ( "" );
  }
//+------------------------------------------------------------------+

Vladimir Karputov :

주의 깊게 읽으십시오. 표시한 곳에 표시기가 없습니다.

버튼을 사용하여 MQL5 코드를 붙여넣고 Windows 탐색기에서 스크린샷을 붙여넣어 표시기의 존재를 증명하십시오.
파일:
tvkzq3.PNG  145 kb
xfwzp8.PNG2.PNG  148 kb
사유: