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

 
Nikita Bushuev :

Vladimir, MQL5 마법사를 사용하여 코드를 생성했습니다. 귀하의 EA에서 시도했지만 GBPUSD 통화로 실행할 때도 작동하지 않습니다.

로그에는 다음과 같이 나와 있습니다.

잡지에 쓰여진 내용을 읽으십시오. 귀하의 오류에 대한 설명이 있습니다. (테스터라면 1개의 로그가 있고, 터미널이면 2개의 로그가 있습니다).


또한 다음을 지정하십시오: 어떤 기호와 어떤 기간에 시작하는지. 오늘날 텔레파시는 휴가 중이며 생각을 읽을 사람이 없습니다.

 
Vladimir Karputov :

잡지에 쓰여진 내용을 읽으십시오. 귀하의 오류에 대한 설명이 있습니다. (테스터라면 1개의 로그가 있고, 터미널이면 2개의 로그가 있습니다).

표시기 핸들을 만들 때 테스터가 이 위치에서 충돌합니다. 그것은 = INVALID_HANDLE. 기호 "EURUSD" 변수 에서 기간도 설정됩니다. 이것은 어떻게 가능하며 오류 4804는 무엇을 의미합니까?

ERR_INDICATOR_CANNOT_APPLY

4804

지표는 다른 지표에 적용할 수 없습니다.

m_handle= iAC (symbol,period);
 bool CiAC::Create( const string symbol, const ENUM_TIMEFRAMES period)
  {
//--- check history
   if (!SetSymbolPeriod(symbol,period))
       return ( false );
//--- create
   m_handle= iAC (symbol,period);
//--- check result
   if (m_handle== INVALID_HANDLE )
       return ( false );
//--- idicator successfully created
   if (!Initialize(symbol,period))
     {
       //--- initialization failed
       IndicatorRelease (m_handle);
      m_handle= INVALID_HANDLE ;
       return ( false );
     }
//--- ok
   return ( true );
  }
Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
Предопределенные переменные / _Symbol - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nikita Bushuev :

표시기 핸들을 만들 때 테스터가 이 위치에서 충돌합니다. 그것은 = INVALID_HANDLE. 기호 "EURUSD" 변수 에서 기간도 설정됩니다. 이것은 어떻게 가능하며 오류 4804는 무엇을 의미합니까?

ERR_INDICATOR_CANNOT_APPLY

4804

지표는 다른 지표에 적용할 수 없습니다.

로그를 읽으십시오 - 오류에 대한 설명이 있습니다. 빨리 읽을수록 더 빨리 이해할 수 있습니다.

또한 다음을 지정하십시오: 어떤 기호와 어떤 기간에 시작하는지. 오늘날 텔레파시는 휴가 중이며 생각을 읽을 사람이 없습니다.
 
Vladimir Karputov :

로그를 읽으십시오 - 오류에 대한 설명이 있습니다. 빨리 읽을수록 더 빨리 이해할 수 있습니다.

또한 다음을 지정하십시오: 어떤 기호와 어떤 기간에 시작하는지. 오늘날 텔레파시는 휴가 중이며 생각을 읽을 사람이 없습니다.

플랫폼을 다시 설치하여 문제가 해결되었습니다.

 
Vladimir Pastushak :

개발자 여러분, 시장에 나와 있는 제품은 확인할 수 없습니다.

코드 첨부

CopyRates는 동결을 야기하고 결과적으로 시장은 다음과 같이 씁니다.

EURUSD,H1에 대한 테스트(상계)

테스터가 너무 오래 걸립니다

전략 테스터 보고서를 찾을 수 없습니다.

그리고 정확하게, 검증인은 컷오프를 주었습니다. 1440개의 요소 FOR ALL SYMBOLS에 대한 터미널을 모든 TICK에 요청할 때 정말 생각하지 못했습니까? 동시에 그들은 그것에 대해 생각조차하지 않았습니다. 서버는 5,000개 이상의 기호를 쉽게 가질 수 있고 기호는 1440개의 막대를 가질 수 없습니다 ...


일반적으로 초보자를 위한 주제입니다. 분명히.

 
안녕하세요! 그래프가 로드되지 않는 이유를 알려주실 수 있습니까? 08/14 MT5 거래 플랫폼에 등록된 7개 차트 중 4개 차트는 업데이트를 기대하며 여전히 정지 상태입니다. 이전에 등록된 데모 계정에 있지만 모든 차트는 정시에 업데이트됩니다.
 
Vladimir Karputov :

예시

결과:


블라디미르 감사합니다 나는 당신의 예의 논리를 절대적으로 이해합니다. 당신은 믿습니까?

 
Сергей Таболин :

