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

 
ANDREY :

어떤 식으로든 도움이 될 수 있어서 기쁩니다 :=) :=) :=)

이제 내 코드에 대해 알아보겠습니다. 이 코드는 너무 나빠서 깊이 파고드는 것이 불편할 것입니다. 그러나 이 코드의 단일 배열(가격 값 포함)을 파일에 작성한 다음 프로그램이 이 파일에서 해당 값을 읽고 추가 계산에 해당 값을 사용하면 적어도 내 코드의 이점이 무엇인지 말해 주십시오. ? 그리고 60개 요소의 배열. 내 코드에서 구체적으로 무엇이 더 좋을까요?
도와 주셔서 감사합니다.

그것은 코드의 품질에 관한 것이 아닙니다. 나는 다른 사람의 코드를 보지 않습니다. 내가 필요로 하거나 자선 공격의 고통 속에 있는 것을 제외하고 :=)))) 그러나 이것은 점점 더 적게 발생합니다 ...

원하는 경우 결과적으로 필요한 것과 이를 위해 수행한 작업을 말로 설명할 수 있습니다. 그러면 문제 해결의 방향이 얼마나 올바른지 분명해질 것입니다.

 
Alexey Viktorov :

또는 자선 공격의 고통 속에서, :-)))) ....

그리고 다음 공격은 언제인가요???   ::))) 나는 악화가 정확히 이른 봄에 일어난다는 것을 읽었습니다.   :=))) 귀하의 사면이 더 빨리 끝나기를 바랍니다.   :=))))

그리고 공격 은 가능한 한 자주 ..... :))))

 
ANDREY :

팁 고마워. 나는 이미 Kovalev의 튜토리얼에서 FILE OPERATIONS 섹션을 읽기 시작했습니다. 참으로...뭔가가 조금씩 풀리기 시작하고 있습니다. 내가 테스트하는 모든 Expert Advisors가 Tester 터미널의 디렉토리에 있는 .cvv 확장자를 가진 막대 가격 값(내 프로그램에서 생성되지는 않았지만)이 있는 텍스트 파일을 읽는다는 것을 깨달았습니다.
즉, 어떤 프로그램의 정보(데이터)가 파일에 쓰여지고 이 데이터는 파일에서 읽혀집니다. 프로그램 자체에 저장하는 것이 바람직하지 않은 파일에 많은 양의 데이터가 기록되는 것 같았습니다. 포함된 파일 mqh와 같은 것입니다.
어렵지 않다면 게시물의 내 코드와 관련하여 게시물 에서 Alexey Viktorov의 ".... .csv를 작성하고 배열로 읽으시겠습니까 ....." 라는 문구를 설명할 수 있습니다.
나는 그가 텍스트 파일을 의미한다고 생각한다   .cvv(테스터 카탈로그의 막대 가격 포함). 그러나 그가 정확히 무엇을 의미하는지 나는 여전히 이해하지 못합니다. 결국, 이 .cvv 파일은 제가 작성한 것이 아니라 Alpari 딜러 프로그램에 의해 작성되었습니다... 프로그램이 어레이에서 읽는 방법 - 일반적으로 조금 이해합니다... 해당 주소의 어레이 셀에 액세스하고 내부로 침투합니다. 셀에 액세스하고 셀 값에 액세스합니다(즉, 읽기). 어떻게 프로그램이 배열이 아닌 배열로 읽을 수 있습니까? 이것은 일종의 풀리지 않는 모순입니다 .... 내 아마추어적인 의견으로는 보입니다. 어떤 이유로 배열에 일부 값만 쓸 수 있는 것 같습니다. 그리고 배열에서만 읽을 있습니다.

Kovalev는 binfile에 배열 항목이 없습니다. 교과서 2009. binfile만 있었습니다. 그리고 bin 파일의 배열이 나중에 나타났습니다. Bin 파일은 더 빨리 쓰고 읽습니다. 줄 바꿈이 없습니다. 그러나 그들은 사람이 읽을 수 없습니다)

 
Valeriy Yastremskiy :

Kovalev는 binfile에 배열 항목이 없습니다. 교과서 2009. binfile만 있었습니다. 그리고 bin 파일의 배열이 나중에 나타났습니다. Bin 파일은 더 빨리 쓰고 읽습니다. 줄 바꿈이 없습니다. 그러나 그들은 사람이 읽을 수 없습니다)

