array out of range in '_Test.mq4' (451,34)
Na linha 451,34, há uma saída fora da matriz.
Veja em , o que está por trás <=
for(int i = 1; 0 <= Bar_data_D1 [i][2] ;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] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][2];break; } } //--- изначально было так
você pode pensar em uma opção melhor? como implementá-la?
CÓDIGO DEVOLUÇÃO: Nenhum erro, nenhuma outra matriz e nenhuma linha redesenhada neste dia.
//--- Min_D_Leve for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;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; } } }
Imprimir
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 996 Bar_data_D1 [i][2] = 1.33147
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 997 Bar_data_D1 [i][2] = 1.3426
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 998 Bar_data_D1 [i][2] = 1.3364
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 999 Bar_data_D1 [i][2] = 1.33562
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 1000 Bar_data_D1 [i][2] = 1.33532
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 1001 Bar_data_D1 [i][2] = 1.33705
o erro pode não estar aqui. Sem o código é difícil de entender
o erro pode não estar aqui. Sem o código é difícil de entender
//--глобальные переменныеdouble Low_D1_Level;
double Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
//--- тело void On_Timer() { if(Day()!= Time_Day) { Level(); Time_Day = Day(); } } //+------------------------------------------------------------------+ //| Функция 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; 0 <= Bar_data_D1 [i][2] ;i++) { Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]); if( Bar_data_D1 [i][2] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][2];break; } } //---
O que mais você precisa?
- www.mql5.com
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Saudações a todos! Obrigado a todos com antecedência!
Bug deste tipo:
Há uma linha de nível_baixo_D1_baixo em relação à qual estamos procurando na matriz Bar_data_D1 [][6]; novo nível Min_D_Nível_baixo
//--- variáveis globais
duplo_D1_Nível;
barra_dados_D1 dupla [][6]; //copias dados da barra do gráfico especificado na matriz e retorna o número de barras D1 copiadas
A primeira dimensão da matriz contém o número de barras. A segunda dimensão tem 6 elementos com os valores:
0 - tempo,
1 - preço aberto,
2 - preço mais baixo (baixo),
3 - preço mais alto (alto),
4 - preço fechado (fechamento),
5 - volume.
Imprimir