오류, 버그, 질문 - 페이지 14

 
stringo :
부울 최적화 수정
글쎄요, 하지만 응용 프로그램에서 어떤 움직임도 보이지 않습니다(여전히 특정 뉘앙스가 있었습니다) ...
 
Interesting :
글쎄요, 하지만 응용 프로그램에서 어떤 움직임도 보이지 않습니다(여전히 특정 뉘앙스가 있었습니다) ...

기다려주세요.

응용 프로그램은 일정 시간 후에 동기화됩니다.

 
alexvd :

기다려주세요.

응용 프로그램은 일정 시간 후에 동기화됩니다.

알림을 받으면 동기화가 더 빨라집니다 ...


추신

예를 들어, 그들은 내 응용 프로그램 번호 14620(동기화되는 고통스럽게 긴 것)을 잊어버렸습니다...

 

내가 뭘 잘못하고 있는지 말해봐. 설명을 위해 지표가 생성됩니다.

1. 두 개의 지표를 만들었으며 모든 것이 별도로 작동(그리기)되었습니다.

표시등 00(단색)

 #property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_color1  Green

double      Buffer_0[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   SetIndexBuffer ( 0 ,Buffer_0, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_LINE );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| 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< 10 ) return ( 0 );
   int  start_pos= 0 ;   // точка старта

   if (prev_calculated== 0 ) start_pos=rates_total- 100 ;
   else start_pos=prev_calculated- 1 ;
   
   for ( int i=start_pos;i<rates_total;i++)
     {
     Buffer_0[i]=high[i];
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }

표시등 11(다색)

 #property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_color1  Blue,Yellow,Red

double      Buffer_0[],Buffer_1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Buffer_0, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,Buffer_1, INDICATOR_COLOR_INDEX );

   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_COLOR_LINE );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| 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< 10 ) return ( 0 );
   int  start_pos= 0 ;   // точка старта

   if (prev_calculated== 0 ) start_pos=rates_total- 100 ;
   else start_pos=prev_calculated- 1 ;
   
   for ( int i=start_pos;i<rates_total;i++)
     {
     Buffer_0[i]=low[i];
     Buffer_1[i]= 1 ;
     if (Buffer_0[i]>Buffer_0[i- 1 ]) Buffer_1[i]= 0 ;
     if (Buffer_0[i]<Buffer_0[i- 1 ]) Buffer_1[i]= 2 ;
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  } 

2. 이제 그것들을 함께 결합하고 싶습니다. 표시기 11(다색)을 기본으로 사용하고 표시기 00에서 수행한 것처럼 버퍼 1개를 더 추가합니다.

선(Buffer_2[i]=high[i];)은 그리지 않고 계산되지만 색상을 변경할 수 있습니다.

 #property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   2
#property indicator_color1  Blue,Yellow,Red
#property indicator_color2  Green

double      Buffer_0[],Buffer_1[];
double      Buffer_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   SetIndexBuffer ( 0 ,Buffer_0, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,Buffer_1, INDICATOR_COLOR_INDEX );
   SetIndexBuffer ( 2 ,Buffer_2, INDICATOR_DATA );
   
   PlotIndexSetInteger ( 0 , PLOT_DRAW_TYPE , DRAW_COLOR_LINE );
   PlotIndexSetInteger ( 2 , PLOT_DRAW_TYPE , DRAW_LINE );
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| 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< 10 ) return ( 0 );
   int  start_pos= 0 ;   // точка старта

   if (prev_calculated== 0 ) start_pos=rates_total- 100 ;
   else start_pos=prev_calculated- 1 ;
   
   for ( int i=start_pos;i<rates_total;i++)
     {
     Buffer_0[i]=low[i];
     Buffer_2[i]=high[i]; // вот это не рисует
     Buffer_1[i]= 1 ;
     if (Buffer_0[i]>Buffer_0[i- 1 ]) Buffer_1[i]= 0 ;
     if (Buffer_0[i]<Buffer_0[i- 1 ]) Buffer_1[i]= 2 ;
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }

내가 무엇을 잘못하고 있지?

파일:
00.mq5  2 kb
11.mq5  2 kb
22.mq5  3 kb
 
Prival :

내가 무엇을 잘못하고 있지?


PlotIndexSetInteger ( 2 , PLOT_DRAW_TYPE , DRAW_LINE );
 
감사하다.
 
sergey1294 :
Вопрос был по поводу внешних параметров input , у меня в советнике их большое количество, необходимые для более гибкой настройки эксперта, так вот как только я выбираю своего эксперта из общего списка в тестере, вылетает сразу терминал. с меньшим количеством нормально.

스트링고 :

일반적인 방법은 특히 설정이 많은 경우 설정에 구성 파일을 사용하는 것입니다. 그러나 구성 파일의 이름은 매개변수로 전달할 수 있습니다.

(전문가들 사이에서) 일반적인 관행은 터미널이 충돌이 아닌 오류 메시지를 표시 하는 것입니다.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
simpleton :
(전문가들 사이에서) 일반적인 관행은 터미널이 충돌이 아닌 오류 메시지를 표시 하는 것입니다.

지원 - 기회가 있을 때마다 터미널을 닫거나 차트에서 전문가를 제거하지 마십시오(개발자에 따르면)...


추신

새에 대해 말하면이 주제에 대한 응용 프로그램 번호 17391이 있습니다 ...

 
Interesting :

알림을 받으면 동기화가 더 빨라집니다 ...


추신

예를 들어, 그들은 내 응용 프로그램 번호 14620(동기화되는 고통스럽게 긴 것)을 잊어버렸습니다...

최신 버전의 도움말을 다운로드하고 " MQL5 참조 / 표준 상수, 열거 및 구조 / 환경 상태 / 기기 정보 " 섹션을 살펴보십시오.
 
Rosh :
최신 버전의 도움말을 다운로드하고 " MQL5 참조 / 표준 상수, 열거 및 구조 / 환경 상태 / 기기 정보 " 섹션을 살펴보십시오.

제가 가지고 있는 파일과 온라인 버전을 비교해봤습니다. 내가 완전히 눈이 멀거나 완전히 똑같거나 ...

내가 알기로는 터미널의 다음 릴리스와 도움말의 새 버전에 대해 이야기하고 있습니까?