FORTES Por favor, ajude - página 10

 
Mikalas:

Você também é nosso "leitor"... Pergunta:

Por que construir séries de tempos se os dados estão prontos ( CopyTime(símbolo,período,primeiro_data+PeriodoSegundos(período),1,vezes) )?

Eles não estão prontos. Eles provavelmente estão em disco. É até possível que eles estejam sincronizados com o histórico do servidor (se o gráfico estiver aberto ou se outro programa os solicitou recentemente).

Mas isso não significa que a função apenas acredite nisso. Você precisa consultar os dados do disco, construir um cache na memória e só então você pode dizer que o histórico está lá e começa a partir desta data.

Mas nem esta minha resposta, nem as repetidas respostas dos desenvolvedores, nem o código de trabalho, nem a documentação o ajudarão. A função não funciona como você pensava, há uma falha aqui.

 
antt:

Leia a documentação com mais cuidado, não de forma seletiva. A presença de dados históricos em disco não significa necessariamente para o terminal "Definitivamente lá". Neste caso (quando acessado pelo indicador), as funções só funcionam com o cache de timeseries na memória. Isso significa que o acesso à memória síncrona é realizado e, se não houver lá uma série de horas preparadas, a data SERIES_FIRSTDATE (do primeiro elemento da série) não será devolvida. Mas, é claro, o pedido inicia o carregamento da preparação de séries de tempo na memória.

A solicitação SERIES_TERMINAL_FIRSTDATE está conectada com a inicialização e sincronização do banco de dados com o servidor, portanto, a primeira chamada não funcionará imediatamente de qualquer forma.

Em princípio, a capacidade de obter o histórico necessário é verificada usando SERIES_SERVER_FIRSTDATE. É claro, você pode contar com X iterações de pedido de histórico, mas se o terminal confirmar a presença do histórico em SERIES_SERVER_FIRSTDATE, então a disponibilidade de dados de séries temporais é apenas uma questão de tempo (sincronização da base m1 com o servidor e geração de séries temporais).

Entendi isso, mas me diga, por que não poderia ser feito da maneira que descrevi acima?

Isso não teria afetado de forma alguma a velocidade do processamento de informações:

Se havia alguma informação sobre um instrumento - registre a data da primeira ocorrência dele e guarde-a na memória - 8 bytes!

Você pode até mesmo não armazená-lo, mas quando você faz SymbolSelect(), você o coloca na memória.

Quando a abordamos com a função SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE), obtemos:

A -1 - sem dados

Б. 0 - nenhum dado disponível mas não pronto

В. Data da primeira informação

Então tudo ficaria claro e transparente.

-1 - Indo para o servidor

0 - Aguarde a próxima iteração para verificar e/ou construir as séries de tempos

> 0 Construir timeseries

De sua referência, eu entendi que VOCÊ quase fez isso, afinal não.

Aparentemente, um programador começou a escrever e outra pessoa terminou

Sua implementação é boa para a FOREX, mas muito inconveniente para a FORTS.

Para FORTS, as citações podem não vir por muito tempo e a série cronológica é baixada da plataforma.

e você tem que repetir todo o processo novamente com o acesso ao servidor!

2015.03.27 20:24:56.568  (GAZR-6.15,M1) OnCalculate: Не скопированы тийминги по символу - GAZR-9.15
2015.03.27 20:25:34.092  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.100  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:34:40.098  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:34:40.126  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:37:21.475  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:21.491  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:41.563  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:41.051  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:40:56.579  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:56.595  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:58.886  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:58.896  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:59.436  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:41:00.892  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
 
Mikalas:

Sua implementação é boa para a FOREX, mas muito inconveniente para a FORTS.

Em FORTS as citações podem não vir por muito tempo e a série cronológica é descarregada do paiachi

e você tem que repetir todo o processo de obter os dados novamente, com o servidor fazendo login!

Mikalas, eu ainda tenho fé em você. Com certeza você vai ler tudo o que foi dito aqui.

FORTES Por favor, ajude.

O indicador de múltiplas moedas não é tão simples assim.

Primeiro, verifique a disponibilidade dos instrumentos:

bool CorrectSymbol( string symbol )
{
        ResetLastError();
        if ( SymbolInfoDouble( symbol, SYMBOL_BID ) > DBL_EPSILON ) return(true);

        // символ не выбран в "Обзоре рынка" (нет в списке доступных)
        if ( GetLastError() == 4302 )
        {
                if ( SymbolSelect( symbol, true ) && SymbolInfoInteger( symbol, SYMBOL_SELECT ) ) return(true);
        }

        return(false);
}

Em seguida, abrir os gráficos de todos os instrumentos utilizados (basta um objeto gráfico invisível) para que o histórico carregue normalmente.

E só então tente o histórico de carga com a CheckLoadHistory.

Mas isto também pode não ser suficiente.


 

E, a propósito, também não gosto desta situação com a análise de múltiplas moedas e a construção de indicadores. Como ela é implementada.

É uma dança de pandeiro, antes de você começar a calcular algo que você precisa fazer um monte de cheques... Eu não vi isso em nenhuma outra plataforma. Lá tudo é mais simples do ponto de vista do usuário.

Não é segredo que muitas pessoas, mesmo aquelas que aprenderam a programação do MT4, têm medo da complexidade da programação do MT5.

