MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 846 1...839840841842843844845846847848849850851852853...1953 새 코멘트 Alexey Viktorov 2019.05.20 13:28 #8451 erotin : 로트의 정상화에서 무엇이 잘못되었는지 말해주십시오. 모두 잘못 됐어. "Expert Advisor가 통과해야 하는 검사는..." 기사를 읽으십시오. 기성품 기능이 있습니다. Sergey Voytsekhovsky 2019.05.20 14:02 #8452 완료, 빈 템플릿을 만들고 iCustom() 함수가 작동하는 데 필요한 모든 것을 준비했습니다. 기능에 관심이 있는 iCrossAD 표시기를 등록했습니다. 기능이 작동하고 극단의 위쪽 및 아래쪽 화살표의 인덱스를 올바르게 찾지만 이 화살표가 설정된 가격 값이 잘못되었습니다. 코드가 짧아서 바로 여기에 게시하겠습니다. 만일을 대비하여 이 어드바이저와 인디케이터의 파일을 첨부하겠습니다. //+------------------------------------------------------------------+ //| TestDoEasyPart08.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://mql5.com/ru/users/artmedia70" #property version "1.00" #property description "" #property strict //--- includes #include <DoEasy\Engine.mqh> #include <Trade\Trade.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\SymbolInfo.mqh> //--- input string Inp_param_indi_iCrossAD = "Input parameters indicator iCrossAD" ; //----- "Внешние параметры индикатора iCrossAD" ----- input uint InpPeriodFind = 400 ; // Bars for calculate input uint InpUnheckedBars = 2 ; // Unchecked bars input uint InpPeriodIND = 21 ; // CCI period //--- global variables CEngine engine; CTrade trade; CPositionInfo apos; CSymbolInfo asymbol; uint period_find = InpPeriodFind; //Number bars for calculate int CrossAD; //Хэндл индикатора iCrossAD double Buf_Arrow_Sell[], //Массив буфера для приема значений последних стрелок ВНИЗ из индикатора iCrossAD Last_Arrow_Sell_volume, //Переменная для записи значения цены последней стрелки ВНИЗ индикатора iCrossAD Last_Arrow_Sell_index; //Переменная для записи значения индекса свечи последней стрелки ВНИЗ индикатора iCrossAD double Buf_Arrow_Buy[], Last_Arrow_Buy_volume, Last_Arrow_Buy_index; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { ArraySetAsSeries (Buf_Arrow_Buy, true ); ArraySetAsSeries (Buf_Arrow_Sell, true ); //--- CrossAD = iCustom (asymbol.Name(), _Period , "iCrossAD" ); if (CrossAD == INVALID_HANDLE ) { Print ( "Не удалось создать описатель индикатора iCrossAD!" ); return ( INIT_FAILED ); } else Print ( "Хендл iCrossAD = " ,CrossAD); //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { //--- delete objects ObjectsDeleteAll ( 0 , "" ,- 1 ); Comment ( "" ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { int n= 0 ; if ( CopyBuffer (CrossAD, 1 , 0 , period_find, Buf_Arrow_Buy) != period_find) { Print ( "НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d" , GetLastError ()); return ; } for (n= 0 ; n<period_find; n++) { if (Buf_Arrow_Buy[n]!= EMPTY_VALUE ) break ; } Last_Arrow_Buy_volume = Buf_Arrow_Buy[n]; Last_Arrow_Buy_index = n; Print ( "Last_Arrow_Buy_volume = " ,Last_Arrow_Buy_volume, ", Last_Arrow_Buy_index = " ,Last_Arrow_Buy_index); if ( CopyBuffer (CrossAD, 2 , 0 , period_find, Buf_Arrow_Sell) != period_find) { Print ( "НЕ удалось правильно скопировать данные из 2-го буфера индикатора iCrossAD, error code %d" , GetLastError ()); return ; } for (n= 0 ; n<period_find; n++) { if (Buf_Arrow_Sell[n]!= EMPTY_VALUE ) break ; } Last_Arrow_Sell_volume = Buf_Arrow_Sell[n]; Last_Arrow_Sell_index = n; Print ( "Last_Arrow_Sell_volume = " ,Last_Arrow_Sell_volume, ", Last_Arrow_Sell_index = " ,Last_Arrow_Sell_index); Comment ( "-------------------------" , "\n Last_Arrow_Buy_volume = " ,Last_Arrow_Buy_volume, "\n Last_Arrow_Buy_index = " ,Last_Arrow_Buy_index, "\n ---------------------- " , "\n Last_Arrow_Sell_volume = " ,Last_Arrow_Sell_volume, "\n Last_Arrow_Sell_index = " ,Last_Arrow_Sell_index ); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer () { if (! MQLInfoInteger ( MQL_TESTER )) engine. OnTimer (); } 파일: Test_iCustom.mq5 10 kb iCrossAD.mq5 49 kb Sergey Voytsekhovsky 2019.05.20 14:13 #8453 "전문가" 탭의 로그 항목은 다음과 같습니다. 2019.05.20 15:11:15.025 Test_iCustom(EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0 2019.05.20 15:11:15.025 Test_iCustom(EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0 2019.05.20 15:11:16.798 Test_iCustom(EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0 2019.05.20 15:11:16.798 Test_iCustom(EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0 Sergey Voytsekhovsky 2019.05.20 14:16 #8454 Sergey Voytsekhovsky : "전문가" 탭의 로그 항목은 다음과 같습니다. 2019.05.20 15:11:15.025 Test_iCustom(EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0 화살표가 생성된 가격 대신 = -11211905.17483469 Artyom Trishkin 2019.05.20 14:29 #8455 Sergey Voytsekhovsky : ... 화살표가 생성된 가격 대신 = -11211905.17483469 Ctrl+D를 누르고 표시줄 을 따라 마우스를 이동하고 데이터 창에서 버퍼의 값을 확인합니다. Sergey Voytsekhovsky 2019.05.20 14:42 #8456 Artyom Trishkin : Ctrl+D를 누르고 표시줄 을 따라 마우스를 이동하고 데이터 창에서 버퍼의 값을 확인합니다. 내가 당신을 올바르게 이해한다면 거기에없는 고양이를 위해 방을 찾고 있었습니까? 그 당시 배열은 가격이 아니라 지표 값으로 채워졌습니까? 감사합니다. 다시 생각하겠습니다. 또 다른 마지막 질문 - 컴파일러는 2개의 경고를 제공합니다. 부호 불일치 Test_iCustom.mq5 79 20 부호 불일치 Test_iCustom.mq5 92 20 나는 그들의 이유를 이해할 수 없습니다. "일치하지 않는 표시"는 무엇을 의미합니까(Yandex의 번역가). Artyom Trishkin 2019.05.20 15:01 #8457 Sergey Voytsekhovsky : 내가 당신을 올바르게 이해했다면 거기에없는 고양이를 위해 방을 찾고 있었습니까? 그 당시 배열은 가격이 아니라 지표 값으로 채워졌습니까? 감사합니다. 다시 생각하겠습니다. 또 다른 마지막 질문 - 컴파일러는 2개의 경고를 제공합니다. 부호 불일치 Test_iCustom.mq5 79 20 부호 불일치 Test_iCustom.mq5 92 20 나는 그들의 이유를 이해할 수 없습니다. "일치하지 않는 표시"는 무엇을 의미합니까(Yandex의 번역가). 번호 기호가 누락되었을 수 있습니다. 다음 코드 줄을 표시합니다. Sergey Voytsekhovsky 2019.05.20 15:03 #8458 Artyom Trishkin : 번호 기호가 누락되었을 수 있습니다. 다음 코드 줄을 표시합니다. for (n= 0 ; n<period_find; n++) 두 번째 것은 정확히 동일합니다(Strelok 배열에서 0이 아닌 값을 찾기 위한 루프). Artyom Trishkin 2019.05.20 15:16 #8459 Sergey Voytsekhovsky : 두 번째 것은 정확히 동일합니다(Strelok 배열에서 0이 아닌 값을 찾기 위한 루프). 변수 n 및 period_find 의 유형은 무엇입니까? 가장 중요한 것은 표시되지 않았습니다 ... 그래서 시도: for (n= 0 ; n<( int )period_find; n++) 일반적으로 - OnTick() 핸들러 수준에서 루프 변수를 선언하는 이유는 무엇입니까? 다음과 같이 가능합니까? for ( int n= 0 ; n<( int )period_find; n++) 그리고 OnTick()에서 선언 n을 제거하십시오. 거기에는 필요하지 않습니다. Sergey Voytsekhovsky 2019.05.20 15:19 #8460 Artyom Trishkin : 변수 n 및 period_find의 유형은 무엇입니까? 가장 중요한 것은 표시되지 않았습니다 ... uint period_find = InpPeriodFind; //Number bars for calculate int n= 0 ; 1...839840841842843844845846847848849850851852853...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
로트의 정상화에서 무엇이 잘못되었는지 말해주십시오.
모두 잘못 됐어. "Expert Advisor가 통과해야 하는 검사는..." 기사를 읽으십시오. 기성품 기능이 있습니다.
완료, 빈 템플릿을 만들고 iCustom() 함수가 작동하는 데 필요한 모든 것을 준비했습니다.
기능에 관심이 있는 iCrossAD 표시기를 등록했습니다.
기능이 작동하고 극단의 위쪽 및 아래쪽 화살표의 인덱스를 올바르게 찾지만 이 화살표가 설정된 가격 값이 잘못되었습니다.
코드가 짧아서 바로 여기에 게시하겠습니다. 만일을 대비하여 이 어드바이저와 인디케이터의 파일을 첨부하겠습니다.
"전문가" 탭의 로그 항목은 다음과 같습니다.
2019.05.20 15:11:15.025 Test_iCustom(EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0
2019.05.20 15:11:15.025 Test_iCustom(EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0
2019.05.20 15:11:16.798 Test_iCustom(EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0
2019.05.20 15:11:16.798 Test_iCustom(EURUSD,H1) Last_Arrow_Sell_volume = -11203799.85975282, Last_Arrow_Sell_index = 50.0
"전문가" 탭의 로그 항목은 다음과 같습니다.
2019.05.20 15:11:15.025 Test_iCustom(EURUSD,H1) Last_Arrow_Buy_volume = -11211905.17483469, Last_Arrow_Buy_index = 5.0
화살표가 생성된 가격 대신 = -11211905.17483469
Sergey Voytsekhovsky :
...
화살표가 생성된 가격 대신 = -11211905.17483469
Ctrl+D를 누르고 표시줄 을 따라 마우스를 이동하고 데이터 창에서 버퍼의 값을 확인합니다.
Ctrl+D를 누르고 표시줄 을 따라 마우스를 이동하고 데이터 창에서 버퍼의 값을 확인합니다.
내가 당신을 올바르게 이해한다면 거기에없는 고양이를 위해 방을 찾고 있었습니까? 그 당시 배열은 가격이 아니라 지표 값으로 채워졌습니까? 감사합니다. 다시 생각하겠습니다.
또 다른 마지막 질문 - 컴파일러는 2개의 경고를 제공합니다.
부호 불일치 Test_iCustom.mq5 79 20
부호 불일치 Test_iCustom.mq5 92 20
나는 그들의 이유를 이해할 수 없습니다. "일치하지 않는 표시"는 무엇을 의미합니까(Yandex의 번역가).
내가 당신을 올바르게 이해했다면 거기에없는 고양이를 위해 방을 찾고 있었습니까? 그 당시 배열은 가격이 아니라 지표 값으로 채워졌습니까? 감사합니다. 다시 생각하겠습니다.
또 다른 마지막 질문 - 컴파일러는 2개의 경고를 제공합니다.
부호 불일치 Test_iCustom.mq5 79 20
부호 불일치 Test_iCustom.mq5 92 20
나는 그들의 이유를 이해할 수 없습니다. "일치하지 않는 표시"는 무엇을 의미합니까(Yandex의 번역가).
번호 기호가 누락되었을 수 있습니다. 다음 코드 줄을 표시합니다.
번호 기호가 누락되었을 수 있습니다. 다음 코드 줄을 표시합니다.
두 번째 것은 정확히 동일합니다(Strelok 배열에서 0이 아닌 값을 찾기 위한 루프).
변수 n 및 period_find 의 유형은 무엇입니까? 가장 중요한 것은 표시되지 않았습니다 ...
그래서 시도:
일반적으로 - OnTick() 핸들러 수준에서 루프 변수를 선언하는 이유는 무엇입니까?
다음과 같이 가능합니까?
그리고 OnTick()에서 선언 n을 제거하십시오. 거기에는 필요하지 않습니다.
변수 n 및 period_find의 유형은 무엇입니까? 가장 중요한 것은 표시되지 않았습니다 ...