Pergunta: Porque é que um Handel definido para um período não passa valores paraCopyBuffer em outros períodos de tempo. E o que fazer?
Se o problema estivesse na deslocação do elemento de amortecedor de matriz em diferentes períodos de tempo, resolveria o problema. E por isso não é de todo claro.
Pergunta: Porque é que um Handel definido para um período não passa valores paraCopyBuffer em outros períodos de tempo. E o que fazer?
Se o problema estivesse na deslocação do elemento de amortecedor de matriz em diferentes períodos de tempo, resolveria o problema. E por isso não é de todo claro.
Se o cabo foi criado com sucesso, é criado com os parâmetros que lhe foram transmitidos durante a sua criação. E fornecerá os dados indicadores a qualquer momento. No entanto, fornecerá os dados do prazo que especificou durante a criação. E para os exibir correctamente no período de trabalho, é necessário converter os dados recebidos do manípulo do indicador para o período em que o seu indicador funciona.
Estava apenas a verificar isto. Mas o PROBLEMA é que ao fixar o handel a um período permanente, em
O valor do CopyBuffer noutros prazos NÃO é TRANSFERÍVEL. O valor estava no período de hendle estabelecido e 0,0 (zero) nos períodos de tempo mais pequenos. Movi-o à volta do tampão à procura dele. zero. Porque não é passado paraCopyBuffer?
Tenho-o copiado...
//--- Подготовка данныхint count=(limit>1 ? rates_total : 2),copied=0;
ResetLastError();
if(CopyBuffer(handle_ma,0,0,1,BufferPrice)<0)
{
PrintFormat("Failed to copy data from the handle_ma indicator, error code %d",GetLastError());
return(0.0);
}
// copied=CopyBuffer(handle_ma,0,0,count,BufferPrice);Print(BufferPrice[0]);
Outra questão é o que é copiado :) O mais provável é que esteja a pedir mais barras para copiar do que as que existem nessa TF, imprimir
Se a pega foi criada com sucesso, foi criada com os parâmetros que lhe foram passados quando a criou. E fornecerá os dados indicadores a qualquer momento. Mas fornecerá os dados do prazo que foi estabelecido durante a criação. E para os exibir correctamente no período de trabalho, é necessário converter os dados obtidos a partir do manípulo do indicador para o período em que o seu indicador funciona.
Será que fiz a experiência correctamente?
1) Eu criei uma pega para o período D1.
2) Depois colocamos valores em CopyBuffer de acordo com as instruções (de onde para onde).
Escrevi do zero ao N-ésimo bar.
Os valores do manuscrito devem ser escritos dentro deste intervalo, em teoria. Mesmo quando se passa para outro período de tempo, os valores devem ser do conjunto D1. Não o vejo. Ou algo está errado? Há mais alguma coisa que eu deva acrescentar ao colocar uma pega? Uma vez que não há transferência de tampão.
kopeyka2: Será que fiz a experiência correctamente?
1)Eu criei uma pega no período D1.
2)Em seguida, no CopyBuffer colocamos valores de acordo com as instruções (de onde para onde).
Escrevi do zero ao N-ésimo bar.
Os valores do manuscrito devem ser escritos dentro deste intervalo, em teoria. Mesmo quando se passa para outro período de tempo, os valores devem ser do conjunto D1. Não o vejo. Ou algo está errado? Há mais alguma coisa que eu deva acrescentar ao colocar uma pega? Porque não há transferência de tampão.
Outra questão é o que está a copiar :) O mais provável é que esteja a pedir mais barras para copiar do que as que existem nessa TF, imprimir
Tudo é mais modesto. Eles não põem um monte. Apenas 1-2 barras em D1. Mais precisamente int lm=IBarShift(NULL,PERIOD_D1, iTime(NULL, PERIOD_CURRENT, limit));
int bars=PeríodoSegundo(PERÍODO_D1/PeriodoSegundo(_Periodo);
int startbar=lm-(lm-bars);
Tentei fazer a contagem em CopyBuffer sem limite e taxa_total.
Em termos simples, experimente com CopyBuffer, o que colocar nele, que deve ser. Mas não há.
... Mesmo ao mudar para outro período de tempo, os valores devem ser do conjunto D1. É exactamente isso que eu não vejo. Ou algo está errado? Há mais alguma coisa que eu deva acrescentar ao colocar uma pega? Uma vez que não há transferência de tampão.
Em termos simples, experimente com o CopyByffer , o que deve ser colocado no mesmo. Mas não está lá.
Ainda não verificou a disponibilidade dos dados, mas está a tentar copiar. Veja o código acima - há um segundo temporizador a cada minuto e meio em que se acede ao período não nativo - para manter os dados actualizados. E a primeira coisa no código é verificar se os dados solicitados estão disponíveis. Se não estiverem prontos, então devolve zero para o próximo tick e o cálculo completo do indicador. E quando todos os dados tiverem sido recebidos e calculados, e exibidos, a quantidade de dados calculados é devolvida no final - de modo a não fazer o recálculo completo no tick seguinte.
kopeyka2: Obrigado. Li tudo. Vou continuar a procurar.
O que é que procura? O código acima está a funcionar em pleno. Pode dissecá-lo como quiser. Apontei o seu erro - não se verifica a disponibilidade dos dados.
Mesmo nesta linha aqui:
int lm=IBarShift(NULL,PERIOD_D1, iTime(NULL, PERIOD_CURRENT, limit));
Onde está o cheque para o que o iTime() devolveu? Não há verificação. Mas enfia-se um resultado desconhecido directamente no iBarShift(). Tem a certeza de que está a dar à função aquilo que espera?
Se o cabo foi criado com sucesso, é criado com esses parâmetros, que lhe foram passados durante a sua criação. E passará os dados indicadores a qualquer momento. No entanto, fornecerá os dados do prazo que foi estabelecido durante a criação. E para os exibir correctamente no período de trabalho, é necessário converter os dados recebidos do manípulo do indicador para o período em que o seu indicador funciona.
Foi exactamente o que eu pensei. A questão do mal-entendido é a palavra "parâmetros". Então comecei a olhar para TODAS as variáveis que estão envolvidas no cabo --> CopyBuffer
1) A minha pergunta desde o início foi para mudar o período de tempo SCREEN para guardar os dados do cabo. Tal como acontece no MT4.
E, de facto, acontece que assim é:
handle_ma=iMA(NULL,PERIOD_H1,period,0,MODE_SMA,PRICE_CLOSE);
Comment(handle_ma); // ВСЕГДА 10
2) E passo a citar:"Obtém os dados do buffer especificado do indicador especificado no montante especificado na matriz do buffer".
CopyBuffer(handle_ma,0,0,count,BufferPrice); //
Ou seja, ao estabelecera contagem à mão devemos ter um INTERVALO com os valores .E aí estão eles! MAS!!!!!! Apenas quando o período de manuseamento corresponde a
PERÍODO_H1no ecrã do monitor.Todos os valores são transmitidos claramente. Mas passando para outro período de tempo, NÃO há dados no ecrã.
NÃO são transmitidos de forma alguma!!!! E a minha pergunta era exactamente isso. E o número de barras não é tão importante aqui se NÃO estiverem lá!!!!
Olhei para o indicador propostoMTF_LRMA.mq5 mas ele tem a mesma coisa. Passa para outro intervalo de tempo no ecrã e os dados passam pelo intervalo de tempo do ecrã. Preciso dele num aparelho de mão.
Por exemplo: iClose(NULL, PERÍODO_H1, 5); em todos os períodos de tempo dará o mesmo valor: fechar em 5 barras em H1.
Até agora, todos os exemplos estavam na correcção dacontagem do CopyBuffer. Mas o conjunto está vazio.
Pergunta: Porque é que um Handel definido para um período não passa valores paraCopyBuffer em outros períodos de tempo. E o que fazer?
Se o problema estivesse na deslocação do elemento de amortecedor de matriz em diferentes períodos de tempo, resolveria o problema. E por isso não é de todo claro.
Pergunta: Porque é que um Handel definido para um período não passa valores paraCopyBuffer em outros períodos de tempo. E o que fazer?
Se o problema estivesse na deslocação do elemento de amortecedor de matriz em diferentes períodos de tempo, resolveria o problema. E por isso não é de todo claro.
Se o cabo foi criado com sucesso, é criado com os parâmetros que lhe foram transmitidos durante a sua criação. E fornecerá os dados indicadores a qualquer momento. No entanto, fornecerá os dados do prazo que especificou durante a criação. E para os exibir correctamente no período de trabalho, é necessário converter os dados recebidos do manípulo do indicador para o período em que o seu indicador funciona.
Estava apenas a verificar isto. Mas o PROBLEMA é que ao fixar o handel a um período permanente, em
O valor do CopyBuffer noutros prazos NÃO é TRANSFERÍVEL. O valor estava no período de hendle estabelecido e 0,0 (zero) nos períodos de tempo mais pequenos. Movi-o à volta do tampão à procura dele. zero. Porque não é passado paraCopyBuffer?
Tenho-o copiado...
Outra questão é o que é copiado :) O mais provável é que esteja a pedir mais barras para copiar do que as que existem nessa TF, imprimir
Se a pega foi criada com sucesso, foi criada com os parâmetros que lhe foram passados quando a criou. E fornecerá os dados indicadores a qualquer momento. Mas fornecerá os dados do prazo que foi estabelecido durante a criação. E para os exibir correctamente no período de trabalho, é necessário converter os dados obtidos a partir do manípulo do indicador para o período em que o seu indicador funciona.
Será que fiz a experiência correctamente?
Dei-lhe uma direcção...
Estude-o:
Tenho-o copiado...
Outra questão é o que está a copiar :) O mais provável é que esteja a pedir mais barras para copiar do que as que existem nessa TF, imprimir
kopeyka2:
Верно ли я провел эксперемент.?
...
... Mesmo ao mudar para outro período de tempo, os valores devem ser do conjunto D1. É exactamente isso que eu não vejo. Ou algo está errado? Há mais alguma coisa que eu deva acrescentar ao colocar uma pega? Uma vez que não há transferência de tampão.
Em termos simples, experimente com o CopyByffer , o que deve ser colocado no mesmo. Mas não está lá.
Ainda não verificou a disponibilidade dos dados, mas está a tentar copiar. Veja o código acima - há um segundo temporizador a cada minuto e meio em que se acede ao período não nativo - para manter os dados actualizados. E a primeira coisa no código é verificar se os dados solicitados estão disponíveis. Se não estiverem prontos, então devolve zero para o próximo tick e o cálculo completo do indicador. E quando todos os dados tiverem sido recebidos e calculados, e exibidos, a quantidade de dados calculados é devolvida no final - de modo a não fazer o recálculo completo no tick seguinte.
Obrigado. Li tudo. Vou continuar a procurar.
O que é que procura? O código acima está a funcionar em pleno. Pode dissecá-lo como quiser. Apontei o seu erro - não se verifica a disponibilidade dos dados.
Mesmo nesta linha aqui:
int lm=IBarShift(NULL,PERIOD_D1, iTime(NULL, PERIOD_CURRENT, limit));
Onde está o cheque para o que o iTime() devolveu? Não há verificação. Mas enfia-se um resultado desconhecido directamente no iBarShift(). Tem a certeza de que está a dar à função aquilo que espera?
Se o cabo foi criado com sucesso, é criado com esses parâmetros, que lhe foram passados durante a sua criação. E passará os dados indicadores a qualquer momento. No entanto, fornecerá os dados do prazo que foi estabelecido durante a criação. E para os exibir correctamente no período de trabalho, é necessário converter os dados recebidos do manípulo do indicador para o período em que o seu indicador funciona.
Foi exactamente o que eu pensei. A questão do mal-entendido é a palavra "parâmetros". Então comecei a olhar para TODAS as variáveis que estão envolvidas no cabo --> CopyBuffer
1) A minha pergunta desde o início foi para mudar o período de tempo SCREEN para guardar os dados do cabo. Tal como acontece no MT4.
E, de facto, acontece que assim é:
SEMPRE e em TODOS os períodos de tempo dá o mesmo valor de 10
Não tendo nada aqui, segui em frente.
2) E passo a citar:"Obtém os dados do buffer especificado do indicador especificado no montante especificado na matriz do buffer".
Ou seja, ao estabelecera contagem à mão devemos ter um INTERVALO com os valores . E aí estão eles! MAS!!!!!! Apenas quando o período de manuseamento corresponde a
PERÍODO_H1no ecrã do monitor. Todos os valores são transmitidos claramente. Mas passando para outro período de tempo, NÃO há dados no ecrã.
NÃO são transmitidos de forma alguma!!!! E a minha pergunta era exactamente isso. E o número de barras não é tão importante aqui se NÃO estiverem lá!!!!
Olhei para o indicador propostoMTF_LRMA.mq5 mas ele tem a mesma coisa. Passa para outro intervalo de tempo no ecrã e os dados passam pelo intervalo de tempo do ecrã. Preciso dele num aparelho de mão.
Por exemplo: iClose(NULL, PERÍODO_H1, 5); em todos os períodos de tempo dará o mesmo valor: fechar em 5 barras em H1.
Até agora, todos os exemplos estavam na correcção dacontagem do CopyBuffer. Mas o conjunto está vazio.