저에게 새로운 정보를 주셔서 대단히 감사합니다. 그리고 50% 정도 이해했습니다.... 그리고 제 발달 단계에서 꼭 필요하다고 생각되면 이 주제를 철저히 공부하겠습니다.
하지만 지금은 내 작은 코드 에 고정되어 있습니다. 이를 통해 최소 시간과 다른 컴퓨터 및 프로그램으로 2포인트의 차이로 1분 촛불에서 열린 2개의 인접한 주문 사이의 최소 가격을 찾으려고 합니다. 자원 . 이를 위해 배열을 만들었습니다. 그들은 여기에서 이 배열이 함수를 사용하여 파일에 기록되어야 하고 다른 함수를 사용하여 후속 계산을 위해 이 파일(즉, 배열에서)에서 데이터를 수신해야 한다고 설득하려고 합니다.

그러나 이 코드의 단일 배열(가격 값 포함)을 파일에 작성한 다음 프로그램이 이 파일에서 이를 읽고 추가 계산에 해당 값을 사용하면 내 코드의 이점이 무엇인지 말해 보십시오. 그리고 60개 요소의 배열. 내 코드에서 구체적으로 무엇이 더 좋을까요?

당연히 테스트 중에 분 초 안에 그러한 주문 이 많이있을 것이며 그 사이에는 최소값을 계산해야합니다. 내 코드에서는 내게 떠오른 아이디어의 예시일 뿐입니다.
Aleksey Viktorov는 아직 자선단체의 공격을 받지 않았기 때문에 이 질문에 대답할 수 없습니다.
아마도 당신은 내가 앞으로 나아가는 데 도움이 되는 모든 전제 조건을 이미 성숙시켰을 것입니다.


도와 주셔서 감사합니다.

 
ANDREY :

Grail 의 제작자를 이해하는 것은 어렵습니다. 모든 계산을 지표로 전송하고 Expert Advisor에서 신호를 수신할 수 있습니다.

 
ANDREY :

저에게 새로운 정보를 주셔서 대단히 감사합니다. 그리고 50% 정도 이해했습니다.... 그리고 제 발달 단계에서 꼭 필요하다고 생각되면 이 주제를 철저히 공부하겠습니다.
하지만 지금은 내 작은 코드 에 고정되어 있습니다. 이를 통해 최소 시간과 다른 컴퓨터 및 프로그램으로 2포인트의 차이로 1분 촛불에서 열린 2개의 인접한 주문 사이의 최소 가격을 찾으려고 합니다. 자원 . 이를 위해 배열을 만들었습니다. 그들은 여기에서 이 배열이 함수를 사용하여 파일에 기록되어야 하고 다른 함수를 사용하여 후속 계산을 위해 이 파일(즉, 배열에서)에서 데이터를 수신해야 한다고 설득하려고 합니다.

그러나 이 코드의 단일 배열(가격 값 포함)을 파일에 작성한 다음 프로그램이 이 파일에서 이를 읽고 추가 계산에 해당 값을 사용하면 내 코드의 이점이 무엇인지 말해 보십시오. 그리고 60개 요소의 배열. 내 코드에서 구체적으로 무엇이 더 좋을까요?

당연히 테스트 중에 분 초 안에 그러한 주문 이 많이있을 것이며 그 사이에는 최소값을 계산해야합니다. 내 코드에서는 내게 떠오른 아이디어의 예시일 뿐입니다.
Aleksey Viktorov는 아직 자선단체의 공격을 받지 않았기 때문에 이 질문에 대답할 수 없습니다.
아마도 당신은 내가 앞으로 나아가는 데 도움이 되는 모든 전제 조건을 이미 성숙시켰을 것입니다.


도와 주셔서 감사합니다.

논리가 좀 이해가 안됩니다. 몇 가지 데이터를 배열에 쓰는 이유는 무엇입니까? 변수에 저장할 수 있습니다. 배열은 같은 유형의 변수가 많이 있는 경우입니다. 그리고 5보다 작으면 변수로 기억하는 것이 가능하다. 나중에 동일한 Expert Advisor에서 읽기 위해 어레이에 저장된 데이터를 파일에 쓰는 이유는 무엇입니까? 그들은 또한 사용할 수 있습니다. 그들은 이 Advisor가 아닌 다른 Advisor 간의 교환 또는 추가 처리를 위해 파일에 씁니다. 또한 내가 실수하지 않는다면 배열은 항상 전역적입니다.

 
ANDREY :

저에게 새로운 정보를 주셔서 대단히 감사합니다. 그리고 50% 정도 이해했습니다.... 그리고 제 발달 단계에서 꼭 필요하다고 생각되면 이 주제를 철저히 공부하겠습니다.
하지만 지금은 내 작은 코드 에 고정되어 있습니다. 이를 통해 최소 시간과 다른 컴퓨터 및 프로그램으로 2포인트의 차이로 1분 촛불에서 열린 2개의 인접한 주문 사이의 최소 가격을 찾으려고 합니다. 자원 . 이를 위해 배열을 만들었습니다. 그들은 여기에서 이 배열이 함수를 사용하여 파일에 기록되어야 하고 다른 함수를 사용하여 후속 계산을 위해 이 파일(즉, 배열에서)에서 데이터를 수신해야 한다고 설득하려고 합니다.

그러나 이 코드의 단일 배열(가격 값 포함)을 파일에 작성한 다음 프로그램이 이 파일에서 이를 읽고 추가 계산에 해당 값을 사용하면 내 코드의 이점이 무엇인지 말해 보십시오. 그리고 60개 요소의 배열. 내 코드에서 구체적으로 무엇이 더 좋을까요?

당연히 테스트 중에 분 초 안에 그러한 주문 이 많이있을 것이며 그 사이에는 최소값을 계산해야합니다. 내 코드에서는 내게 떠오른 아이디어의 예시일 뿐입니다.
Aleksey Viktorov는 아직 자선단체의 공격을 받지 않았기 때문에 이 질문에 대답할 수 없습니다.
아마도 당신은 내가 앞으로 나아가는 데 도움이 되는 모든 전제 조건을 이미 성숙시켰을 것입니다.


도와 주셔서 감사합니다.

시작은 이미 너무 멀어서 자세하게 답변드리기가 좀 어렵네요... 그래도 똑똑하게 노력하겠습니다...

내 기억이 맞다면, 주문이 시작된 양초의 저점이 언제 형성되었는지 확인하는 것이 필요합니다. 이 양초가 현재 상태이면 문제가 없습니다. 변수에 주문을 열고 두 숫자 중 작은 숫자를 넣은 다음 양초가 닫힐 때까지 계속합니다. 그러나 이 양초가 이미 10일이 되었을 때 이를 판별해야 하는 경우 이는 이미 mql4의 문제입니다. 이것은 mql5에서 수행하는 것이 매우 쉽습니다. 지정된 시간 "시작 및 끝" 틱을 복사하기만 하면 이 배열에 필요한 모든 것이 포함됩니다. 그리고 mql4의 경우 파일에 틱을 쓰라는 제안을 받았으므로 나중에 이 틱을 얻을 수 있고 이 틱 배열에서 이미 결정할 수 있습니다. 해당 촛불의 낮은 값이 배열의 최소값보다 작으면 낮음은 다음과 같습니다. 주문이 열리기 전에. 그들이 같으면 주문이 시작된 후에 Low가 형성되었습니다.

비록... EA가 작동한다면, 여기에 언급된 것처럼 즉시 변수로 정의하는 것으로 충분합니다. 이에 대해 "수학 함수" 섹션의 설명서에서 읽을 수 있는 함수가 있습니다. 어떤 이유로 EA가 작동하지 않으면 틱이 기록되지 않고 가져오지도 않습니다.

 
Alexey Viktorov :

시작은 이미 너무 멀어서 자세히 답변드리기는 좀 어렵습니다만... 그래도 똑똑하게 노력하겠습니다...

내 기억 이 맞다면, 주문이 시작된 양초의 저점이 언제 형성되었는지 확인하는 것이 필요합니다. 이 양초가 현재 상태이면 문제가 없습니다. 변수에 주문을 열고 두 숫자 중 작은 숫자를 넣은 다음 양초가 닫힐 때까지 계속합니다. 그러나 이 양초가 이미 10일이 되었을 때 이것을 결정해야 한다면 이것은 이미 mql4의 문제입니다. 이것은 mql5에서 수행하는 것이 매우 쉽습니다. 지정된 시간 "시작 및 끝" 틱을 복사하기만 하면 이 배열에 필요한 모든 것이 포함됩니다. 그리고 mql4의 경우 파일에 틱을 쓰라는 제안을 받았으므로 나중에 이 틱을 얻을 수 있고 이 틱 배열에서 이미 결정할 수 있습니다. 해당 촛불의 낮은 값이 배열의 최소값보다 작으면 낮음은 다음과 같습니다. 주문이 열리기 전에. 그들이 같으면 주문이 시작된 후에 Low가 형성되었습니다.

