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

 

EA에서 더 높은 기간의 지표 데이터를 가져오는 것은 불가능합니다.

 2019.07 . 22 07 : 23 : 02.556 Core 1    2017.10 . 05 07 : 00 : 00    Не удалось скопировать значения индикатора. Error = 4806 ,  copied =- 1

그리고 최적화와 함께 작동합니다. 시각화 도우미에서 이 오류를 실행하기 시작합니다.

지표에 무슨 문제가 있습니까?

파일:
ind.mq5  11 kb
 
EgorKim :

EA에서 더 높은 기간의 지표 데이터를 가져오는 것은 불가능합니다.

그리고 최적화와 함께 작동합니다. 시각화 도우미에서 이 오류를 실행하기 시작합니다.

지표에 무슨 문제가 있습니까?

고문 코드는 어디에 있습니까?

가능한 이유는 지표가 있는 경로에 있습니다(iCustom을 통해 EA에서 지표에 대한 지정된 경로). 또한 mq5 및 ex5 표시기 파일은 동일한 폴더에 있어야 합니다.

 
EgorKim :

EA에서 더 높은 기간의 지표 데이터를 가져오는 것은 불가능합니다.

그리고 최적화와 함께 작동합니다. 시각화 도우미에서 이 오류를 실행하기 시작합니다.

지표에 무슨 문제가 있습니까?

따라서 지표는 [날짜 폴더]\MQL5\Indicators\ind.mq5 폴더에 있으며 컴파일된 파일도 거기에 있습니다.

표시기 버퍼 "0" - "평균"에 액세스하는 Expert Advisor의 예:

 //+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
//--- input parameters
input int       Input1= 9 ;
//---
int     handle_iCustom;               // variable for storing the handle of the iCustom indicator /*
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- create handle of the indicator iCustom
   handle_iCustom= iCustom ( Symbol (), Period (), "ind" );
//--- if the handle is not created 
   if (handle_iCustom== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code 
       PrintFormat ( "Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early 
       return ( INIT_FAILED );
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   double means[];
   ArraySetAsSeries (means, true );
   int start_pos= 0 ,count= 3 ;
   if (!iGetArray(handle_iCustom, 0 ,start_pos,count,means))
       return ;

   string text= "Means:" + "\n" ;
   for ( int i=count- 1 ;i>= 0 ;i--)
     {
      text=text+ "#" + IntegerToString (i)+ ": " + DoubleToString (means[i], Digits ())+ "\n" ;
     }
   Comment (text);
  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray( const int handle, const int buffer, const int start_pos, const int count, double &arr_buffer[])
  {
   bool result= true ;
   if (! ArrayIsDynamic (arr_buffer))
     {
       Print ( "This a no dynamic array!" );
       return ( false );
     }
   ArrayFree (arr_buffer);
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied= CopyBuffer (handle,buffer,start_pos,count,arr_buffer);
   if (copied!=count)
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( false );
     }
   return (result);
  }
//+------------------------------------------------------------------+

그리고 테스터의 결과:


온라인:


파일:
Test.mq5  7 kb
 
Vladimir Karputov :

따라서 지표는 [날짜 폴더]\MQL5\Indicators\ind.mq5 폴더에 있으며 컴파일된 파일도 거기에 있습니다.

표시기 버퍼 "0" - "평균"에 액세스하는 Expert Advisor의 예:

테스터의 결과:


온라인:


현재 시간대에 오류가 없습니다.

더 높은 기간에서 데이터를 수신하는 경우 문제가 나타납니다.

분명히 문제는 지표에 있고 내 조언자가 아닙니다)

그리고 최적화 모드에서는 오류가 없습니다. 단일 패스 및 시각화를 포함합니다. 오류가 있습니다. 두르카...

내가 이해하는 한 같은 오페라의 주제가 있습니다.

https://www.mql5.com/ru/forum/190003

Не получается брать данные индикатора со старшего ТФ
Не получается брать данные индикатора со старшего ТФ
  • 2017.04.14
  • www.mql5.com
Уже четвёртый день в индикаторе пытаюсь получить данные стандартного индикатора АО со старшего таймфрейма, и всё никак...
 
EgorKim :

현재 시간대에 오류가 없습니다.

더 높은 기간에서 데이터를 수신하는 경우 문제가 나타납니다.

