Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 578
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
DataCandles é uma estrutura. A matriz onde escrevemos os candelabros da história é matriz[]. Portanto, precisamos de fazer com que a sua indexação coincida com a indexação de castiçais na tabela. Ou seja, a célula zero da matriz[] corresponderá aos castiçais mais próximos da data actual.
Isto é, 1. copiamos castiçais em array[], 2. fazemos uma série cronológica, e depois lemos valores a partir dela para a estrutura.
Pode fazer sem array[] - basta escrever dados directamente do gráfico na estrutura, mas eu sugeri isto para compatibilidade com Cinco - permite copiar directamente apenas no indicador usando alto[i], baixo[i] e outros dados, mas no script ou Expert Advisor, teremos primeiro de copiar o intervalo de história necessário para o array, o que eu fiz.
Alerta (série);
como esta?
Ambos os alertas ainda retornam falsos
Alerta (série);
como esta?
Ambos os alertas ainda retornam falsos
Portanto, este é um erro que deve ser comunicado a "Erros, Erros, Perguntas".
Aqui está um guião de verificação, que mostra a hora da cópia dos castiçais em zero e últimas células de matriz[]:
Portanto, este é um erro que deve ser comunicado a "Erros, insectos, perguntas".
Aqui está um guião de verificação, que mostra a hora da cópia dos castiçais em zero e últimas células de matriz[]:
Produz isto:
Array é série: falso
matriz temporal[0]: 2016.05.12 21:00
matriz temporal[9]: 2016.05.12 12:00
É o que se passa:
Array é série: falso
matriz temporal[0]: 2016.05.12 21:00
matriz temporal[9]: 2016.05.12 12:00
Verifiquei-o - sempre falso, mas o tempo está correcto: se no início do guião seleccionar Array array como série cronológica "Sim", então:
Se seleccionar "Não", então:
os tempos dos castiçais escritos no array são invertidos, o que significa que o ArraySetAsSeriess() funciona correctamente, mas o ArrayIsSeries() não funciona, sai sempre falso, o que já escrevi para o fio de bug acima.
Oh, esta programação. Mais para dentro da floresta....
Compreenda, não precisa de saber a direcção da matriz. O algoritmo está à procura de repetições. Portanto, não importa em que ordem as barras são processadas.
de que precisa. Porque depois preciso de descobrir que castiçais formaram um fósforo e tirar o preço Baixo do mais próximo do preço actual.
Há um tempo de vela na estrutura para isto, pelo qual pode encontrar a vela mais próxima do tempo que precisar.
E não é necessário produzir os números dos castiçais - eles não coincidem com os números reais dos bares. Porque nós preenchemos a matriz, e os índices na matriz pertencem apenas ao número do castiçal na matriz, não na tabela.
Verifiquei o que produz - sempre falso, mas a hora está correcta: se seleccionar Array array como série temporal "Sim" ao executar o guião, então:
Se seleccionar "Não", então:
Os tempos dos castiçais escritos no array são invertidos, o que significa que o ArraySetAsSeriess() funciona correctamente, mas o ArrayIsSeries() não funciona, sai sempre falso, o que já escrevi para o fio de bug acima.
Modifiquei ligeiramente o código:
ArraySetAsSeries(array,true); //somente, apenas colocar true
e depois acrescentou números de castiçais para auto-verificação:
Alerta("Array é série: ",ArrayIsSeries(array),
"\nCandle "+IntegerToString(0,2,'0')+" time array[0]: ",TimeToString(array[0].time,TIME_DATE|TIME_MINUTES),
"\nSwitch "+IntegerToString(searchperiod-1,2,'0')+" time array[",string(searchperiod-1),"]:",TimeToString(array[ArraySize(array)-1].time,TIME_DATE|TIME_MINUTES));
Dá o seguinte resultado:
Array é série: falso
Vela 00 matriz de tempo[0]: 2016.05.12 22:00
Vela 09 matriz temporal[9]: 2016.05.12 13:00
Para o fazer, existe um tempo de vela na estrutura, através do qual se pode encontrar a vela mais próxima do tempo que necessitar.
Mudei um pouco o código:
ArraySetAsSeries(array,true); //somente, apenas colocar true
e depois acrescentou números de castiçais para auto-verificação:
Alerta("Array é série: ",ArrayIsSeries(array),
"\nCandle "+IntegerToString(0,2,'0')+" time array[0]: ",TimeToString(array[0].time,TIME_DATE|TIME_MINUTES),
"\nSwitch "+IntegerToString(searchperiod-1,2,'0')+" time array[",string(searchperiod-1),"]:",TimeToString(array[ArraySize(array)-1].time,TIME_DATE|TIME_MINUTES));
Dá o seguinte resultado:
Array é série: falso
Vela 00 matriz de tempo[0]: 2016.05.12 22:00
Vela 09 matriz temporal[9]: 2016.05.12 13:00