Se eu fosse o desenvolvedor, tentaria tornar nossa vida mais fácil. Combine todo esse pandeiro em um único comando, como

GatData(RTS,1000)

e o terminal resolve esta tarefa, faz verificações, se necessário, abre gráficos, histórico de trocas, atualizações, etc.

E após sua execução, tenho dados reais para trabalhar.

Z.I. Lembro-me que havia um lema: "Terminal para donas de casa".

 
komposter:

Mikalas, eu ainda tenho fé em você. Você certamente lerá tudo o que foi dito aqui.


komposter!

(Qualquer outra coisa - sem ofensa!)

O que você encontrou sobre meu modelo de obtenção de informações sobre tamseries?

Porque não é de você!?

Estou tentando "passar" para os desenvolvedores para facilitar a vida de todos nós.

"vida", mas SEMPRE há pessoas como você que são as mais inteligentes!

Portanto, será assim!

 
Prival-2:

E, a propósito, também não gosto desta situação com a análise de múltiplas moedas e a construção de indicadores. Como ela é implementada.

É uma dança de pandeiro, antes de você começar a calcular algo que você precisa fazer um monte de cheques... Eu não vi isso em nenhuma outra plataforma. Lá tudo é mais simples do ponto de vista do usuário.

Não é segredo que muitas pessoas, mesmo aquelas que aprenderam a programação do MT4, têm medo da complexidade da programação do MT5.

Se eu fosse o desenvolvedor, tentaria tornar nossa vida mais fácil. Combine todo esse pandeiro em um único comando, como

GatData(RTS,1000)

e o terminal resolve esta tarefa, faz verificações, se necessário, abre gráficos, histórico de trocas, atualizações, etc.

E após sua execução, tenho dados reais para trabalhar.

Lembro-me de um slogan sobre terminal para donas de casa...

Hi!

Uma abordagem universal e simples tornaria impossível a escrita de programas eficientes. Você não pode fazer uma função DyData que terá todas as verificações - será um arrasto, desnecessário para o usuário em 95% dos casos.
No caso do indicador - ele funciona o mais rápido possível com seus dados gráficos. Ele foi projetado para este fim. Se o fizermos "pronto para qualquer situação", um simples MA irá desacelerar como um monstro complexo.

Eu não estou defendendo os desenvolvedores, de forma alguma. Eu também não gosto de muitas coisas.
Mas estou tentando ser construtivo, e entendo que não conheço todos os interiores do terminal.

Mikalas está certo em alguns aspectos - agarrar (não ler) e continuar gritando "Incomfortável!", e as discussões se tornam populares e visíveis para os desenvolvedores. E eles fazem algo a respeito (eles já corrigiram alguns bugs em sua ponta).
Então, eu provavelmente estou resmungando por nada )

 
Mikalas:

komposter!

(Qualquer coisa além disso, sem ofensa!)

O que você encontrou sobre meu modelo de obtenção de informações sobre tamsateriais?

Porque não é de você!!!?

Estou tentando "passar" para os desenvolvedores para facilitar a vida de todos nós.

"vida", mas SEMPRE há pessoas como você que são as mais inteligentes!

Portanto, será assim!

Eu já o tenho.

A tarefa era apenas a de escrever um indicador. E acabou sendo necessário melhorar a linguagem.

Eu não daria nenhum conselho se fosse assim).

 
komposter:

Eu já o tenho.

É que a tarefa foi expressa - para escrever um indicador. Mas verificou-se que era necessário melhorar a linguagem.

Eu não daria nenhum conselho se fosse assim).

Andrey!

Você gastou muito mais tempo escrevendo seus posts aqui.

Você poderia ter escrito um indicador para as "minhas" reivindicações (para FORTS) durante este tempo.

E você já viu essas "muletas" de que estou falando!

 
Mikalas:

Andrei!

Você passou mais tempo postando aqui.

Durante este tempo você poderia ter escrito um indicador para "meu" lamento (para FORTS)

E você já viu com os seus próprios olhos aquelas "muletas" de que estou falando!

Escrevi, é por isso que sei do que estou falando.

Você já teria conseguido seu indicador também, se o objetivo fosse obter um indicador, não para corrigir o idioma.

 
komposter:

Escrevi, e é por isso que sei do que estou falando.

Se o objetivo fosse obter um indicador, já teria obtido seu indicador, não para fixar o idioma.

Eu escrevi um indicador, mas é impossível utilizá-lo.

Não posso usá-lo! Não importa o que eu tente, eu tenho problemas em todos os lugares!

Eu tenho OrderSendAsync() - sem mecanismo de rastreamento, embora exista ORDER_ID

Há uma variável global - quando eu fecho o terminal, ele se reinicia...

Há atrasos "incompreensíveis" na execução da ordem - meio feito e o próximo

uma acusação de charlatanismo....

E assim por diante...

Levanto as questões porque os problemas e erros existem ATUALMENTE.

(Eu não estou inventando!)

Eu negocio no BUREAU por dinheiro REAL, não por diversão!

E assim é ARQUIVAL para mim e para TODOS que negociam que o comércio funciona

ARQUIVO de que as funções comerciais são FREQUENTES.

A arquitetura do MT5 é SUPER, eu gosto muito, mas tudo tem que funcionar corretamente e

O acesso aos dados deve ser rápido e fácil.

И... Vamos dar o dia por encerrado, por favor.

Razão: