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

 

구조에서 문자열을 제거하면 작동합니다.

또는 요소별로 복사, 각 구조 변수
또는 문자열을 정적 배열 uchar[16]으로 바꾸십시오.

 
Taras Slobodyanik :

구조에서 문자열을 제거하면 작동합니다.

또는 요소별로 복사, 각 구조 변수
또는 문자열을 정적 배열 uchar[16]으로 바꾸십시오.


제거할 문자열은?

실은 구조체형 변수가 어떻게 같은 구조체형의 다른 변수에 복사되는지 알아보기 위해 참고서에 들렀는데... 그리고 그 안에 선언된 함수들은 어떻게 될까요? 요소별로 복사하는 것은 좋지 않습니다 ... 매우 긴 발보가 얻어집니다.

 
Aleksandr Brown :

제거할 문자열은?

실은 구조체형 변수가 어떻게 같은 구조체형의 다른 변수에 복사되는지 알아보기 위해 참고서에 들렀는데... 그리고 그 안에 선언된 함수들은 어떻게 될까요? 요소별로 복사하는 것은 좋지 않습니다 ... 매우 긴 발보가 얻어집니다.

Arraycopy 를 사용해 보셨습니까?

 
STARIJ :

Arraycopy를 사용해 보셨습니까?


그것은 구조화된 데이터 에 관한 것입니다. 배열의 형태로 표현하기 위한 구조체 타입의 변수를 의미??? :-))) 옵션도 아닙니다... 구조에 함수가 있는데, 별도로 선언하면 더 많은 혼란을 야기할 것입니다.

 
예, ArrayCopy 는 말도 안됩니다. 색상 구성 요소 를 표시해야 하는 경우 - 여기
 //+------------------------------------------------------------------+ 
//| Компоненты цвета                                                 | 
//+------------------------------------------------------------------+ 
#property strict
#property script_show_inputs
input      color   testColor= 0x00ff00 ;   // задайте цвет для тестирования

//--- функция для вывода цвета в виде строки
string toString( color x)
{
 return    "(" +
      ( string ) ( x & 0xff )           + ":" +
      ( string ) ((x & 0xff00 ) >> 8 )  + ":" +
      ( string ) ((x & 0xff0000 )>> 16 ) + ")"    ;
}

void OnStart () 
{ 
   Alert ( "color " ,testColor, " = " ,toString(testColor));  // выдает color clrLime = (0:255:0) а ведь думал это clrGreen
}

ColorToString(testColor)을 사용 하는 것이 더 쉽지만

데이터를 가져와야 하는 경우 ServiceDesk로 이동합니다. 언급한 오류는 MT5 MetaEditor에도 있습니다.

 
Aleksandr Brown :

제거할 문자열은?

실은 구조체형 변수가 어떻게 같은 구조체형의 다른 변수에 복사되는지 알아보기 위해 참고서에 들렀는데... 그리고 그 안에 선언된 함수들은 어떻게 될까요? 요소별로 복사하는 것은 좋지 않습니다 ... 매우 긴 발보가 얻어집니다.


예, 죄송합니다, 간과하고 잘못 조언했습니다 ...

내가 기억하는 한 새로운 공용체 유형이 도입되었으며 다음과 같이 해야 합니다.

 #property script_show_inputs

#define red    colir[ 0 ]
#define green  colir[ 1 ]
#define blue   colir[ 2 ]

input color           testColor= clrBlue ; // задайте цвет для тестирования
//--- структура для представления цвета в RGB
union RGB
  {
   color              cvet;
   uchar              colir[ 4 ];
   string             toString();     // функция для получения в виде строки
  };
//--- функция для вывода цвета в виде строки
string RGB::toString( void )
  {
   string out= "(" +( string )red+ ":" +( string )green+ ":" +( string )blue+ ")" ;
   return out;
  }

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- переменная для хранения в RGB
   RGB colorRGB;

   colorRGB.cvet=testColor;
   Print ( "color " ,colorRGB.cvet, " = " ,colorRGB.toString());
//---
  }
 

좋은 오후에요. 잘못된 정보를 제공하는 이유를 명확히 하십시오.


 //+------------------------------------------------------------------+
//---- indicator buffers
double       AO[];                 // массив для индикатора iAO
//---- handles for indicators
int          AO_handle;           // указатель на индикатор iAO
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- создание указателя на объект - индикатор iAO
   AO_handle= iAO ( NULL , 0 );
//--- если произошла ошибка при создании объекта, то выводим сообщение
   if (AO_handle< 0 )
     {
       Print ( "Объект iAO не создан: Ошибка исполнения = " , GetLastError ());
       //--- принудительное завершение программы
       return (- 1 );
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   ArrayFree (AO);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {

//--- Достаточно ли количество баров для работы
   if ( Bars ( _Symbol , _Period )< 10 ) // общее количество баров на графике меньше 10?
     {
       Alert ( "На графике меньше 10 баров, советник не будет работать!!" );
       return ;
     }

   ArraySetAsSeries (AO, true );
//--- заполнение массива AO[] текущими значениями индикатора iAO
//--- задаём порядок индексации массива как в таймсерии
//--- если произошла ошибка, то прекращаем выполнение дальнейших операций;
   if ( CopyBuffer (AO_handle, 0 , 0 , 100 ,AO)<= 0 ) return ;
   double AO_1=AO[ 1 ];
   AO_1= NormalizeDouble (AO_1, 7 );
   Print ( "AO=" ,AO_1);
   double AO_2=AO[ 2 ];
   AO_2= NormalizeDouble (AO_2, 7 );
   Print ( "AO2=" ,AO_2);
  }
//+------------------------------------------------------------------+
 
gastinets :

좋은 오후에요. 잘못된 정보를 제공하는 이유를 명확히 하십시오.


잘못된 정보는 어디서 보셨나요?

그리고 코드를 올바르게 붙여 넣으십시오 (나는 당신의 게시물에서 수정했습니다)

빨간색 직사각형으로 동그라미 친:


 

코드로 이해했습니다. 죄송합니다. 앞으로 기억하겠습니다.

음수 값이 올바르게 표시되지 않습니다. 아마도 더블 타입 때문에

나는 질문을 명확히 할 것입니다 - 음수 값을 올바르게 표시하는 방법과 양수 값처럼 정규화할 수 있는지 여부(올바르게 표시됨)

 
gastinets :

코드로 이해했습니다. 죄송합니다. 앞으로 기억하겠습니다.

음수 값이 올바르게 표시되지 않습니다. 아마도 더블 타입 때문에

나는 질문을 명확히 할 것입니다 - 음수 값을 올바르게 표시하는 방법과 양수 값처럼 정규화할 수 있는지 여부(올바르게 표시됨)


내가 어렸을 때 계산기를 만졌을 때 나는 똑같은 Eshki를 가지고 있었다. 프로그래밍을 시작한 후 계산기가 생각났고 모든 것이 제자리에 있었습니다.


문자열에서 숫자를 보려면 문자열로 변환해 보십시오.

   double AO_1=AO[ 1 ];
   AO_1= NormalizeDouble (AO_1, 7 );
   Print ( "AO=" , DoubleToString (AO_1, 7 ));
   double AO_2=AO[ 2 ];
   AO_2= NormalizeDouble (AO_2, 7 );
   Print ( "AO2=" , DoubleToString (AO_2, 7 ));