MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 827

 

안녕하세요.

2개의 표시기가 있고 첫 번째는 4개의 버퍼, 두 번째는 2개의 표시기가 있다고 가정해 보겠습니다. 차트에 던지고 데이터 창 을 열면(CTRL + D) 목록에 0에서 5까지 6개의 버퍼가 있습니다. 이 목록에서 MQL의 값(예: 버퍼 5개)을 읽을 수 있습니까? 원하는 표시기에서 iCustom을 통해 매우 편리하지 않습니다. 이 목록에서 더 편리합니다. 그들이 하는 것을 알고 있지만 어떻게?

 

나는 객체 생성 이 지속적으로 검사로 수행되는 도움말의 예를 연구합니다.

 //--- сбросим значение ошибки 
   ResetLastError (); 
//--- создадим кнопку 
   if (! ObjectCreate (chart_ID,name, OBJ_BUTTON ,sub_window, 0 , 0 )) 
     { 
       Print ( __FUNCTION__ , 
             ": не удалось создать кнопку! Код ошибки = " , GetLastError ()); 
       return ( false ); 
     } 


객체에 대해 수행되는 이유는 무엇입니까? 개체가 생성되지 않을 확률은 얼마입니까?


일반적으로 mql 프로그래밍의 좋은 매너 규칙에 대해 읽을 수 있는 곳이 궁금합니다.

 
psyman :

나는 객체 생성 이 지속적으로 검사로 수행되는 도움말의 예를 연구합니다.


객체에 대해 수행되는 이유는 무엇입니까? 개체가 생성되지 않을 확률은 얼마입니까?


일반적으로 mql 프로그래밍의 좋은 매너 규칙에 대해 읽을 수 있는 곳이 궁금합니다.

예를 들어, 같은 이름을 가진 개체가 이미 있습니다.
그리고 좋은 매너의 규칙은 모든 언어에서 동일합니다. 데이터 수신 - 얻은 것 확인, 객체 생성, 생성한 것 확인, 생성 여부 확인 등…
 
이 형식의 4차원 배열 값을 채우는 방법 int Mas[1][2][2][2], 이 배열의 각 셀에 값을 할당하는 방법, 예를 들어 이러한 레코드를 의미합니다. , 2차원 배열 int Arr[1][2]={ 3,4};, 4차원 배열은 어떻게 채워질까요?
 
Artyom Trishkin :
예를 들어, 같은 이름의 개체가 이미 존재합니다.
그리고 좋은 매너의 규칙은 모든 언어에 동일합니다. 당신은 데이터를 얻습니다 - 당신이 얻은 것을 확인하고, 객체를 만들고, 당신이 만든 것을 확인하고, 당신이 그것을 만들었는지 여부를 확인하십시오 ... 등.


함수 내부에 버튼을 만들면 다음과 같이 맹세합니다.

 return ( false );


'return' - 'void' 함수 는 값을 반환합니다. breakeven_fish.mq5 112 열여섯


이 경우 어떻게 해야 합니까?

 
Seric29 :
이 형식의 4차원 배열 값을 채우는 방법 int Mas[1][2][2][2], 이 배열의 각 셀에 값을 할당하는 방법, 예를 들어 이러한 레코드를 의미합니다. , 2차원 배열 int Arr[1][2]={ 3,4};, 4차원 배열은 어떻게 채워질까요?

다차원 배열은 일반적으로 주기로 필요한 값으로 채워집니다. 4차원 배열의 경우 다음과 같아야 하지만 실수할 수 있습니다.

 int A[ 2 , 2 , 4 , 3 ] = {
                     { /*----------- 3-e измерение = 4 ---------------------------*/ 
/*2-e измерение=2 */ {  { 0 , 1 , 2 /*4-e измерение = 3 */ }, { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 } },
                        { { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 } }   
               
                     },
 // 1-е измерение = 2           
                     {  { { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 } },
                     {   { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 }, { 0 , 1 , 2 } }}
                  }; 

사이먼 :

함수 안에 버튼을 만들 때 나는 욕을 한다.

'return' - 'void' 함수 는 값을 반환합니다. breakeven_fish.mq5 112 열여섯

이 경우 어떻게 해야 합니까?

도움말 읽기 시작 https://www.mql5.com/en/docs/basis/function

이것들은 언어의 기초입니다. 도움이 충분하지 않다면 C++에 관한 어떤 책이든 첫 장에서 어떤 기능이 설명되어야 하는지

 
psyman :


함수 안에 버튼을 만들 때 나는 욕을 한다.