블라디미르 감사합니다 나는 당신의 예의 논리를 절대적으로 이해합니다. 당신은 믿습니까?

나는 블라디미르가 아니지만 여전히 묻겠습니다. 무엇이 작동하지 않습니까? 모든 것이 오랫동안 흘러 갔고 당신의 모범을 찾고 싶지 않습니다. 다시 복제하십시오.

 
Artyom Trishkin :

나는 블라디미르가 아니지만 여전히 묻겠습니다. 무엇이 작동하지 않습니까? 모든 것이 오랫동안 흘러 갔고 당신의 모범을 찾고 싶지 않습니다. 다시 복제하십시오.

내 예는 다음과 같습니다.

 //+------------------------------------------------------------------+
//|                                                        cTest.mq5 |
//|                                     Copyright 2020, Tabolin S.N. |
//|                           https://www.mql5.com/ru/users/vip.avos |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Tabolin S.N."
#property link        "https://www.mql5.com/ru/users/vip.avos"
#property version    "1.00"
//#property indicator_separate_window
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots    1
//--- plot bars
#property indicator_label1    "bars"
#property indicator_type1    DRAW_CANDLES
#property indicator_color1    clrGold
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- indicator buffers
double    barsBuffer1[];
double    barsBuffer2[];
double    barsBuffer3[];
double    barsBuffer4[];
//+------------------------------------------------------------------+
double    newCandles_Open[ 5 ]   = { 106.785 , 106.724 , 106.760 , 106.767 , 106.769 };
double    newCandles_High[ 5 ]   = { 106.792 , 106.765 , 106.780 , 106.781 , 106.769 };
double    newCandles_Low[ 5 ]    = { 106.716 , 106.719 , 106.746 , 106.758 , 106.715 };
double    newCandles_Close[ 5 ]  = { 106.724 , 106.760 , 106.766 , 106.769 , 106.725 };

int       tick_count           = 0 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
{
//--- indicator buffers mapping
   SetIndexBuffer ( 0 , barsBuffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 , barsBuffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 , barsBuffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 , barsBuffer4, INDICATOR_DATA );
   
   ArraySetAsSeries (barsBuffer1  , true );
   ArraySetAsSeries (barsBuffer2  , true );
   ArraySetAsSeries (barsBuffer3  , true );
   ArraySetAsSeries (barsBuffer4  , true );
   
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 );
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0 );
   PlotIndexSetDouble ( 2 , PLOT_EMPTY_VALUE , 0 );
   PlotIndexSetDouble ( 3 , PLOT_EMPTY_VALUE , 0 );
   
   ArrayInitialize (barsBuffer1   , 0 );
   ArrayInitialize (barsBuffer2   , 0 );
   ArrayInitialize (barsBuffer3   , 0 );
   ArrayInitialize (barsBuffer4   , 0 );
//---
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int    OnCalculate (
   const int         rates_total,       // размер входных таймсерий
   const int         prev_calculated,   // количество обработанных баров на предыдущем вызове
   const datetime &  time[],             // массив Time
   const double &    open[],             // массив Open
   const double &    high[],             // массив High
   const double &    low[],             // массив Low
   const double &    close[],           // массив Close
   const long &      tick_volume[],     // массив Tick Volume
   const long &      volume[],           // массив Real Volume
   const int &       spread[]           // массив Spread
   )
{
   if (rates_total - prev_calculated > 1 )
   {
       if (prev_calculated == 0 )
      {
         Print ( "~~~~ Предварительный расчёт индикатора." );
         for ( int i = 0 ; i < 5 ; i++)
         {
            barsBuffer1[ 0 ] = newCandles_Open[i];
            barsBuffer2[ 0 ] = newCandles_High[i];
            barsBuffer3[ 0 ] = newCandles_Low[i];
            barsBuffer4[ 0 ] = newCandles_Close[i];
         }
         Print ( "~~~~ Предварительный расчёт индикатора закончен." );
      }
       else return ( 0 );
   }
   else Print ( "tick_count = " ,++tick_count);
//--- return value of prev_calculated for next call
   return (rates_total);
}
//+------------------------------------------------------------------+
barBuffer1[0] 을 barsBuffer1[i] 로 변경하면 그려집니다. 그러나 새 양초를 추가하는 방법은 무엇입니까?
 
Сергей Таболин :

내 예는 다음과 같습니다.

barBuffer1[0] 을 barsBuffer1[i] 로 변경하면 그려집니다. 그러나 새 양초를 추가하는 방법은 무엇입니까?

모든 배열이 동일한 방향성을 가지는 것은 아닙니다.