Para manter os dados históricos atualizados "quentes", você precisa acessar esses dados a cada dois minutos usando qualquer uma das funções CopyXXX, iXXX, por exemplo, CopyTime(), iTime(), etc...
Não sei que volumes você não recebe no testador. Há volumes reais e de carrapatos. Sem o código não é possível responder à substância.
O código é o mesmo que eu baixei anteriormente (ligeiramente modificado). Cópia de carrapatos:
MqlTick tick_array[];
uint start = GetTickCount();
int received = CopyTicks(_Symbol, tick_array, COPY_TICKS_TRADE, periodStartTime*1000, ticksSizeToCopy);
if(received != -1) {
PrintFormat("%s: received %d ticks in %d ms", _Symbol, received, GetTickCount() - start);
if(GetLastError() != 0)
PrintFormat("%s: таймер Ticks are not synchronized yet, %d ticks received for %d ms. Error=%d",
_Symbol, received, GetTickCount() - start, _LastError);
}
Em seguida, há um pedido de volumes. Por exemplo (simplificado):
int ticks = ArraySize(tick_array);
for (int i = 0; i < ticks; i ++) {
if((tick_array[i].flags&TICK_FLAG_BUY) == TICK_FLAG_BUY) {
if(tick_array[i].volume > max) max = tick_array[i].volume;
}
}
Se você simplesmente anexá-lo a uma tabela, então está tudo bem. Se eu o prender a um testador, então por alguma razão não há volumes...
[in] Количество запрашиваемых тиков. Если параметры from и count не указаны, то в массив ticks_array[] будут записаны все доступные последние тики, но не более 2000. Первый вызов CopyTicks() инициирует синхронизацию базы тиков, хранящихся на жёстком диске по данному символу. Если тиков в локальной базе не хватает, то недостающие тики...
Colegas, por favor me avisem por que não posso colocar 2 ou 3 indicadores ATR com cronogramas diferentes em um gráfico ao mesmo tempo?
Mesmo mudando o Offset para evitar sobreposições visuais, apenas um indicador funciona e é mostrado no gráfico?
input int InpOffsetX = 10; // Offset X input int InpOffsetY = 80;// Offset Y
Mais precisamente, se eu mudar de TF, a segunda aparece, mas a primeira desaparece; todas as três aparecem alternadamente em TFs diferentes, mas não todas juntas. A ordem não pode ser rastreada.
Eu não consigo entender o que você quer dizer. Parece que estou usando as bandeiras certas... E funciona na vida real... mas o testador não quer que isso aconteça.
Suas palavras do post anterior :" Para fazer algoritmos, parece-me, você precisa de lógica. E isto está longe de ser matemático. E aqui não sou amigo dele - apenas o material de referência necessário e a ajuda daqueles que são amigos".
Artyom Trishkin: Para fazer algoritmos, eu acho, é preciso lógica. E isto está longe de ser matemático. E aqui não sou amigável com ele - apenas o material de referência certo e a ajuda daqueles que o são.
O trabalho do programador não é resolver tarefas complexas, mas fazer com que o computador as faça por ele. Mas isto pode exigir a resolução de outras tarefas complexas, que o programador executa obedientemente. :)
ANDREY: Suas palavras de um post anterior :" Para fazer algoritmos, parece-me, você precisa de lógica. E isto está longe de ser matemático. E eu não sou amigo dele - apenas o material de referência certo e a ajuda daqueles que o são".
Não, não é. É assim:
"Para fazer algoritmos, parece-me que você precisa de lógica. E isto está longe de ser matemático. E eu não sou amigo dele - apenas o material de referência certo e a ajuda daqueles que o são".
Em termos de significado, as duas sentenças estão próximas uma da outra. Mas você encontrou seu significado...
O trabalho do programador não é resolver tarefas complexas, mas fazer com que o computador as faça por ele. Mas isto pode exigir a resolução de outras tarefas complexas, que o programador executa obedientemente. :)
O definidor de tarefas, é claro, rege. Mas ele tem que ser um programador para permanecer no curso))))
Por favor, informe. Tenho um EA que tira dados (tempo) de um indicador e conta a diferença em milissegundos entre carrapatos.
Eu o produzo via Alerta e recebo o seguinte (ver foto). A meu ver, primeiro obtenho o número total de milissegundos e depois a diferença em milissegundos entre os últimos 4 ticks (entre 1 e 2, 2 e 3, 3 e 4).
Por que é assim? Eu só preciso dos valores para o 4º tick.
Para manter os dados históricos atualizados "quentes", você precisa acessar esses dados a cada dois minutos usando qualquer uma das funções CopyXXX, iXXX, por exemplo, CopyTime(), iTime(), etc...
Não sei que volumes você não recebe no testador. Há volumes reais e de carrapatos. Sem o código não é possível responder à substância.
O código é o mesmo que eu baixei anteriormente (ligeiramente modificado). Cópia de carrapatos:
Em seguida, há um pedido de volumes. Por exemplo (simplificado):
Se você simplesmente anexá-lo a uma tabela, então está tudo bem. Se eu o prender a um testador, então por alguma razão não há volumes...
O código é o mesmo que o que eu afixei anteriormente (ligeiramente modificado). Cópia de carrapatos:
A seguir, há um pedido de volumes. Por exemplo (simplificado):
Se eu apenas anexá-lo a uma tabela, então está tudo bem. Se está no Testador de Estratégia, então não tem volumes...
Nota sobre a função CopyTicks(). Sobre as bandeiras.
Colegas, por favor me avisem por que não posso colocar 2 ou 3 indicadores ATR com cronogramas diferentes em um gráfico ao mesmo tempo?
Mesmo mudando o Offset para evitar sobreposições visuais, apenas um indicador funciona e é mostrado no gráfico?
input int InpOffsetX = 10; // Offset X
input int InpOffsetY = 80;// Offset Y
Mais precisamente, se eu mudar de TF, a segunda aparece, mas a primeira desaparece; todas as três aparecem alternadamente em TFs diferentes, mas não todas juntas. A ordem não pode ser rastreada.
Leia a nota em CopyTicks(). Sobre as bandeiras.
Onde eu disse que não era bom em lógica?
Para fazer algoritmos, eu acho, é preciso lógica. E isto está longe de ser matemático. E aqui não sou amigável com ele - apenas o material de referência certo e a ajuda daqueles que o são.
O trabalho do programador não é resolver tarefas complexas, mas fazer com que o computador as faça por ele. Mas isto pode exigir a resolução de outras tarefas complexas, que o programador executa obedientemente. :)
Suas palavras de um post anterior :" Para fazer algoritmos, parece-me, você precisa de lógica. E isto está longe de ser matemático. E eu não sou amigo dele - apenas o material de referência certo e a ajuda daqueles que o são".
Não, não é. É assim:
"Para fazer algoritmos, parece-me que você precisa de lógica. E isto está longe de ser matemático. E eu não sou amigo dele - apenas o material de referência certo e a ajuda daqueles que o são".
Em termos de significado, as duas sentenças estão próximas uma da outra. Mas você encontrou seu significado...
O trabalho do programador não é resolver tarefas complexas, mas fazer com que o computador as faça por ele. Mas isto pode exigir a resolução de outras tarefas complexas, que o programador executa obedientemente. :)
O definidor de tarefas, é claro, rege. Mas ele tem que ser um programador para permanecer no curso))))
As regras de definição de problemas, é claro. Mas ele tem que ser um programador para permanecer no curso))))
É isso mesmo, o gerente de tarefas também é o executor. Embora, nem sempre.
Por favor, informe. Tenho um EA que tira dados (tempo) de um indicador e conta a diferença em milissegundos entre carrapatos.
Eu o produzo via Alerta e recebo o seguinte (ver foto). A meu ver, primeiro obtenho o número total de milissegundos e depois a diferença em milissegundos entre os últimos 4 ticks (entre 1 e 2, 2 e 3, 3 e 4).
Por que é assim? Eu só preciso dos valores para o 4º tick.