Pode haver um campo vazio à direita, se for estabelecida uma indentação. Neste caso CHART_VISIBLE_BARS mostrará um valor menor do que CHART_WIDTH_IN_BARS
1. levar o guião torcido para o posto e executar no gráfico. O guião deve copiar um certo número de barras e executar o desenrolar das 20 mais antigas.
Esta forma é utilizada (entendo que não há verificações e todo o tipo de armadilhas para erros, mas mesmo assim)
intCopyRates(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодint start_pos, // откуда начнем int count, // сколько копируемMqlRates rates_array[] // массив, куда будут скопированы данные
);
Assim, com os parâmetros que especifiquei (número de barras e M1) o guião corre mas por vezes recusa-se a trabalhar NORMALMENTE. Acontece num certo número de bares (recebi mais de 368700).
Ao 368800 devolve muito menos barras (mas sempre um número diferente - 368732 / 368735 / 368736 ou algo nesta vizinhança).
Mas nem sempre funciona correctamente mesmo com 360000, houve casos em que apenas copiou 10000 barras.
2. A variante onde duas datas são especificadas chocou-me realmente. Não só não aceitaria 0 como a primeira data (o que faz sentido na minha opinião), como também copia até 10000.
Embora com 0 como tempo_de_início seja compreensível (tenho experiência), trata-se de sobrecarga de funções e compilador "não compreendendo" certas coisas. Mas é por isso que 10000 barras é uma questão à parte que se chama "em um milhão".
As barras de 10.000 minutos, como entendemos, não irão além de 2011, se bem entendi, não irão além de Fevereiro (e como se torna claro de todos os anteriores, pelo menos 360000 é carregado com certeza).
intCopyRates(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодdatetime start_time, // с какой датыdatetime stop_time, // по какую датуMqlRates rates_array[] // массив, куда будут скопированы данные
);
PS
Ao mesmo tempo, a velocidade do normal e do "buggy" (quando o guião copia apenas 10000 barras) difere muitas vezes ao longo do tempo.
PPS
Por favor, certifique-se de levar certas secções de ajuda (ou melhor, os seus exemplos) à sua conclusão lógica, para evitar ambiguidade e outras situações "parvas".
Os cheques devem ser colocados adicionalmente, etc. Também, neste caso não há referências cruzadas nas descrições dos parâmetros (pelo menos no tempo) e não é claro que tipo de start_time e start_pos têm.Acho que essa data/hora (caso contrário, porque é que o compilador juraria por 0 como hora_de_início).
//Код по третьему варианту, может я что-то упустил?
//Так ругается - 'CopyRates' - ambiguous call to overloaded function
Copied = CopyRates(Symbol(),PERIOD_M1,0,TimeCurrent(),Rates);
//Так нет, но копирует только 10000 баров
Copied = CopyRates(Symbol(),PERIOD_M1,(datetime)0,TimeCurrent(),Rates);
voidOnStart()
{
//---long chart_id=ChartID();
ChartSetInteger(chart_id,CHART_AUTOSCROLL,false); // отключаем автоскроллwhile(!IsStopped())
{
//------------------ ChartNavigate(chart_id,CHART_END,-2410); // делаем навигацию, поставим константу
//------------------Sleep(500);
ChartSetString(chart_id,CHART_COMMENT,ChartGetInteger(chart_id,CHART_FIRST_VISIBLE_BAR));
ChartRedraw(chart_id);// отображаем первый бар чарта после навигацииSleep(500);
}
}
A carta sacode quando se navega a partir da barra zero. Introduzi propositadamente deslizes entre a navegação e a actualização para destacar o problema. Mas o insecto existe mesmo sem escorregões. Acontece que ChartNavigate() primeiro move o gráfico para zero e depois volta a movê-lo para trás. Além disso, não o faz sempre.
Pelo menos, o facto de o bug não existir sempre que se chama ChartNavigate(), aparece quando o corre sem escorregões.
A carta sacode quando se navega a partir da barra zero. Introduzi propositadamente deslizes entre a navegação e a actualização para destacar o problema. Mas o insecto existe mesmo sem escorregões. Acontece que ChartNavigate() primeiro move o gráfico para zero e depois volta a movê-lo para trás. Além disso, não o faz sempre.
Pelo menos, o facto de o bug não existir sempre que se chama ChartNavigate(), aparece quando o corre sem escorregões.
Então, o que há neste exemplo que é tão fundamentalmente diferente do meu código?
É que no seu código de navegação é chamado uma vez, enquanto que eu preciso de manter a carta na barra desejada o tempo todo (independentemente das acções do utilizador).
Tentei o vosso exemplo e corri o meu código sem actualização gráfica (embora seja importante para mim porque o programa usa muitas transformações gráficas), mas também não funcionou. O idiota permanece. Continuo a navegar até ao mesmo ponto, e depois navego até à barra zero.
Também considero inaceitável a utilização da navegação a partir da barra actual, porque o utilizador pode mover inadvertidamente a carta enquanto o programa está em execução.
Então, o que há neste exemplo que é tão fundamentalmente diferente do meu código?
É que no seu código de navegação é chamado uma vez, enquanto eu preciso de manter a carta na barra desejada o tempo todo (independentemente das acções do utilizador).
Depois de rever o seu exemplo, corri o meu código sem actualização do gráfico (embora seja importante para mim uma vez que o programa também usa um monte de conversões gráficas), mas também não ajudou. O idiota permanece. Continuo a navegar até ao mesmo ponto, e depois navego até à barra zero.
Também considero inaceitável a utilização da navegação a partir da barra actual, porque o utilizador pode mover inadvertidamente a carta enquanto o programa está em execução.
Tenho o mesmo problema com o meu indicador, só que é redesenhado assim que o carrapato chega e não é clara a forma de o corrigir?
Qual é a diferença?
Qual é a diferença?
Qual é a diferença?
Literalmente diferente.
Qual é a questão?
1. levar o guião torcido para o posto e executar no gráfico. O guião deve copiar um certo número de barras e executar o desenrolar das 20 mais antigas.
Esta forma é utilizada (entendo que não há verificações e todo o tipo de armadilhas para erros, mas mesmo assim)
Assim, com os parâmetros que especifiquei (número de barras e M1) o guião corre mas por vezes recusa-se a trabalhar NORMALMENTE. Acontece num certo número de bares (recebi mais de 368700).
Ao 368800 devolve muito menos barras (mas sempre um número diferente - 368732 / 368735 / 368736 ou algo nesta vizinhança).
Mas nem sempre funciona correctamente mesmo com 360000, houve casos em que apenas copiou 10000 barras.
2. A variante onde duas datas são especificadas chocou-me realmente. Não só não aceitaria 0 como a primeira data (o que faz sentido na minha opinião), como também copia até 10000.
Embora com 0 como tempo_de_início seja compreensível (tenho experiência), trata-se de sobrecarga de funções e compilador "não compreendendo" certas coisas. Mas é por isso que 10000 barras é uma questão à parte que se chama "em um milhão".
As barras de 10.000 minutos, como entendemos, não irão além de 2011, se bem entendi, não irão além de Fevereiro (e como se torna claro de todos os anteriores, pelo menos 360000 é carregado com certeza).
PS
Ao mesmo tempo, a velocidade do normal e do "buggy" (quando o guião copia apenas 10000 barras) difere muitas vezes ao longo do tempo.
PPS
Por favor, certifique-se de levar certas secções de ajuda (ou melhor, os seus exemplos) à sua conclusão lógica, para evitar ambiguidade e outras situações "parvas".
Os cheques devem ser colocados adicionalmente, etc. Também, neste caso não há referências cruzadas nas descrições dos parâmetros (pelo menos no tempo) e não é claro que tipo de start_time e start_pos têm.Acho que essa data/hora (caso contrário, porque é que o compilador juraria por 0 como hora_de_início).
Isto é um insecto ou a minha falta de habilidade?
A carta sacode quando se navega a partir da barra zero. Introduzi propositadamente deslizes entre a navegação e a actualização para destacar o problema. Mas o insecto existe mesmo sem escorregões. Acontece que ChartNavigate() primeiro move o gráfico para zero e depois volta a movê-lo para trás. Além disso, não o faz sempre.
Pelo menos, o facto de o bug não existir sempre que se chama ChartNavigate(), aparece quando o corre sem escorregões.
Isto é um insecto ou a minha falta de habilidade?
A carta sacode quando se navega a partir da barra zero. Introduzi propositadamente deslizes entre a navegação e a actualização para destacar o problema. Mas o insecto existe mesmo sem escorregões. Acontece que ChartNavigate() primeiro move o gráfico para zero e depois volta a movê-lo para trás. Além disso, não o faz sempre.
Pelo menos, o facto de o bug não existir sempre que se chama ChartNavigate(), aparece quando o corre sem escorregões.
Experimente o exemplo do ramo A função ChartNavigate não funciona, Por favor, ajude
Então, o que há neste exemplo que é tão fundamentalmente diferente do meu código?
É que no seu código de navegação é chamado uma vez, enquanto que eu preciso de manter a carta na barra desejada o tempo todo (independentemente das acções do utilizador).
Tentei o vosso exemplo e corri o meu código sem actualização gráfica (embora seja importante para mim porque o programa usa muitas transformações gráficas), mas também não funcionou. O idiota permanece. Continuo a navegar até ao mesmo ponto, e depois navego até à barra zero.
Também considero inaceitável a utilização da navegação a partir da barra actual, porque o utilizador pode mover inadvertidamente a carta enquanto o programa está em execução.
A história está toda escondida?
Então, o que há neste exemplo que é tão fundamentalmente diferente do meu código?
É que no seu código de navegação é chamado uma vez, enquanto eu preciso de manter a carta na barra desejada o tempo todo (independentemente das acções do utilizador).
Depois de rever o seu exemplo, corri o meu código sem actualização do gráfico (embora seja importante para mim uma vez que o programa também usa um monte de conversões gráficas), mas também não ajudou. O idiota permanece. Continuo a navegar até ao mesmo ponto, e depois navego até à barra zero.
Também considero inaceitável a utilização da navegação a partir da barra actual, porque o utilizador pode mover inadvertidamente a carta enquanto o programa está em execução.