비록... EA가 작동한다면, 여기에 언급된 것처럼 즉시 변수로 정의하는 것으로 충분합니다. 이에 대해 "수학 함수" 섹션의 설명서에서 읽을 수 있는 함수가 있습니다. 어떤 이유로 EA가 작동하지 않으면 틱이 기록되지 않고 가져오지도 않습니다.

이 경우와 관련하여 mql5와 비교한 mql4의 가능성에 대해 저에게 새로운 정보를 주셔서 대단히 감사합니다. 그러나 이상하게도 당신이 나에 대해 설명하는 문제를 해결했고 해결 방법은 독창성과 최적성에 충격을 받았습니다.
그 후, 나는 이 게시물 에서 공식화된 또 다른 유사한 작업에 직면했습니다

파일에 눈금을 쓰는 대신 파일에 눈금을 쓰지 않고 문제를 해결하는 코드를 만들었습니다. 이 코드를 사용하여   시간과 기타 컴퓨터 및 프로그램 리소스를 가장 적게 사용하여 2포인트의 차이로 1분 캔들에서 열린 2개의 인접한 주문 사이의 최소 가격을 찾으십시오. 당연히 시험기간에는   그러한 영장   최소값을 계산해야 하는 분 초 내부,   많이 있을 것입니다 . 내 코드에서는 내게 떠오른 아이디어의 예시일 뿐입니다.

그리고 지금 나는 그러한 질문에 대한 답에 관심이 있습니다. 당신이 여기에서 조언한 것처럼 파일에 틱을 쓴다면 내 코드의 이점은 무엇입니까? 내 코드에서 구체적으로 무엇이 더 좋을까요?


Valeriy Yastremskiy 이 이 질문에 대해 설명합니다.하지만 파일에 눈금을 쓰라고 조언한 사람의 의견을 듣고 싶습니다.
도와 주셔서 감사합니다

 
Valeriy Yastremskiy :

논리가 좀 이해가 안됩니다. 몇 가지 데이터를 배열에 쓰는 이유는 무엇입니까? 변수에 저장할 수 있습니다. 배열은 같은 유형의 변수가 많이 있는 경우입니다. 그리고 5보다 작으면 변수로 기억하는 것이 가능하다. 나중에 동일한 Expert Advisor에서 읽기 위해 어레이에 저장된 데이터를 파일에 쓰는 이유는 무엇입니까? 그들은 또한 사용할 수 있습니다. 그들은 이 Advisor가 아닌 다른 Advisor 간의 교환 또는 추가 처리를 위해 파일에 씁니다. 또한 내가 실수하지 않는다면 배열은 항상 전역적입니다.

조언 해주셔서 감사합니다. 동의합니다. 때로는 틱이 5개 이하일 수 있습니다. 그러나 1분 촛불에는 초보다 훨씬 더 많은 틱이 있을 수 있으며 인접한 주문 사이의 수도 5보다 훨씬 더 많을 수 있습니다.
특히 빨간색으로 강조 표시된 내 생각이 일치하는 것이 기뻤습니다. 그러나 경험이 많은 동지가 내 불확실성을 증가 시켰기 때문에 나는 그들에 대해 확신하지 못했습니다.

 
ANDREY :

이 경우와 관련하여 mql5와 비교한 mql4의 가능성에 대해 저에게 새로운 정보를 주셔서 대단히 감사합니다. 하지만 이상하게도 당신이 나에 대해 설명하는 문제를 해결했고 그 해결 방식은 독창성과 최적성에 충격을 받았습니다.
그 후, 나는 이 게시물에서 공식화한 또 다른 유사한 작업에 직면했습니다.

각 틱 에서 가격 값을 추적해야 합니다. X + 2 가 형성되는 순간에 루프로 하는 방법도 알고 있고 , iLow 와 iLowest 를 사용하는 경우처럼 X + 2 가 형성되는 동안 한번에 즉시 하는 방법 (즉시, 한 번에) .
이것을 가르쳐 주시면 정말 감사하겠습니다.
감사해요