분명히 문제는 지표에 있고 내 조언자가 아닙니다)

그리고 최적화 모드에서는 오류가 없습니다. 단일 패스 및 시각화를 포함합니다. 오류가 있습니다. 두르카...

내가 이해하는 한 같은 오페라의 주제가 있습니다.

https://www.mql5.com/ru/forum/190003

더 높은 기간에 액세스할 수 없습니다. 데이터가 최신 상태로 유지되지 않습니다.
Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.
Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.
  • 2019.07.21
  • www.mql5.com
Сначала цитата из справочника языка MQL5. Рубрика Организация доступа к данным...
 

이 양식에서 기본 매개변수를 사용하여 H1 차트에 표시기를 던집니다.

오류가 있습니다

아르티옴 트리슈킨

그래서 지표에서 수정해야 할 사항에 대한 도움을 요청합니다.

파일:
ind2.mq5  22 kb
 
EgorKim :

현재 시간대에 오류가 없습니다.

더 높은 기간에서 데이터를 수신하는 경우 문제가 나타납니다.

분명히 문제는 지표에 있고 내 조언자가 아닙니다)

그리고 최적화 모드에서는 오류가 없습니다. 단일 패스 및 시각화를 포함합니다. 오류가 있습니다. 두르카...

내가 이해하는 한 같은 오페라의 주제가 있습니다.

https://www.mql5.com/ru/forum/190003

다음은 ADVISER의 수정 사항입니다. 매개변수 에서 표시기의 시간 프레임을 설정할 수 있습니다 . 테스터와 온라인 모두에서 작동합니다.

 //--- create handle of the indicator iCustom
   handle_iCustom= iCustom ( Symbol (), Inp_period , "ind" ,
                          bars_IN,
                          SP,
                          N_Shift1,
                          Forecast,
                          kstd,
                          Oscilator,
                          N_Buff,
                          Ka,
                          La,
                          Za,
                          Oe,
                          Me,
                          DIGf);
파일:
Test.mq5  10 kb
 
Vladimir Karputov :

다음은 ADVISER의 수정 사항입니다. 매개변수 에서 표시기의 시간 프레임을 설정할 수 있습니다 . 테스터와 온라인 모두에서 작동합니다.

그러면 조언자가 최적화 중에 거래 한다는 것을 어떻게 설명할 수 있습니까? 그리고 시각화할 때 트랜잭션이 한 건도 없습니까?

 
EgorKim :

그러면 조언자가 최적화 중에 거래 한다는 것을 어떻게 설명할 수 있습니까? 그리고 시각화할 때 트랜잭션이 한 건도 없습니까?

포지션을 열기 위한 조건(인디케이터 버퍼 번호 및 바 번호)은 무엇입니까?

 
Vladimir Karputov :

포지션을 열기 위한 조건(인디케이터 버퍼 번호 및 바 번호)은 무엇입니까?

이 같은.

또한 일부 옵티마이저 패스는 시각화 도우미에서 일치합니다.

일부 패스 - 거래 없음

 double price1= 0.0 ;
price1=iCustomGet(handle_ind, 1 , 0 )
double price2= 0.0 ;
price2=iCustomGet(handle_ind, 2 , 0 )
double open= 0.0 ;   
double open          = iOpen ( Symbol (), Period (), 0 );

   if (price1!= 0.0 && price2!= 0.0 && open!= 0.0 )
     {
       if (open<price1)
        {
         buy
        }
       if (open>price2)
        {
         sell
        }
      }
//+------------------------------------------------------------------+
//| Get value of buffers for the iCustom                             |
//|  the buffer numbers are the following:                           |
//+------------------------------------------------------------------+
double iCustomGet( int handle, const int buffer, const int index)
  {
   double Custom[ 1 ];
//--- reset error code 
   ResetLastError ();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if ( CopyBuffer (handle,buffer,index, 1 ,Custom)< 0 )
     {
       //--- if the copying fails, tell the error code 
       PrintFormat ( "Failed to copy data from the iCustom indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated 
       return ( 0.0 );
     }
   return (Custom[ 0 ]);
  }
//+------------------------------------------------------------------+

문제는 지표에 있다고 생각합니다.

그리고 Artem이 올바르게 지적했듯이 문제는 현재 데이터에 있습니다.

그냥 하는 방법을 알고 싶지 않아

사유: