Por favor, crie um exemplo reproduzível. Ou seja, você precisa de um código pronto que possa ser compilado, colocado em um gráfico e obter resultados.
Sem isso, poucas pessoas entenderão do que estamos falando.
Pensei em cortar para não desanimar as pessoas por nada.
Aqui está a versão completa:
#property indicator_separate_window // O indicador é desenhado em uma janela separada#property indicator_buffers 1#property indicator_plots 1#property indicator_type1 DRAW_LINE#property indicator_color1 Aquainputstring InstrumentName = "EURJPY";
//-- Matriz de indicadoresdouble ScreenBuffer[];
//-- Buffer dinâmico --double ArrayBuffer[];
intOnInit() // Função especial init()
{
//--------------------------------------------------------------------IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA);
return0; // Sair
}
//--------------------------------------------------------------------intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime& time[],
constdouble& open[],
constdouble& high[],
constdouble& low[],
constdouble& close[],
constlong& tick_volume[],
constlong& volume[],
constint& spread[])
{
int Counted_bars; // Número de barras a serem operadas int copied;
//--------------------------------------------------------------------//1 input rates_total = 9667 / prev_calculated = 0 / Bars = 9667//-- then rates_total = 9667 / prev_calculated = 9667 / Bars = 9667//-- in process then rates_total = 9668 / prev_calculated = 9667 / Bars = 9668//Print("rates_total: " + (string)rates_total);if (rates_total == prev_calculated) return (rates_total);//-- Ainda é o mesmo bar, então estamos fora...//-- Obter o número de barras não processadas (na primeira entrada é tudo, depois 1)//-- O número de barras de saída refere-se ao próprio gráfico, mas estaremos produzindo outro instrumento//-- o número de barras pode ser diferente, portanto, primeiro despejamos todos os dados no buffer --
Counted_bars = rates_total-prev_calculated;
// Imprimir("Counted_bars: " + Counted_bars);Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0));
//-- Alocar a memória de acordo com o número de compassos do instrumento principal --if (ArrayResize(ArrayBuffer, Counted_bars,0) == -1) return (rates_total);//-- Erro de alocação de memória --//--- inicializar os elementos da matriz com o valor EMPTY_VALUE ----ArrayInitialize(ArrayBuffer,EMPTY_VALUE);
//-- Obtenha quantas barras esse instrumento realmente tem --
copied = (int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT);
if (copied > 0){
copied=CopyClose(InstrumentName,0,0,copied,ArrayBuffer);//-- Gravar dados no buffer de memória --if (copied <= 0) return (rates_total);//-- erro
}
else{
return (rates_total);//-- erro
}
if (Counted_bars > copied) Counted_bars = copied;//-- Pegue o valor mais baixo --
Counted_bars--;//-- Desde a contagem a partir de 0 --//-- Os dados são carregados no buffer de memória, agora escreva-os no buffer da tela da direita para a esquerda --for (int i = Counted_bars; i > 0; i--){
ScreenBuffer[i] = ArrayBuffer[i];
}
//--------------------------------------------------------------------return(rates_total);
}
voidOnDeinit(constint reason)
{
ObjectsDeleteAll(0,0,-1); // todos os objetos do gráfico são excluídos.
}
Mas como não entrei na lógica do indutor e de sua implementação, não cabe a mim julgar a correção dos resultados.
PS
Eu ainda me livraria do símbolo no parâmetro e o transformaria no símbolo atual e no TF, e depois o usaria no Expert Advisor ou em outra ferramenta usando o iCustom() usual.
Além disso, eu realmente não entendo a lógica de trabalhar com buffers (quero dizer, a cauda da calculadora e assim por diante). Em minha opinião, há muito o que fazer....
Mas como não entrei na lógica do indutor e de sua implementação, não cabe a mim julgar a correção dos resultados.
PS
Eu ainda me livraria do símbolo no parâmetro e o criaria de acordo com o símbolo atual e o TF, e depois o usaria no Expert Advisor ou em qualquer outra ferramenta usando o iCustom() usual.
Além disso, eu realmente não entendo a lógica de trabalhar com buffers (quero dizer, a cauda da calculadora e assim por diante). Em minha opinião, há muito o que fazer....
Eu ainda prestaria atenção ao algoritmo de trabalho com buffers. Se eu entendi corretamente, um buffer é suficiente (ele só precisa ser calculado e desenhado corretamente no gráfico).
PS
E com a variante atual, tenho a impressão de que o indutor exibe dados "esquerdos" (o início do histórico) em vez de "direitos" (atuais)....
Ou eu não entendo nada da lógica desse indicador....
6.parece estar faltando:
TradePerformer( 4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop);
em Exp_TEMA.mq5 ?
6. parece estar faltando
no Exp_TEMA.mq5?
Por favor, crie um exemplo reproduzível. Ou seja, você precisa de um código pronto que possa ser compilado, colocado em um gráfico e obter resultados.
Sem isso, poucas pessoas entenderão do que estamos falando.Pensei em cortar para não desanimar as pessoas por nada.
Aqui está a versão completa:
O que estou fazendo de errado, por que não consigo exibir o gráfico de outro instrumento normalmente?
Tudo funcionava na MQL4, aqui só funciona se você exibir o gráfico no mesmo instrumento, então não há erros.
O que estou fazendo de errado, por que não consigo exibir o gráfico de outro instrumento normalmente?
Tudo funcionava na MQL4, aqui só funciona se você exibir o gráfico no mesmo instrumento, então não há erros.
Não tenho certeza da exatidão da implementação e do algoritmo em geral, mas, com base no código e no que consegui fazer com ele, presumo que sim:
A string
deve ter a seguinte aparência
Talvez fosse mais correto alterar o período em todos os lugares como "0" para PERIOD_CURRENT.
Pelo menos tudo funcionou para mim após essas alterações.....
PS
Talvez não seja relevante, mas dessa forma o compilador IMPORTA muito menos
Não tenho certeza da implementação e do algoritmo corretos em geral, mas, com base no código e no que consegui fazer com ele, presumo que seja isso:
A string
deve ter a seguinte aparência
PS
Talvez seja mais correto alterar o período em todos os lugares como "0" para PERIOD_CURRENT.
Pelo menos tudo funcionou para mim após essas alterações....
É assim que aparece na minha tela:

Claramente errado.Este foi o resultado para mim
Mas como não entrei na lógica do indutor e de sua implementação, não cabe a mim julgar a correção dos resultados.
PS
Eu ainda me livraria do símbolo no parâmetro e o transformaria no símbolo atual e no TF, e depois o usaria no Expert Advisor ou em outra ferramenta usando o iCustom() usual.
Além disso, eu realmente não entendo a lógica de trabalhar com buffers (quero dizer, a cauda da calculadora e assim por diante). Em minha opinião, há muito o que fazer....
Foi isso que eu recebi
Mas como não entrei na lógica do indutor e de sua implementação, não cabe a mim julgar a correção dos resultados.
PS
Eu ainda me livraria do símbolo no parâmetro e o criaria de acordo com o símbolo atual e o TF, e depois o usaria no Expert Advisor ou em qualquer outra ferramenta usando o iCustom() usual.
Interesting:
Além disso, eu realmente não entendo a lógica de trabalhar com buffers (quero dizer, a cauda da calculadora e assim por diante). Em minha opinião, há muito o que fazer....
Eu ainda prestaria atenção ao algoritmo de trabalho com buffers. Se eu entendi corretamente, um buffer é suficiente (ele só precisa ser calculado e desenhado corretamente no gráfico).
PS
E com a variante atual, tenho a impressão de que o indutor exibe dados "esquerdos" (o início do histórico) em vez de "direitos" (atuais)....
Ou eu não entendo nada da lógica desse indicador....