파일에 틱을 쓰라는 조언을 받았습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MQL4 및 MQL5에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론

알렉세이 빅토 로프 , 2021.04.09 18:33

할 수 있다. 함수를 사용하여 .bin 파일에 쓰기만 하면 됩니다.

 uint    FileWriteArray ( 
   int           file_handle,         // handle файла 
   const void &  array[],             // массив 
   int           start= 0 ,             // начальный индекс в массиве 
   int           count= WHOLE_ARRAY      // количество элементов 
   );

그리고 읽기

 uint    FileReadArray ( 
   int     file_handle,               // handle файла 
   void &  array[],                   // массив для записи 
   int     start= 0 ,                   // стартовая позиция для записи в массив 
   int     count= WHOLE_ARRAY            // сколько читать 
   );

파일에 틱을 쓰는 대신 파일에 틱을 쓰지 않고 문제를 해결하는 코드를 만들었습니다.

파일에 쓰지 않고 내 아이디어를 더 쉽게 구현할 수 없습니까? 내 코드처럼. 이것은 작동하는 코드가 아니지만 1분 캔들에서 열린 인접 주문 사이의 최소값을 찾는 방법에 대한 내 아이디어를 설명하기 위해
도와 주셔서 감사합니다

 double P[ 60 ],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick ()
{
Tick++;

if ( OrdersTotal ()== 1 &&Tick< 2189 )
{
P[x]=Bid;
Print ( "------------------------P[x]=Bid------------------------=" , DoubleToString (P[x], 5 ), "  x " ,  x);
x++;
}
if ( OrdersTotal ()== 2 &&Tick== 2189 )
{
x1=x;
x= 0 ;
ArraySort (P, WHOLE_ARRAY , 0 ,MODE_ASCEND);
T=( 60 -x1);
Print ( "------------------------МИНИМУМ=------------------------=" , DoubleToString (P[T], 5 ), "  Tick " ,  Tick, "  x1 " ,  x);
}

if (Tick== 2176 ||Tick== 2188 )
{
OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 ,Ask+ 300 * Point ,Ask- 100 * Point , "300" , 0 );
G2=G;
G=Tick;
}
}

즉, 각 틱의 가격을 파일이 아닌 배열에 즉시 썼습니다.


이 코드로 나는 노력하고있다   시간과 기타 컴퓨터 및 프로그램 리소스를 가장 적게 사용하여 2포인트의 차이로 1분 캔들에서 열린 2개의 인접한 주문 사이의 최소 가격을 찾으십시오. 당연히 시험기간에는   그러한 영장   최소값을 계산해야 하는 분 초 내부,   많이 있을 것입니다 . 내 코드에서는 내게 떠오른 아이디어의 예시일 뿐입니다.

그리고 지금 나는 그러한 질문에 대한 답에 관심이 있습니다. 당신이 여기에서 조언한 것처럼 파일에 틱을 쓴다면 내 코드의 이점은 무엇입니까? 내 코드에서 구체적으로 무엇이 더 좋을까요?


Valeriy Yastremskiy 이 이 질문에 대해 설명합니다.하지만 파일에 눈금을 쓰라고 조언한 사람의 의견을 듣고 싶습니다.
도와 주셔서 감사합니다

특히 저를 도우려는 사람들에게 부담을 주지 않으려면 링크로 연결하는 것보다 '주머니에' 넣고 삽입하는 것이 좋습니다.

이제 이 문제에 대해: 주문 번호 1이 열렸습니다... 이 순간 최저가는 물론 주문의 시작 가격보다 낮습니다. 글쎄, 깃발은 그의 손에있다 ...

주문 번호 2가 열렸고 여기에서 가격을 제어하는 것이 필요합니다……… 다시, 수학 함수 fmin()을 사용하여 양초가 닫히기 전에 변수에 값을 씁니다. 양초가 닫히자 마자 가격 통제를 중단하고 더 이상 필요하지 않습니다. 그리고 결과 값은 두 번째 주문이 열릴 때부터 양초가 닫힐 때까지의 시간 간격에서 최소 가격이 됩니다. 아니면 제가 뭔가 잘못 이해한건지...