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

 
Artyom Trishkin :

표시자숫자(5)

고맙습니다!
 

다른 질문을 하겠습니다. 동일한 지표를 기반으로 합니다. 차트에 지표를 매달았다고 가정합니다. 첫 번째 Bid1 값을 얻습니다. 그런 다음 두 번째 Bid2 값을 얻습니다. 그리고 이 두 값을 비교해야 합니다. 두 번째에서 첫 번째를 빼고 첫 번째 Bid1에 더한 숫자를 얻습니다.

입찰가1=1.11133

입찰가2=1.11135

Bid2-Bid1=0.00002

입찰가1+0.00002=1.11135

원래 지표와 동일하게 나타날 것임을 이해합니다.

구현을 보고 코드의 논리를 이해하고 싶을 뿐입니다.

 
Alexey Viktorov :

파일 속성에서 잠금을 제거해야 합니다.

고맙습니다! :)
 
jaffer wilson :

두 가지 진술:

인쇄: 22.33

그리고

인쇄: 2.00000

왜 다른 결론이 있습니까? C/C++에서 위의 문장은 잘 작동합니다.

누구든지 이 문제에 대한 아이디어가 있습니까?

 

MT5의 가격 배열을 처리하도록 도와주세요. 지표가 어떻게 든 불명확합니다. OnCalculate에 있는 가격을 표시합니다.

   for ( int i= 10 ; i>= 0 ; i--)
         PrintFormat ( "s- open[%d] = %d" ,i,open[i]);

그것은 나에게 이상한 가격을 제공합니다:

 2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 10 ] = 1597040639
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 9 ] = - 523642413
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 8 ] = 1691873517
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 7 ] = 590987500
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 6 ] = 1583296744
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 5 ] = 115448721
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 4 ] = 360090058
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 3 ] = - 1597040639
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 2 ] = - 856244680
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 1 ] = 366962006
2020.01 . 15 20 : 09 : 51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[ 0 ] = - 1209462791

나는 다르게 하고, 배열을 만들고, 복사합니다.

 double Open[];//глобальная
CopyOpen ( NULL , 0 , 0 ,Bars_To_Process* 2 ,Open); //OnCalculate
 for ( int i= 10 ; i>= 0 ; i--)
         PrintFormat ( "Open[%d] = %d" ,i,Open[i]);//OnCalculate

그리고 그것은 나에게 다음과 같은 것을 줍니다:

 2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 10 ] = 1356522471
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 9 ] = - 1708366192
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 8 ] = - 729800843
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 7 ] = 1499458982
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 6 ] = 167675523
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 5 ] = - 90709709
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 4 ] = - 321607151
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 3 ] = - 314735203
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 2 ] = - 314735203
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 1 ] = 1663011337
2020.01 . 15 20 : 10 : 11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[ 0 ] = - 1408749273

날짜는 훨씬 더 흥미 롭습니다. OnCalculate에 있는 날짜를 표시합니다.

 for ( int i= 10 ; i>= 0 ; i--)
         PrintFormat ( " s- time[%d] = %s" ,i, TimeToString (time[i]));

나는 이것을 얻는다:

 2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 10 ] = 2015.12 . 02 10 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 9 ] = 2015.12 . 02 09 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 8 ] = 2015.12 . 02 08 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 7 ] = 2015.12 . 02 07 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 6 ] = 2015.12 . 02 06 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 5 ] = 2015.12 . 02 05 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 4 ] = 2015.12 . 02 04 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 3 ] = 2015.12 . 02 03 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 2 ] = 2015.12 . 02 02 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 1 ] = 2015.12 . 02 01 : 00
2020.01 . 15 20 : 17 : 04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[ 0 ] = 2015.12 . 02 00 : 00

그리고 내가 복사 할 때 :

 datetime Time[];
CopyTime ( NULL , 0 , 0 ,Bars_To_Process* 2 ,Time);
for ( int i= 10 ; i>= 0 ; i--)
         PrintFormat ( "Time[%d] = %s" ,i, TimeToString (Time[i]));

규칙을 출력합니다.

 2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 10 ] = 2020.01 . 15 10 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 9 ] = 2020.01 . 15 11 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 8 ] = 2020.01 . 15 12 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 7 ] = 2020.01 . 15 13 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 6 ] = 2020.01 . 15 14 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 5 ] = 2020.01 . 15 15 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 4 ] = 2020.01 . 15 16 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 3 ] = 2020.01 . 15 17 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 2 ] = 2020.01 . 15 18 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 1 ] = 2020.01 . 15 19 : 00
2020.01 . 15 20 : 20 : 37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[ 0 ] = 2020.01 . 15 20 : 00

그러나 어떤 날짜에는 멀리 갈 수 없습니다. 이해하도록 도와주세요. 정확한 시가와 종가 를 구하는 방법은 무엇입니까?

 
Yevhenii Levchenko :

MT5의 가격 배열을 처리하도록 도와주세요. 지표가 어떻게 든 불명확합니다. OnCalculate에 있는 가격을 표시합니다.

 for ( int i= 10 ; i>= 0 ; i--)
         PrintFormat ( "s- open[%d] = %d" ,i,open[i]);

이 작업을 수행:

 for ( int i= 10 ; i>= 0 ; i--)
{
   Print ( "s- open[" ,i, "] = " ,open[i]);
}

형식화된 출력 에서 잘못된 유형 사양을 사용했습니다.

 
Igor Makanu :

이 작업을 수행:

형식화된 출력 에서 잘못된 유형 사양을 사용했습니다.

아아아아, 젠장! 정말 감사합니다, 이고르!

%f를 등록하는 것이 필요했습니다... 뭔가 둔탁해졌습니다... 여전히 ArraySetAsSeries를 어디에나 붙일 필요가 있습니다. 조금 특이한...

 
Igor Makanu :

제발

표시기 코드를 처음부터 작성하는 경우(MQL4에서 이식하는 경우 - 다른 질문) ArraySetAsSeries()를 사용하지 않는 것이 좋습니다.

rate_total - 1을 가장 오른쪽 막대의 번호로 사용하고 MQL5의 표시기 논리에 더 빨리 익숙해집니다.

고맙습니다!

나는 처음부터 쓰는 것이 아닙니다 ... MT4에서 MT5로 지표를 번역하고 있습니다
 
Oleg Bondarev :

다른 질문을 하겠습니다. 동일한 지표를 기반으로 합니다. 차트에 지표를 매달았다고 가정해 보겠습니다. 첫 번째 Bid1 값을 얻습니다. 그런 다음 두 번째 Bid2 값을 얻습니다. 그리고 이 두 값을 비교해야 합니다. 두 번째에서 첫 번째를 빼고 첫 번째 Bid1에 더한 숫자를 얻습니다.

입찰가1=1.11133

입찰가2=1.11135

Bid2-Bid1=0.00002

입찰가1+0.00002=1.11135

원래 지표와 동일하게 나타날 것임을 이해합니다.

구현을 보고 코드의 논리를 이해하고 싶을 뿐입니다.

돕다. 자체적으로 작동하는 것은 없습니다. 플로팅을 위해 Bid와 y[ ] 값을 비교하기 위해 2개의 x[ ] 버퍼를 만듭니다. 그리고 아무것도.

 
Oleg Bondarev :

돕다. 자체적으로 작동하는 것은 없습니다. 플로팅을 위해 Bid와 y[ ] 값을 비교하기 위해 2개의 x[ ] 버퍼를 만듭니다. 그리고 아무것도.

다른 방식으로 질문을 시도하십시오. 질문이 명확하지 않을 수 있습니다.