Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 407

 
first_may:

Boa tarde.

Poderia dizer-me como obter o valor deTenkan eKijun na vela anterior em mql5?

Por favor ver o exemplo doiIchimoku.
 
Karputov Vladimir:
Por favor, veja o exemplo doiIchimoku.

Eu estava a olhar antes de fazer a pergunta. Em mql4 era mais fácil, por exemplo no último castiçal

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

E aqui entendi que um objecto é criado

handle=iIchimoku(nome,período,tenkan_sen,kijun_sen,senkou_span_b);

Mas como obter o valor tenkan, não consigo perceber :(. Quero um simples cruzamento de tenkan e kijun para rastrear e é tudo.

 
first_may:

Eu estava a olhar antes de fazer a pergunta. Em mql4 era mais fácil, por exemplo no último castiçal

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

E aqui entendi que um objecto é criado

handle=iIchimoku(nome,período,tenkan_sen,kijun_sen,senkou_span_b);

Mas como obter o valor tenkan, não consigo perceber :(. Quero uma simples intersecção de tenkan e kijun e é só isso.

Quer localizá-lo num indicador ou num EA?
 
Karputov Vladimir:
Quer rastrear num indicador ou num EA?
No EA. Emitir o formulário de alertas com som.
 
first_may:
No conselheiro. Saída de alertas com som.
Veja a função CopyBuffer().
 
Tapochun:
Veja a função CopyBuffer().

No exemplo

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); - o objecto é criado

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0); - preenche a matrizMABuffer com valores dema_handle

E agorapodemos obter valores deMABuffer?

 
first_may:

No exemplo

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); - o objecto é criado

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0); - preenche a matrizMABuffer com valores dema_handle

E agorapodemos obter valores deMABuffer?

Sim. Em MABuffer, usando a função CopyBuffer() obtém-se os valores de MA no intervalo especificado. MABuffer é, evidentemente, um conjunto.

 
Tapochun:

Sim. Em MABuffer obteve os valores de MA no intervalo que especificou com a função CopyBuffer(). MABuffer, é claro, é um conjunto.

E tudo deve ser feito correctamente no procedimento

intOnCalculate(const constint rates_total,
constint prev_calculado,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

Mesmo que eu queira exibir o valor no ecrã?

 
O comprimento padrão das cordas é de 0 a 255 caracteres. Leio fio a fio de ficheiro linha a linha através do parâmetro FileReadString sem comprimento ( comprimento=0 por defeito ) .Ou seja, a corda é lida da posição actual para o carácter de alimentação de linha"\r\n".O que fazer no caso de uma linha de um ficheiro levar mais de 255 caracteres (e é possível com bastante frequência). Não quero quebrar a corda em partes, porque as cordas estão estritamente estruturadas (o ficheiro contém o código html). A ideia é que primeiro leio todo o ficheiro linha a linha na matriz, e depois apenas o partilho e extraio a informação de que preciso. Se as linhas se dividirem, o analisador deixará de funcionar, porque os sinais de informação necessária podem separar-se e entrar em diferentes linhas de leitura. Sem fio longo( Alguma outra ideia?
 
first_may:

E tudo isto é feito de forma adequada num procedimento

intOnCalculate(const constint rates_total,
constint prev_calculado,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

Mesmo que eu queira exibir o valor no ecrã?

Tudo depende da lógica do indicador. Na maioria das vezes - sim, na função OnCalculate().
Razão: