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

 
Oleg Remizov :

그리고 내 관찰에 따르면 사용자는 조언자가 화면에 다른 정보를 표시하는 것을 좋아합니다. 화살표, 선, 채널 등을 그려 "인공 지능"의 활발한 활동을 보여줍니다.)

지표에 따르면 고문은 후행을 제공합니다. StopLoss가 그려지는 점선을 사용자가 볼 수 있도록 이 프로세스를 시각화하고 싶습니다.

Trendline 사용, 첫 번째 앵커 포인트는 현재 막대이고 두 번째 앵커 포인트는 히스토리에 대한 1 막대이며 두께를 2-3으로 설정합니다.

 
Vitaly Muzichenko :

Trendline 사용, 첫 번째 앵커 포인트는 현재 막대이고 두 번째 앵커 포인트는 히스토리에 대한 1 막대이며 두께를 2-3으로 설정합니다.

좋은 아이디어! 정말 감사합니다. 그래야 할 것 같습니다.

유행

 
ANDREY :

다음은 선언과 동시에 배열 초기화에 대한 Kovalev의 자습서에서 작성하는 방법입니다.

8.4.4 배열 초기화

배열은 해당 유형의 상수로만 초기화할 수 있으며 1차원 및 다차원 배열은 쉼표로 구분된 1차원 상수 시퀀스로 초기화됩니다. 시퀀스는 중괄호로 묶입니다.

int Mas_i[3][4] = {0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23};

이중 Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { 거짓, 참, 거짓, 참, 참 }

초기화 순서에서 하나 이상의 상수를 생략할 수 있습니다.

교과서에서는 배열이 선언되면 배열의 첫 번째 요소뿐만 아니라 모든 데이터로 배열이 완전히 초기화되는 것 같습니다.
튜토리얼을 잘못 이해했다면 제가 잘못 이해한 부분을 지적해주시면 감사하겠습니다.

당신의 교과서에 대해 토론하고 싶은 마음이 조금도 없었고, 읽지도 않았습니다.

그리고 포럼에 교과서가 구식이며 관련이 없다고 썼습니다.

2차원 배열은 다음과 같이 초기화할 수 있습니다.

 int arr[ 2 ][ 5 ] = {{ 1 , 2 , 3 , 4 , 5 ,}, { 6 , 7 , 8 , 9 , 10 }};
 
Igor Makanu :

당신의 교과서에 대해 토론하고 싶은 마음이 조금도 없었고, 읽지 않았습니다.

그리고 포럼에 교과서가 구식이며 관련이 없다고 썼습니다.

2차원 배열은 다음과 같이 초기화할 수 있습니다.

도와 주셔서 정말로 고맙습니다. 당신은 내 생각을 올바르게 추측했습니다. 2차원 배열을 초기화하는 방법에 대해 머리를 긁적입니다..... 하지만 ArrayInitialize () 함수로만 가능합니다 .
이 함수에 대한 참조는 내가 보기에 1차원 배열만 초기화하는 방법에 대한 정보를 제공합니다.
조언해주시면 정말 감사하겠습니다.

 
ANDREY :

도와 주셔서 정말로 고맙습니다. 당신은 내 생각을 올바르게 추측했습니다. 2차원 배열을 초기화하는 방법에 대해 머리를 긁적입니다..... 하지만 ArrayInitialize() 함수로만 가능합니다 .
이 함수에 대한 참조는 내가 보기에 1차원 배열만 초기화하는 방법에 대한 정보를 제공합니다.
조언해주시면 정말 감사하겠습니다.

ArrayFill()을 사용하면 배열의 모든 요소를 원하는 값으로 채울 수 있으며 2차원 배열에 사용할 수 있습니다. 예제는 이 기능에 대한 도움말을 참조하십시오.

그건 그렇고, ArrayInitialize() 를 2차원 배열에 적용한 것을 확인해보니 잘 됩니다. 두 경우에만 특정 값으로 모든 요소를 초기화할 수 있습니다.

각 요소에 대한 값을 설정해야 하는 경우 이러한 기능이 작동하지 않습니다.

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
Oleg Remizov :

ArrayFill()을 사용하면 배열의 모든 요소를 원하는 값으로 채울 수 있으며 2차원 배열에 사용할 수 있습니다. 예제는 이 기능에 대한 도움말을 참조하십시오.

그건 그렇고, ArrayInitialize() 를 2차원 배열에 적용한 것을 확인해보니 잘 됩니다. 두 경우에만 특정 값으로 모든 요소를 초기화할 수 있습니다.

각 요소에 대한 값을 설정해야 하는 경우 이러한 기능이 작동하지 않습니다.

도와 주셔서 정말로 고맙습니다.

 
Oleg Remizov :

불행히도 템플릿은 저에게 적합하지 않습니다. 설정에서 표시기 표시 기능을 켜고 끄는 것이 필요하며, 그리기는 어드바이저에서 직접 이루어집니다. 고문을 하나의 파일로 전송할 수 있도록.

화살표 대신 동일한 가격과 시간에 두 지점이 있는 추세선을 그립니다. 선 두께를 사용하여 결과 점의 크기를 조정합니다.

 
안녕하세요, 저는 초보자이며 계좌에서 돈을 인출하는 방법과 입금이 필요한 시점을 명확히하고 싶습니다.
 

인사말.

MT4에는 다음과 같은 것이 있습니다.

 #import "user32.dll"
   int SendMessageA( int hWnd, int Msg, int wParam, char &lParam[]);
   int RegisterWindowMessageA( uchar &lParam[]);
#import

string IndiName= "TestBot" ;

void OnStart ()
  {
   char buf[];
   StringToCharArray ( "MetaTrader4_Internal_Message" , buf);
   int MT4InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray (IndiName, buf);
   long handle= ChartGetInteger ( 0 , CHART_WINDOW_HANDLE );
   Print (MT4InternalMsg);
   bool res=SendMessageA(( int )handle, MT4InternalMsg, 14 , buf);
   Print ( "Функция SendMessageA завершила работу с результатом: " ,res);
  }

이 코드는 특정 Expert Advisor를 시작하기 위해 터미널 창에 명령을 보냅니다.

MT5에도 비슷한 기능이 있나요?

다음과 같이 시도했습니다.

 #import "user32.dll"
   int SendMessageA( long hWnd, long Msg, uint wParam, uchar &lParam[]);
   int RegisterWindowMessageA( uchar &lParam[]);
#import

string IndiName= "TestBot" ;

void OnStart ()
  {
   uchar buf[];
   StringToCharArray ( "MetaTrader5_Internal_Message" , buf);
   long MT5InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray (IndiName, buf);
   long handle= ChartGetInteger ( 0 , CHART_WINDOW_HANDLE );
   Print ( "Window handle: " , handle);
   Print ( "Message: " ,MT5InternalMsg);
   for ( int i = 0 ; i< 100 ; i++){
       bool res=SendMessageA(handle, MT5InternalMsg, i , buf);
       printf ( "Функция SendMessageA завершила работу с результатом: %d, номер: %d " ,res, i);
   }
  }

초과하지 않습니다.

spy++로 스캔을 시도했지만 MT4와 달리 MT5에는 전혀 메시지가 없습니다.

전문가 설정 창을 호출하기만 하면 됩니다.

 
50211108 :
안녕하세요, 저는 초보자이며 계좌에서 돈을 인출하는 방법과 입금이 필요한 시점을 명확히하고 싶습니다.

이 자원에서 얻은 만큼만 인출할 수 있으며 이는 프로그램, 신호 및 컴퓨터 용량의 판매입니다. 입력한 내용은 이 리소스에만 사용할 수 있습니다.