도움이 필요한 배열이 범위를 벗어났습니다. - 페이지 4 1234567891011...17 새 코멘트 Tretyakov Rostyslav 2020.12.09 18:55 #31 Dark Kchlyzov : 오류는 없지만 로그에 있습니다. 가장 가까운 최소값이 없기 때문에 처음에는 옳았습니다. 2002년에 시작했고 2016년에는 모든 것이 순조로웠습니다. Dark Kchlyzov 2020.12.10 04:12 #32 MakarFX : 가장 가까운 최소값이 없기 때문에 처음에는 옳았습니다. 2002년에 시작했고 2016년에는 모든 것이 순조로웠습니다. AUDUSD 2020 같은 파슬리. for 2 루프에서 표현식 오류를 제거합니다. 그대로 두면 오류가 없습니다. 이 날에는 라인을 다시 그리지 않습니다. 당신도 확인하십시오. 루프가 거의 항상 1001 마디에서 끊어지는 것이 이상합니다(어쩌면 배열 예배당?) 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: 'Test_Level.mq4'의 범위를 벗어난 배열(51.59) 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1001 Bar_data_D1[i][2] = 0.77324 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1000 Bar_data_D1[i][2] = 0.76934 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 999 Bar_data_D1[i][2] = 0.76907 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 998 Bar_data_D1[i][2] = 0.76963 2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 997 Bar_data_D1[i][2] = 0.7548 //+------------------------------------------------------------------+ //| Test_Level.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict double Bar_data_D1 [][ 6 ]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1 double Low_D1_Level; // Возвращает значение минимальной цены бара D1 double Min_D_Level ; // ближайшей минимальный D уровень datetime Time_Day; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { Level(); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { On_Timer(); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Функция Level //+------------------------------------------------------------------+ void Level() { ArrayCopyRates(Bar_data_D1, _Symbol , PERIOD_D1 ); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров Low_D1_Level = iLow ( _Symbol , PERIOD_D1 , 1 ); // Возвращает значение минимальной цены бара D1 //--- Min_D_Leve //for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++) for ( int i = 1 ; ;i++) { Print ( " i = " ,i, " Bar_data_D1 [i][2] = " ,Bar_data_D1 [i][ 2 ]); if (Bar_data_D1 [i][ 2 ]>= 0 ) { if ( Bar_data_D1 [i][ 2 ] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][ 2 ]; break ; } } } //+-------------------------Low_D1_Level----------------------------+ if ( ObjectFind ( "Low_D1" )!=Low_D1_Level) { ObjectDelete ( "Low_D1" ); if ( ObjectFind ( "Low_D1" )!= 0 ) { ObjectCreate ( "Low_D1" , OBJ_HLINE , 0 , Time[ 0 ],Low_D1_Level); ObjectSet( "Low_D1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Low_D1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Low_D1_label" )!=Low_D1_Level) { ObjectDelete ( "Low_D1_label" ); if ( ObjectFind ( "Low_D1_label" ) != 0 ) { ObjectCreate ( "Low_D1_label" , OBJ_TEXT , 0 , Time[ 13 ], Low_D1_Level); ObjectSetText( "Low_D1_label" , "Low_D1: " + DoubleToStr(Low_D1_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-------------------------Min_D_Level----------------------------+ if ( ObjectFind ( "Min_D" )!= Min_D_Level) { ObjectDelete ( "Min_D" ); if ( ObjectFind ( "Min_D" )!= 0 ) { ObjectCreate ( "Min_D" , OBJ_HLINE , 0 , Time[ 0 ],Min_D_Level); ObjectSet( "Min_D" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Min_D" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Min_D_label" )!=Min_D_Level) { ObjectDelete ( "Min_D_label" ); if ( ObjectFind ( "Min_D_label" ) != 0 ) { ObjectCreate ( "Min_D_label" , OBJ_TEXT , 0 , Time[ 30 ], Min_D_Level); ObjectSetText( "Min_D_label" , "Min_D: " + DoubleToStr(Min_D_Level, _Digits ), 8 , "Verdana" , Brown); } } } //+------------------------------------------------------------------+ //| функция удаление всех объектов созданных советником //+------------------------------------------------------------------+ void DestroyObject() { int tot= ObjectsTotal (); for ( int i=tot; i>= 0 ; i--) { if ( ObjectName (i)== "Low_MN1" ){ ObjectDelete ( 0 , "Low_MN1" ); Print ( "<< Объект Low_MN удалён >>" );} if ( ObjectName (i)== "Low_MN1_label" ){ ObjectDelete ( 0 , "Low_MN1_label" ); Print ( "<< Объект Low_MN1_label удалён >>" );} if ( ObjectName (i)== "Min_D" ){ ObjectDelete ( 0 , "Min_D" ); Print ( "<< Объект Min_D удалён >>" );} if ( ObjectName (i)== "Min_D_label" ){ ObjectDelete ( 0 , "Min_D_label" ); Print ( "<< Объект Min_D_label удалён >>" );} } } //+-------------------------------------------------------------------------+ // функция Timer //+-------------------------------------------------------------------------+ void On_Timer() { if (Day()!= Time_Day) { Level(); Time_Day = Day(); } } Local and server time Finding the maximum and Finding objects Dark Kchlyzov 2020.12.10 04:32 #33 Aleksei Stepanenko : 질문이 있습니다. 그리고 왜 0이 아닌 첫 번째 요소에서 루프를 시작합니까? 여기서 자명한 것 같습니다. Low_D1_Level이 전날의 레벨이면 Low_D1_Level에서 Min_D_Level을 검색하기 시작하고 i=1과 같습니다. 아니면 제가 잘못 알고 있는 것입니까? Tretyakov Rostyslav 2020.12.10 06:18 #34 Dark Kchlyzov : 루프가 거의 항상 1001 마디에서 끊어지는 것이 이상합니다(어쩌면 배열 예배당?) 항상은 아니다 2020.12 . 10 08 : 16 : 47.604 EURUSD,H1: 265 tick events ( 265 bars, 13782 bar states) processed in 0 : 00 : 53.781 (total time 0 : 00 : 55.813 ) 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Testing pass stopped due to a critical error in the EA 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: array out of range in 'Array.mq4' ( 51 , 59 ) 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1011 Bar_data_D1 [i][ 2 ] = 1.32667 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1010 Bar_data_D1 [i][ 2 ] = 1.32642 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1009 Bar_data_D1 [i][ 2 ] = 1.32857 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1008 Bar_data_D1 [i][ 2 ] = 1.335 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1007 Bar_data_D1 [i][ 2 ] = 1.34244 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1006 Bar_data_D1 [i][ 2 ] = 1.3414 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1005 Bar_data_D1 [i][ 2 ] = 1.34815 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1004 Bar_data_D1 [i][ 2 ] = 1.35409 2020.12 . 10 08 : 16 : 47.604 2016.12 . 16 00 : 00 : 00 Array EURUSD,H1: i = 1003 Bar_data_D1 [i][ 2 ] = 1.35726 Tretyakov Rostyslav 2020.12.10 06:24 #35 나는 AUDUSD가 없다 2020.12 . 10 08 : 22 : 28.794 AUDUSD,H1: 121 tick events ( 121 bars, 3166 bar states) processed in 0 : 00 : 00.000 (total time 0 : 00 : 02.016 ) 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Testing pass stopped due to a critical error in the EA 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: array out of range in 'Array.mq4' ( 51 , 59 ) 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1049 Bar_data_D1 [i][ 2 ] = 0.71997 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1048 Bar_data_D1 [i][ 2 ] = 0.71453 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1047 Bar_data_D1 [i][ 2 ] = 0.71557 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1046 Bar_data_D1 [i][ 2 ] = 0.7117599999999999 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1045 Bar_data_D1 [i][ 2 ] = 0.7108 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1044 Bar_data_D1 [i][ 2 ] = 0.71086 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1043 Bar_data_D1 [i][ 2 ] = 0.7160300000000001 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1042 Bar_data_D1 [i][ 2 ] = 0.7281 2020.12 . 10 08 : 22 : 28.794 2020.03 . 10 00 : 00 : 00 Array AUDUSD,H1: i = 1041 Bar_data_D1 [i][ 2 ] = 0.73392 Tretyakov Rostyslav 2020.12.10 07:12 #36 Dark Kchlyzov : 확실하지 않지만 다음과 같은 것을 삽입해야한다고 생각합니다. if (Bar_data_D1 [i][ 2 ]== EMPTY_VALUE )Bar_data_D1 [i][ 2 ]=Low_D1_Level; Dark Kchlyzov 2020.12.10 09:34 #37 MakarFX : 확실하지 않지만 다음과 같은 것을 삽입해야한다고 생각합니다. 지표처럼? EMPTY_VALUE 표시기 버퍼 의 빈 값 Dark Kchlyzov 2020.12.10 09:45 #38 Dark Kchlyzov : 지표처럼? EMPTY_VALUE 표시기 버퍼 의 빈 값 이제 구조를 연구할 시간입니다. MqlRates 핸들을 올바르게 선언하는 방법과 위치 Bar_data_D1[i].high; Максимум свечи Bar_data_D1[i].low; Минимум свечи 약간의 시간이 있고 어렵지 않다면 할 수 있습니다(코드의 예) C++에 대한 많은 정보가 있지만 MQL4 아아, 어떻게 그리고 무엇에 대한 일반적인 설명이 없습니다. Tretyakov Rostyslav 2020.12.10 10:45 #39 Dark Kchlyzov : 약간의 시간이 있고 어렵지 않다면 할 수 있습니다(코드의 예) 아아, 저는 프로그래머가 아닙니다. 지금까지는 관심만 있습니다. EMPTY_VALUE 대신 NULL Ihor Herasko 2020.12.10 11:54 #40 Dark Kchlyzov : 이제 구조를 연구할 시간입니다. MqlRates 핸들을 올바르게 선언하는 방법과 위치 약간의 시간이 있고 어렵지 않다면 할 수 있습니다(코드의 예) C++에 대한 많은 정보가 있지만 MQL4 아아, 어떻게 그리고 무엇에 대한 일반적인 설명이 없습니다. 무엇을 더 추가해야할지조차 모르겠습니다 ... 원칙적으로 주요 예를 들었습니다. 이것은 코드입니다. 그래서 정확히 무엇이 불분명한지 물어보십시오. 1234567891011...17 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
오류는 없지만 로그에 있습니다.
가장 가까운 최소값이 없기 때문에 처음에는 옳았습니다.
2002년에 시작했고 2016년에는 모든 것이 순조로웠습니다.
가장 가까운 최소값이 없기 때문에 처음에는 옳았습니다.
2002년에 시작했고 2016년에는 모든 것이 순조로웠습니다.
AUDUSD 2020 같은 파슬리. for 2 루프에서 표현식 오류를 제거합니다. 그대로 두면 오류가 없습니다. 이 날에는 라인을 다시 그리지 않습니다.
당신도 확인하십시오.
루프가 거의 항상 1001 마디에서 끊어지는 것이 이상합니다(어쩌면 배열 예배당?)
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: 'Test_Level.mq4'의 범위를 벗어난 배열(51.59)
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1001 Bar_data_D1[i][2] = 0.77324
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 1000 Bar_data_D1[i][2] = 0.76934
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 999 Bar_data_D1[i][2] = 0.76907
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 998 Bar_data_D1[i][2] = 0.76963
2020.12.10 09:56:40.177 2020.03.02 00:01:00 Test_Level AUDUSD,H1: i = 997 Bar_data_D1[i][2] = 0.7548
질문이 있습니다. 그리고 왜 0이 아닌 첫 번째 요소에서 루프를 시작합니까?
여기서 자명한 것 같습니다. Low_D1_Level이 전날의 레벨이면 Low_D1_Level에서 Min_D_Level을 검색하기 시작하고 i=1과 같습니다. 아니면 제가 잘못 알고 있는 것입니까?
루프가 거의 항상 1001 마디에서 끊어지는 것이 이상합니다(어쩌면 배열 예배당?)
항상은 아니다
나는 AUDUSD가 없다
확실하지 않지만 다음과 같은 것을 삽입해야한다고 생각합니다.
확실하지 않지만 다음과 같은 것을 삽입해야한다고 생각합니다.
지표처럼?
EMPTY_VALUE
표시기 버퍼 의 빈 값
지표처럼?
EMPTY_VALUE
표시기 버퍼 의 빈 값
이제 구조를 연구할 시간입니다.
MqlRates 핸들을 올바르게 선언하는 방법과 위치
약간의 시간이 있고 어렵지 않다면 할 수 있습니다(코드의 예)
C++에 대한 많은 정보가 있지만 MQL4 아아, 어떻게 그리고 무엇에 대한 일반적인 설명이 없습니다.
Dark Kchlyzov :
약간의 시간이 있고 어렵지 않다면 할 수 있습니다(코드의 예)
아아, 저는 프로그래머가 아닙니다. 지금까지는 관심만 있습니다.
EMPTY_VALUE 대신 NULL
이제 구조를 연구할 시간입니다.
MqlRates 핸들을 올바르게 선언하는 방법과 위치
약간의 시간이 있고 어렵지 않다면 할 수 있습니다(코드의 예)
C++에 대한 많은 정보가 있지만 MQL4 아아, 어떻게 그리고 무엇에 대한 일반적인 설명이 없습니다.
무엇을 더 추가해야할지조차 모르겠습니다 ... 원칙적으로 주요 예를 들었습니다. 이것은 코드입니다. 그래서 정확히 무엇이 불분명한지 물어보십시오.