도움이 필요한 배열이 범위를 벗어났습니다. - 페이지 15 1...891011121314151617 새 코멘트 Tretyakov Rostyslav 2020.12.14 08:58 #141 시각화가 포함된 MetaQuotas 2020.12.14 10:55:49.261 AUDUSD,H1: 61687 tick events (61686 bars, 124333 bar states) processed in 0:00:38.188 (total time 0:00:38.203) 2020.12.14 10:55:49.261 2020.12.11 23:59:59 Array2 AUDUSD,H1: < < Объект Min_D удалён > > 2020.12.14 10:55:49.261 2020.12.11 23:59:59 Array2 AUDUSD,H1: < < Объект Min_D_label удалён > > 2020.12.14 10:55:49.261 2020.12.11 23:59:59 Array2 AUDUSD,H1: i = 2/ Min_D_Level = 0.74038/ Low_D1_Level0.74233/ Разница0.00195 2020.12.14 10:55:49.261 2020.12.11 23:00:00 Array2 AUDUSD,H1: i = 2/ Min_D_Level = 0.74038/ Low_D1_Level0.74233/ Разница0.00195 시각화 기능이 있는 Alpari 2020.12.14 10:56:13.369 AUDUSD,H1: 129781 tick events (129780 bars, 260520 bar states) processed in 0:01:16.688 (total time 0:01:16.719) 2020.12.14 10:56:13.369 2020.12.11 23:59:59 Array2 AUDUSD,H1: < < Объект Min_D удалён > > 2020.12.14 10:56:13.369 2020.12.11 23:59:59 Array2 AUDUSD,H1: < < Объект Min_D_label удалён > > 2020.12.14 10:56:13.369 2020.12.11 23:59:59 Array2 AUDUSD,H1: i = 2/ Min_D_Level = 0.74039/ Low_D1_Level0.74234/ Разница0.00195 2020.12.14 10:56:13.369 2020.12.11 23:00:00 Array2 AUDUSD,H1: i = 2/ Min_D_Level = 0.74039/ Low_D1_Level0.74234/ Разница0.00195 Tretyakov Rostyslav 2020.12.14 09:57 #142 Dark Kchlyzov : 다음은 디버깅할 함수입니다. Post#43 그것이 작동하는 방식입니다))) //+------------------------------------------------------------------+ //| 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 Bar_data_W1 [][ 6 ]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров W1 double Bar_data_MN [][ 6 ]; double High_D1_Level; // Возвращает значение максимальной цены бара D1 double Low_D1_Level; // Возвращает значение минимальной цены бара D1 double High_W1_Level; // Возвращает значение максимальной цены бара W1 double Low_W1_Level ; // Возвращает значение минимальной цены бара W1 double High_MN1_Level; // Возвращает значение максимальной цены бара MN1 double Low_MN1_Level; // Возвращает значение минимальной цены бара MN1 double Max_D_Level; // ближайшей максимальный D уровень double Min_D_Level ; // ближайшей минимальный D уровень double Max_W_Level ; // ближайшей максимальный W уровень double Min_W_Level ; // ближайшей минимальный W уровень double Max_MN_Level ; // ближайшей максимальный MN уровень double Min_MN_Level ; // ближайшей минимальный MN уровень int Max_D_Num ; // ближайшей максимальный день (номер бара) int Min_D_Num ; // ближайшей минимальный день (номер бара) int Max_D_Volume ; // ближайшей максимальный день (Объём) int Min_D_Volume ; // ближайшей минимальный день (Объём) datetime Max_D_Time; // datetime Min_D_Time; // datetime Time_Day; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { Level(); return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { ObjectsDeleteAll ( 0 , "Arr_" ); Print ( "<< Все объекты удалены >>" ); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { On_Timer(); } //+------------------------------------------------------------------+ //| Функция Level v 1.0 //+------------------------------------------------------------------+ void Level() { ArrayCopyRates(Bar_data_D1, _Symbol , PERIOD_D1 ); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров ArrayCopyRates(Bar_data_W1, _Symbol , PERIOD_W1 ); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров ArrayCopyRates(Bar_data_MN, _Symbol , PERIOD_MN1 ); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров High_D1_Level = iHigh ( _Symbol , PERIOD_D1 , 1 ); // Возвращает значение максимальной цены бара D1 Low_D1_Level = iLow ( _Symbol , PERIOD_D1 , 1 ); // Возвращает значение минимальной цены бара D1 High_W1_Level = iHigh ( _Symbol , PERIOD_W1 , 1 ); // Возвращает значение максимальной цены бара W1 Low_W1_Level = iLow ( _Symbol , PERIOD_W1 , 1 ); // Возвращает значение минимальной цены бара W1 High_MN1_Level = iHigh ( _Symbol , PERIOD_MN1 , 1 ); // Возвращает значение максимальной цены бара MN1 Low_MN1_Level = iLow ( _Symbol , PERIOD_MN1 , 1 ); // Возвращает значение минимальной цены бара MN1 //--- Max_D_Level for ( int i = 1 ; i< ArrayRange (Bar_data_D1, 0 ) ;i++) { if (Bar_data_D1 [i][ 3 ] != Bar_data_D1 [i+ 1 ][ 3 ]) { if (Bar_data_D1 [i][ 3 ] > High_D1_Level) { Max_D_Level = Bar_data_D1 [i][ 3 ]; Print ( " i = " ,i, "/Max_D Разница" , DoubleToString (Max_D_Level-High_D1_Level, Digits )); break ; } } if (Bar_data_D1 [i][ 3 ] == Bar_data_D1 [i+ 1 ][ 3 ]) { Max_D_Level = High_D1_Level; Print ( " i = " ,i, "/Max_D Разница" , DoubleToString (Max_D_Level-High_D1_Level, Digits )); break ; } } //--- Min_D_Leve for ( int i = 1 ; i< ArrayRange (Bar_data_D1, 0 ) ;i++) { if (Bar_data_D1 [i][ 2 ] != Bar_data_D1 [i+ 1 ][ 2 ]) { if ( Bar_data_D1 [i][ 2 ] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][ 2 ]; Print ( " i = " ,i, "/Min_D Разница" , DoubleToString (Low_D1_Level-Min_D_Level, Digits )); break ; } } if (Bar_data_D1 [i][ 2 ] == Bar_data_D1 [i+ 1 ][ 2 ]) { Min_D_Level = Low_D1_Level; Print ( " i = " ,i, "/Min_D Разница" , DoubleToString (Low_D1_Level-Min_D_Level, Digits )); break ; } } //--- Max_W_Level for ( int i = 1 ; i< ArrayRange (Bar_data_D1, 0 ) ;i++) { //Print(" i = ",i); if (Bar_data_W1 [i][ 3 ] != Bar_data_W1 [i+ 1 ][ 3 ]) { if (Bar_data_W1 [i][ 3 ] > High_W1_Level) { Max_W_Level = Bar_data_W1 [i][ 3 ]; Print ( " i = " ,i, "/Max_W Разница" , DoubleToString (Max_W_Level-High_W1_Level, Digits )); break ; } } if (Bar_data_W1 [i][ 3 ] == Bar_data_W1 [i+ 1 ][ 3 ]) { Max_W_Level = High_W1_Level; Print ( " i = " ,i, "/Max_W Разница" , DoubleToString (Max_W_Level-High_W1_Level, Digits )); break ; } } //--- Min_W_Level for ( int i = 1 ; i< ArrayRange (Bar_data_D1, 0 ) ;i++) { // Print(" i = ",i); if (Bar_data_W1 [i][ 2 ] != Bar_data_W1 [i+ 1 ][ 2 ]) { if (Bar_data_W1 [i][ 2 ] < Low_W1_Level) { Min_W_Level = Bar_data_W1 [i][ 2 ]; Print ( " i = " ,i, "/Min_W Разница" , DoubleToString (Low_W1_Level-Min_W_Level, Digits )); break ; } } if (Bar_data_W1 [i][ 2 ] == Bar_data_W1 [i+ 1 ][ 2 ]) { Min_W_Level = Low_W1_Level; Print ( " i = " ,i, "/Min_W Разница" , DoubleToString (Low_W1_Level-Min_W_Level, Digits )); break ; } } //+-----------------------High_D1_Level-----------------------------+ if ( ObjectFind ( "Arr_High_D1" )!=High_D1_Level) { ObjectDelete ( "Arr_High_D1" ); if ( ObjectFind ( "Arr_High_D1" )!= 0 ) { ObjectCreate ( "Arr_High_D1" , OBJ_HLINE , 0 , Time[ 0 ],High_D1_Level); ObjectSet( "Arr_High_D1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_High_D1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_High_D1_label" )!=High_D1_Level) { ObjectDelete ( "Arr_High_D1_label" ); if ( ObjectFind ( "Arr_High_D1_label" ) != 0 ) { ObjectCreate ( "Arr_High_D1_label" , OBJ_TEXT , 0 , Time[ 13 ], High_D1_Level); ObjectSetText( "Arr_High_D1_label" , "High_D1: " + DoubleToStr(High_D1_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-------------------------Low_D1_Level----------------------------+ if ( ObjectFind ( "Arr_Low_D1" )!=Low_D1_Level) { ObjectDelete ( "Arr_Low_D1" ); if ( ObjectFind ( "Arr_Low_D1" )!= 0 ) { ObjectCreate ( "Arr_Low_D1" , OBJ_HLINE , 0 , Time[ 0 ],Low_D1_Level); ObjectSet( "Arr_Low_D1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Low_D1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Low_D1_label" )!=Low_D1_Level) { ObjectDelete ( "Arr_Low_D1_label" ); if ( ObjectFind ( "Arr_Low_D1_label" ) != 0 ) { ObjectCreate ( "Arr_Low_D1_label" , OBJ_TEXT , 0 , Time[ 13 ], Low_D1_Level); ObjectSetText( "Arr_Low_D1_label" , "Low_D1: " + DoubleToStr(Low_D1_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-----------------------Max_D_Level-----------------------------+ if ( ObjectFind ( "Arr_Lax_D" )!=Max_D_Level) { ObjectDelete ( "Arr_Lax_D" ); if ( ObjectFind ( "Arr_Lax_D" )!= 0 ) { ObjectCreate ( "Arr_Lax_D" , OBJ_HLINE , 0 , Time[ 0 ],Max_D_Level); ObjectSet( "Arr_Lax_D" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Lax_D" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Lax_D_label" )!=Max_D_Level) { ObjectDelete ( "Arr_Lax_D_label" ); if ( ObjectFind ( "Arr_Lax_D_label" ) != 0 ) { ObjectCreate ( "Arr_Lax_D_label" , OBJ_TEXT , 0 , Time[ 30 ], Max_D_Level); ObjectSetText( "Arr_Lax_D_label" , "Max_D: " + DoubleToStr(Max_D_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-------------------------Min_D_Level----------------------------+ if ( ObjectFind ( "Arr_Lin_D" )!= Min_D_Level) { ObjectDelete ( "Arr_Lin_D" ); if ( ObjectFind ( "Arr_Lin_D" )!= 0 ) { ObjectCreate ( "Arr_Lin_D" , OBJ_HLINE , 0 , Time[ 0 ],Min_D_Level); ObjectSet( "Arr_Lin_D" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Lin_D" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Lin_D_label" )!=Min_D_Level) { ObjectDelete ( "Arr_Lin_D_label" ); if ( ObjectFind ( "Arr_Lin_D_label" ) != 0 ) { ObjectCreate ( "Arr_Lin_D_label" , OBJ_TEXT , 0 , Time[ 30 ], Min_D_Level); ObjectSetText( "Arr_Lin_D_label" , "Min_D: " + DoubleToStr(Min_D_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-----------------------High_W1_Level-----------------------------+ if ( ObjectFind ( "Arr_High_W1" )!=High_W1_Level) { ObjectDelete ( "Arr_High_W1" ); if ( ObjectFind ( "Arr_High_W1" )!= 0 ) { ObjectCreate ( "Arr_High_W1" , OBJ_HLINE , 0 , Time[ 0 ],High_W1_Level); ObjectSet( "Arr_High_W1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_High_W1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_High_W1_label" )!=High_W1_Level) { ObjectDelete ( "Arr_High_W1_label" ); if ( ObjectFind ( "Arr_High_W1_label" ) != 0 ) { ObjectCreate ( "Arr_High_W1_label" , OBJ_TEXT , 0 , Time[ 47 ], High_W1_Level); ObjectSetText( "Arr_High_W1_label" , "High_W1: " + DoubleToStr(High_W1_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-------------------------Low_W1_Level----------------------------+ if ( ObjectFind ( "Arr_Low_W1" )!=Low_W1_Level) { ObjectDelete ( "Arr_Low_W1" ); if ( ObjectFind ( "Arr_Low_W1" )!= 0 ) { ObjectCreate ( "Arr_Low_W1" , OBJ_HLINE , 0 , Time[ 0 ],Low_W1_Level); ObjectSet( "Arr_Low_W1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Low_W1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Low_W1_label" )!=Low_W1_Level) { ObjectDelete ( "Arr_Low_W1_label" ); if ( ObjectFind ( "Arr_Low_W1_label" ) != 0 ) { ObjectCreate ( "Arr_Low_W1_label" , OBJ_TEXT , 0 , Time[ 47 ], Low_W1_Level); ObjectSetText( "Arr_Low_W1_label" , "Low_W1: " + DoubleToStr(Low_W1_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-----------------------Max_W_Level-----------------------------+ if ( ObjectFind ( "Arr_Lax_W" )!=Max_W_Level) { ObjectDelete ( "Arr_Lax_W" ); if ( ObjectFind ( "Arr_Lax_W" )!= 0 ) { ObjectCreate ( "Arr_Lax_W" , OBJ_HLINE , 0 , Time[ 0 ],Max_W_Level); ObjectSet( "Arr_Lax_W" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Lax_W" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Lax_W_label" )!= Max_W_Level) { ObjectDelete ( "Arr_Lax_W_label" ); if ( ObjectFind ( "Arr_Lax_W_label" ) != 0 ) { ObjectCreate ( "Arr_Lax_W_label" , OBJ_TEXT , 0 , Time[ 64 ], Max_W_Level); ObjectSetText( "Arr_Lax_W_label" , "Max_W: " + DoubleToStr(Max_W_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-------------------------Min_W_Level----------------------------+ if ( ObjectFind ( "Arr_Lin_W" )!=Min_W_Level) { ObjectDelete ( "Arr_Lin_W" ); if ( ObjectFind ( "Arr_Lin_W" )!= 0 ) { ObjectCreate ( "Arr_Lin_W" , OBJ_HLINE , 0 , Time[ 0 ],Min_W_Level); ObjectSet( "Arr_Lin_W" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Lin_W" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Lin_W_label" )!= Min_W_Level) { ObjectDelete ( "Arr_Lin_W_label" ); if ( ObjectFind ( "Arr_Lin_W_label" ) != 0 ) { ObjectCreate ( "Arr_Lin_W_label" , OBJ_TEXT , 0 , Time[ 64 ], Min_W_Level); ObjectSetText( "Arr_Lin_W_label" , "Min_W: " + DoubleToStr(Min_W_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-----------------------High_MN1_Level-----------------------------+ if ( ObjectFind ( "Arr_High_MN1" )!=High_MN1_Level) { ObjectDelete ( "Arr_High_MN1" ); if ( ObjectFind ( "Arr_High_MN1" )!= 0 ) { ObjectCreate ( "Arr_High_MN1" , OBJ_HLINE , 0 , Time[ 0 ],High_MN1_Level); ObjectSet( "Arr_High_MN1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_High_MN1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_High_MN1_label" )!=High_MN1_Level) { ObjectDelete ( "Arr_High_MN1_label" ); if ( ObjectFind ( "Arr_High_MN1_label" ) != 0 ) { ObjectCreate ( "Arr_High_MN1_label" , OBJ_TEXT , 0 , Time[ 81 ], High_MN1_Level); ObjectSetText( "Arr_High_MN1_label" , "High_MN1: " + DoubleToStr(High_MN1_Level, _Digits ), 8 , "Verdana" , Brown); } } //+-------------------------Low_MN1_Level----------------------------+ if ( ObjectFind ( "Arr_Low_MN1" )!=Low_MN1_Level) { ObjectDelete ( "Arr_Low_MN1" ); if ( ObjectFind ( "Arr_Low_MN1" )!= 0 ) { ObjectCreate ( "Arr_Low_MN1" , OBJ_HLINE , 0 , Time[ 0 ],Low_MN1_Level); ObjectSet( "Arr_Low_MN1" , OBJPROP_COLOR , clrMaroon ); ObjectSet( "Arr_Low_MN1" , OBJPROP_WIDTH , 1 ); } } if ( ObjectFind ( "Arr_Low_MN1_label" )!=Low_MN1_Level) { ObjectDelete ( "Arr_Low_MN1_label" ); if ( ObjectFind ( "Arr_Low_MN1_label" ) != 0 ) { ObjectCreate ( "Arr_Low_MN1_label" , OBJ_TEXT , 0 , Time[ 81 ], Low_MN1_Level); ObjectSetText( "Arr_Low_MN1_label" , "Low_MN1: " + DoubleToStr(Low_MN1_Level, _Digits ), 8 , "Verdana" , Brown); } } } //+-------------------------------------------------------------------------+ // функция Timer //+-------------------------------------------------------------------------+ void On_Timer() { if (Day()!= Time_Day) { Level(); Time_Day = Day(); } } Aleksei Stepanenko 2020.12.14 10:53 #143 MakarFX : 그것이 작동하는 방식입니다))) 코드에 오류가 있습니다. for ( int i = 1 ; i< ArrayRange (Bar_data_D1 , 0 ) ;i++) { //Print(" i = ",i); if ( Bar_data_W1 [i][ 3 ] != Bar_data_W1 [i+ 1 ][ 3 ]) { if ( Bar_data_W1 [i][ 3 ] > High_W1_Level) { Max_W_Level = Bar_data_W1 [i][ 3 ]; Print ( " i = " ,i, "/Max_W Разница" , DoubleToString (Max_W_Level-High_W1_Level, Digits )); break ; } } if ( Bar_data_W1 [i] [ 3 ] == Bar_data_W1 [i + 1 ][ 3 ]) { Max_W_Level = High_W1_Level; Print ( " i = " ,i, "/Max_W Разница" , DoubleToString (Max_W_Level-High_W1_Level, Digits )); break ; } } 한 배열을 반복하고 다른 배열의 요소에 액세스합니다. Bar_data_W1보다 Bar_data_D1에 더 많은 요소가 있고 이러한 요소에 액세스 하면 배열이 범위를 벗어납니다 . Aleksei Stepanenko 2020.12.14 11:01 #144 Dark Kchlyzov : 제 경우에는 테스트 날짜로부터 2개월 뒤로 스크롤할 수 있는 것으로 나타났습니다. 테스터는 1002개의 일일 막대를 봅니다. 테스터는 테스트 간격의 시작 날짜 이전에 1000개의 양초를 추가합니다. 이전 기록은 고려되지 않습니다. 테스트 간격을 크게 할 필요가 있습니다. 2000년부터 가지고 있습니다. Tretyakov Rostyslav 2020.12.14 11:04 #145 Aleksei Stepanenko : 코드에 오류가 있습니다. 한 배열을 반복하고 다른 배열의 요소에 액세스합니다. Bar_data_D1에 Bar_data_W1보다 더 많은 요소가 있으면 배열이 범위를 벗어납니다 . 수정 //--- Max_W_Level for ( int i = 1 ; i< ArrayRange (Bar_data_W1, 0 ) ;i++) { if (Bar_data_W1 [i][ 3 ] != Bar_data_W1 [i+ 1 ][ 3 ]) { if (Bar_data_W1 [i][ 3 ] > High_W1_Level) { Max_W_Level = Bar_data_W1 [i][ 3 ]; Print ( " i = " ,i, "/Max_W Разница" , DoubleToString (Max_W_Level-High_W1_Level, Digits )); break ; } } if (Bar_data_W1 [i][ 3 ] == Bar_data_W1 [i+ 1 ][ 3 ]) { Max_W_Level = High_W1_Level; Print ( " i = " ,i, "/Max_W Разница" , DoubleToString (Max_W_Level-High_W1_Level, Digits )); break ; } } //--- Min_W_Level for ( int i = 1 ; i< ArrayRange (Bar_data_W1, 0 ) ;i++) { if (Bar_data_W1 [i][ 2 ] != Bar_data_W1 [i+ 1 ][ 2 ]) { if (Bar_data_W1 [i][ 2 ] < Low_W1_Level) { Min_W_Level = Bar_data_W1 [i][ 2 ]; Print ( " i = " ,i, "/Min_W Разница" , DoubleToString (Low_W1_Level-Min_W_Level, Digits )); break ; } } if (Bar_data_W1 [i][ 2 ] == Bar_data_W1 [i+ 1 ][ 2 ]) { Min_W_Level = Low_W1_Level; Print ( " i = " ,i, "/Min_W Разница" , DoubleToString (Low_W1_Level-Min_W_Level, Digits )); break ; } } 오류 없이 작동 2020.12 . 14 13 : 02 : 09.812 AUDUSD,H1: 5902 tick events ( 5901 bars, 12803 bar states) processed in 0 : 00 : 00.125 (total time 0 : 00 : 00.125 ) 2020.12 . 14 13 : 02 : 09.812 2020.12 . 11 23 : 59 : 59 Array3 AUDUSD,H1: << Все объекты удалены >> 2020.12 . 14 13 : 02 : 09.812 2020.12 . 11 00 : 00 : 00 Array3 AUDUSD,H1: i = 2 /Min_W Разница 0.00738 2020.12 . 14 13 : 02 : 09.812 2020.12 . 11 00 : 00 : 00 Array3 AUDUSD,H1: i = 3 /Max_W Разница 0.00000 2020.12 . 14 13 : 02 : 09.812 2020.12 . 11 00 : 00 : 00 Array3 AUDUSD,H1: i = 2 /Min_D Разница 0.00195 2020.12 . 14 13 : 02 : 09.812 2020.12 . 11 00 : 00 : 00 Array3 AUDUSD,H1: i = 264 /Max_D Разница 0.00000 Dark Kchlyzov 2020.12.15 03:57 #146 Aleksei Stepanenko : 코드에 오류가 있습니다. 한 배열을 반복하고 다른 배열의 요소에 액세스합니다. Bar_data_W1보다 Bar_data_D1에 더 많은 요소가 있고 이러한 요소에 액세스 하면 배열이 범위를 벗어납니다 . 이것은 실수가 아니라 주의가 아니라 앉아서 문제가 무엇인지 의아해 하다가 그냥 지우고 베끼고 나서 누군가가 와서 문제가 무엇인지 말하는 것입니다(읽는 척 하지 않음). 코드를 가져와서 버리면 결과 자체가 됩니다. Dark Kchlyzov 2020.12.15 04:02 #147 MakarFX : 터미널 오류 위의 게시물에서 코드를 복사하고 테스트를 실행했습니다. 여기 로그가 있습니다 터미널을 제거하고 다시 설치하시겠습니까? 아마도 철로? 아니면 소련? Valeriy Yastremskiy 2020.12.15 04:09 #148 Dark Kchlyzov : 이것은 실수가 아니라 주의가 아니라 앉아서 문제가 무엇인지 의아해 하다가 그냥 지우고 베끼고 나서 누군가가 와서 문제가 무엇인지 말하는 것입니다(읽는 척 하지 않음). 코드를 가져 와서 버리면 결과 자체가 됩니다. 이전 버전을 악의로 두지 마십시오. 그리고 코드에서는 이웃한 값을 비교하는데 그게 사실이고 원본 도면과 작업에 해당하는 건가요? if (Bar_data_W1 [i][ 3 ] == Bar_data_W1 [i+ 1 ][ 3 ]) 이것은 모든 동일한 값이 아닌 동일한 인접 값, 더 간단한 작업을 검색하는 것입니다. 이마에서 복사본(동일한 값)에 대한 검색 은 배열의 각 요소를 모두와 비교하여 수행됩니다. 이것은 비용이 많이 들고 더 혼란스럽지만 더 저렴한 솔루션이 있습니다. 마음에 들지는 않지만 코드를 크게 변경하지 않고 이러한 비교 전에 찾고 있는 값으로 배열을 정렬하면 코드가 더 정확해집니다. Документация по MQL5: Основы языка / Переменные www.mql5.com Переменные - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Valeriy Yastremskiy 2020.12.15 04:10 #149 Dark Kchlyzov : 터미널을 제거하고 다시 설치하시겠습니까? 아마도 철? 아니면 소련? 동일한 조건(동일한 데이터 제공자)에서 동일한 기간에 다른 행동? Dark Kchlyzov 2020.12.15 04:50 #150 MakarFX : 당신의 중개인은 누구입니까? 어떤 터미널을 사용하고 있습니까? MT4 개발자 중에 터미널이 있는 사람이 있습니까? 벗다. 1...891011121314151617 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
시각화가 포함된 MetaQuotas
시각화 기능이 있는 Alpari
다음은 디버깅할 함수입니다. Post#43
그것이 작동하는 방식입니다)))
그것이 작동하는 방식입니다)))
코드에 오류가 있습니다.
한 배열을 반복하고 다른 배열의 요소에 액세스합니다. Bar_data_W1보다 Bar_data_D1에 더 많은 요소가 있고 이러한 요소에 액세스 하면 배열이 범위를 벗어납니다 .
제 경우에는 테스트 날짜로부터 2개월 뒤로 스크롤할 수 있는 것으로 나타났습니다.
테스터는 1002개의 일일 막대를 봅니다.
테스터는 테스트 간격의 시작 날짜 이전에 1000개의 양초를 추가합니다. 이전 기록은 고려되지 않습니다. 테스트 간격을 크게 할 필요가 있습니다. 2000년부터 가지고 있습니다.
코드에 오류가 있습니다.
한 배열을 반복하고 다른 배열의 요소에 액세스합니다. Bar_data_D1에 Bar_data_W1보다 더 많은 요소가 있으면 배열이 범위를 벗어납니다 .
수정
오류 없이 작동
코드에 오류가 있습니다.
한 배열을 반복하고 다른 배열의 요소에 액세스합니다. Bar_data_W1보다 Bar_data_D1에 더 많은 요소가 있고 이러한 요소에 액세스 하면 배열이 범위를 벗어납니다 .
이것은 실수가 아니라 주의가 아니라 앉아서 문제가 무엇인지 의아해 하다가 그냥 지우고 베끼고 나서 누군가가 와서 문제가 무엇인지 말하는 것입니다(읽는 척 하지 않음). 코드를 가져와서 버리면 결과 자체가 됩니다.
터미널 오류
위의 게시물에서 코드를 복사하고 테스트를 실행했습니다.
여기 로그가 있습니다
터미널을 제거하고 다시 설치하시겠습니까?
아마도 철로? 아니면 소련?
이것은 실수가 아니라 주의가 아니라 앉아서 문제가 무엇인지 의아해 하다가 그냥 지우고 베끼고 나서 누군가가 와서 문제가 무엇인지 말하는 것입니다(읽는 척 하지 않음). 코드를 가져 와서 버리면 결과 자체가 됩니다.
이전 버전을 악의로 두지 마십시오.
그리고 코드에서는 이웃한 값을 비교하는데 그게 사실이고 원본 도면과 작업에 해당하는 건가요?
이것은 모든 동일한 값이 아닌 동일한 인접 값, 더 간단한 작업을 검색하는 것입니다. 이마에서 복사본(동일한 값)에 대한 검색 은 배열의 각 요소를 모두와 비교하여 수행됩니다. 이것은 비용이 많이 들고 더 혼란스럽지만 더 저렴한 솔루션이 있습니다.
마음에 들지는 않지만 코드를 크게 변경하지 않고 이러한 비교 전에 찾고 있는 값으로 배열을 정렬하면 코드가 더 정확해집니다.
터미널을 제거하고 다시 설치하시겠습니까?
아마도 철? 아니면 소련?
동일한 조건(동일한 데이터 제공자)에서 동일한 기간에 다른 행동?
당신의 중개인은 누구입니까?
어떤 터미널을 사용하고 있습니까?
MT4 개발자 중에 터미널이 있는 사람이 있습니까? 벗다.