阵列超出范围,需要帮助 - 页 15 1...891011121314151617 新评论 Tretyakov Rostyslav 2020.12.14 09:58 #141 具有可视化的MetaQuotes 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 10: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 11: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_D1中的项目数超过Bar_data_W1中的项目数,我们对这样的项目进行寻址时,数组 就会超限。 Aleksei Stepanenko 2020.12.14 12:01 #144 Dark Kchlyzov:我想是的,所以你可以向后看,在我的例子中,从测试日期起两个月。测试者看到1002个日线 测试员在测试区间开始日期前增加了1000个蜡烛图,早期的历史没有被考虑在内。 我需要做一个大的测试区间。我从2000年开始拥有它。 Tretyakov Rostyslav 2020.12.14 12: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 04:57 #146 Aleksei Stepanenko:代码中存在错误。我们在一个数组中循环,并对另一个数组中的项目进行寻址。当Bar_data_D1中的项目数大于Bar_data_W1中的项目数,并且我们对这样的项目进行寻址时,数组 会超限。 这不是错误,而是粗心大意,就在你坐立不安,不知道问题出在哪里的时候,你又是删除又是复制,然后有人来了,说,问题出在哪里(根本懒得看),你就把它拿去,把代码扔掉,这就是结果。 Dark Kchlyzov 2020.12.15 05:02 #147 MakarFX:终端的错误从上面的帖子中复制了代码并进行了测试这里有一份日志 拆下终端并重新安装? 也许有硬件? 或者滑板车? Valeriy Yastremskiy 2020.12.15 05: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 05:10 #149 Dark Kchlyzov:撕下终端并重新安装?也许是硬件的问题? 在相同的条件下(相同的数据提供者),同一时期的不同行为? Dark Kchlyzov 2020.12.15 05:50 #150 MakarFX:谁是你的经纪人?你用什么终端? 有没有人有MT4开发商的MT4终端? 1...891011121314151617 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
具有可视化的MetaQuotes
视觉化的Alpari
这是要调试的函数Post#43
这就是它的工作原理)))
这就是它的工作原理))))。
代码中存在错误。
我们在一个数组中循环,并对另一个数组中的项目进行寻址。当Bar_data_D1中的项目数超过Bar_data_W1中的项目数,我们对这样的项目进行寻址时,数组 就会超限。
我想是的,所以你可以向后看,在我的例子中,从测试日期起两个月。
测试者看到1002个日线
测试员在测试区间开始日期前增加了1000个蜡烛图,早期的历史没有被考虑在内。 我需要做一个大的测试区间。我从2000年开始拥有它。
代码中存在错误。
我们在一个数组中循环,并对另一个数组中的项目进行寻址。当Bar_data_D1中的项目数超过Bar_data_W1中的项目数时,数组 就会超限。
固定的
运行无误
代码中存在错误。
我们在一个数组中循环,并对另一个数组中的项目进行寻址。当Bar_data_D1中的项目数大于Bar_data_W1中的项目数,并且我们对这样的项目进行寻址时,数组 会超限。
这不是错误,而是粗心大意,就在你坐立不安,不知道问题出在哪里的时候,你又是删除又是复制,然后有人来了,说,问题出在哪里(根本懒得看),你就把它拿去,把代码扔掉,这就是结果。
终端的错误
从上面的帖子中复制了代码并进行了测试
这里有一份日志
拆下终端并重新安装?
也许有硬件? 或者滑板车?
这不是错误,而是粗心大意,当你坐在那里想知道问题出在哪里时,你又是删除又是复制,然后有人过来说问题出在哪里(不看),你就拿去扔了,这就是结果。
你不会留下旧版本。
而代码中比较了相邻的数值,这是否正确,与原图和问题一致?
这是搜索相同的相邻值,这是一个比较简单的任务,不是所有相同的值。荒唐的是,搜索副本(相同的值)是通过比较数组中的 每个元素 与所有元素来完成的,这很昂贵,还有其他更复杂但更便宜的解决方案。
我不喜欢这样,但如果不对你的代码进行重大修改,在进行这样的比较之前,按搜索到的值对数组进行排序,然后代码会更正确。
撕下终端并重新安装?
也许是硬件的问题?
在相同的条件下(相同的数据提供者),同一时期的不同行为?
谁是你的经纪人?
你用什么终端?
有没有人有MT4开发商的MT4终端?