'return' - 'void' 함수 는 값을 반환합니다. breakeven_fish.mq5 112 열여섯


이 경우 어떻게 해야 합니까?

함수에서 bool 유형의 값을 반환하면 함수의 유형을 void로 만들 필요가 없지만 어느 유형인지 추측합니다.
 

동지 - 정확성에 대한 지표를보십시오. 값 = (Open[0]-SMA(P,n))/SMA(P,n))*100%라는 공식이 있습니다.

나는 그래프에 스케치합니다. 모든 것이 계산되고 그립니다. 나는 계산기의 어떤 막대에서 그 값을 확인하기 시작합니다 - 그것은 그려진 것과 일치하지 않습니다...

다음은 공식 ((1.0178-1.0182)/1.0182) * 100%에 따라 Open 1.0178, MA(13) 1.0182 계산기에서 계산한 예입니다. 결과적으로 계산기 -0.0393입니다. 그리고 MT4 차트에서는 -0.0929입니다. 코드에 오류가 있습니까? 아니면 계산기가 값을 올바르게 계산하지 않습니까? 도와주세요. 첨부된 지표입니다.

 #property indicator_separate_window 
#property indicator_buffers 1        // Количество буферов
#property indicator_color1   Blue     // Цвет линии 0 буфера

#property   indicator_level1    1
#property   indicator_level2   - 1
//--------------------------------------------------------------- 2 --
//---- indicator parameters 

extern int History    = 5000 ;       // Колич.баров в расчётной истории
extern int Period_SMA = 13 ; 
 

double
   Line_0[];                         // Инд. массив  ravi 
    
//--------------------------------------------------------------- 4 --

int init()                           // Специальная функция init()
  {
   SetIndexBuffer ( 0 ,Line_0);         // Назначение массива буферу
   SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 ); // Стиль линии
   
   IndicatorShortName( "KRI" );
//--------------------------------------------------------------- 5 --
   
   return ( 0 );                           // Выход из спец. функции init()
  }

//--------------------------------------------------------------- 8 --
int start()                         // Специальная функция start()
  {
//--------------------------------------------------------------- 9 --
  
   double
   SMA;                   //  МА для расчета значений индикатора 
                                 // формyла (PRICE-SMA/SMA)*100); 
                             
   int
   i,                             // Индекс бара
   n,                             // Формальн. параметр(индекс бара)
   Counted_bars;                 // Количество просчитанных баров 

//-------------------------------------------------------------- 10 --
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i= Bars -Counted_bars- 1 ;           // Индекс первого непосчитанного
   if (i>History- 1 )                 // Если много баров то ..
      i=History- 1 ;                   // ..рассчитывать заданное колич.
//-------------------------------------------------------------- 11 --
   while (i>= 0 )                       // Цикл по непосчитанным барам
     {
       //-------------------------------------------------------- 12 --
        
      SMA= iMA ( NULL , 0 ,Period_SMA, 0 , MODE_SMA , PRICE_CLOSE ,i); // Значение  SМА
     
      
      Line_0[i] = 0 ; 
       if (SMA> 0 ) Line_0[i] = ((Open[ 0 ]-SMA)/SMA)* 100 ;     //  Индик. массив линии KPI
     
       //-------------------------------------------------------- 13 --
      i--;                           // Расчёт индекса следующего бара
       //-------------------------------------------------------- 14 --
     }
   return ( 0 );                           // Выход из спец. ф-ии start()
  }
//-------------------------------------------------------------- 15 --
파일:
KRI.mq4  7 kb
 
Artyom Trishkin :
함수에서 bool 유형의 값을 반환하면 함수의 유형을 void로 만들 필요가 없지만 어느 유형인지 추측합니다.

함수에서 데이터를 반환해야 하는 경우 어떻게 합니까?


매번 PositionsTotal 을 사용하지 않고 주어진 문자에 대해서만 위치를 반복할 수 있습니까?


지금까지 내가 생각해낸 유일한 방법은 티켓을 어레이에 작성하고 별도로 작업하는 것이지만 더 쉬운 옵션이 있을까요?

 
psyman :

함수에서 데이터를 반환해야 하는 경우 어떻게 합니까?


매번 PositionsTotal을 사용하지 않고 주어진 기호에 대해서만 위치를 반복할 수 있습니까?


지금까지 내가 생각해낸 유일한 방법은 티켓을 어레이에 작성하고 별도로 작업하는 것이지만 더 쉬운 옵션이 있을까요?

결국 무엇이 필요한지 명확하지 않습니다. 일부 흩어진 생각.