Os únicos e únicos GlobalVariables e arquivos para troca de dados entre EAs, indicadores e scripts são
Todos os 4 pontos acima são "hacks" locais por falta de peixe. Todos os 4 pontos acima usam mecanismos não projetados para o intercâmbio de dados arbitrários, muito menos conjuntos de dados.
Você pensaria que a GlobalVariables foi projetada especificamente para o envio de mensagens. Isso é uma coisa tola de se dizer. Na verdade, é o mesmo hack que qualquer outro item.
...Grosso modo,um ciclo completo de leitura/escrita através de um recurso corre a uma taxa de 4 milhões de ticks por segundo.
A leitura/escrita ao recurso é muito rápida. Mas até que ponto isto é adequado para tal transmissão:
1. Linha A. Evento Temporizador. Coletar todos os valores de parâmetros que foram alterados no evento e traduzi-los em uma cadeia. Traduzir cadeia para Char, escrever para recurso. Enviar mensagem para o lado B.
2. Festa B. O evento OnChartEvent(), recebeu um sinal sobre a mensagem, abriu o recurso, leu-o, preencheu o kernel de parâmetros com novos valores, redesenhou os elementos necessários.
E se este evento for executado continuamente, na freqüência do temporizador?
A questão é como melhor utilizar os recursos para isso, se houver outras opções.
A opção EventChartCustom() tem dois inconvenientes.
O pacote se torna na fila de eventos.
O pacote não pode ter mais de 127 caracteres. Consequentemente, uma mensagem de 1000 caracteres tem que ser dividida e depois remontada. E cada parte da mensagem estará na fila do evento.
A variante com passagem por objetos gráficos, requer a divisão da mensagem em pacotes de 64 caracteres, escrevendo-os em descrições de objetos e depois remontando-os. É interessante que esta variante é a mais rápida, mas à medida que o comprimento da corda aumenta, sua velocidade diminui. Ou seja, cada chamada para ObjectSetString() leva 3 microssegundos. Mas se uma cadeia tem 1000 caracteres, precisamos dividi-la em 64 caracteres, o que significa que precisamos chamar ObjectSetString() cerca de 8 vezes. 8*3 = 24 ms. Depois, leva o mesmo tempo para montar o cordel. É por isso que se a corda tivesse 10 000 caracteres, este método se aproximaria definitivamente da velocidade do método de trabalho através dos recursos. (Estou falando de tempo de economia e leitura do recurso + transferência de cordas para uint e de volta).
A variante de recursos permanece sem testes até o final. Vou testá-lo no testador hoje e ficará finalmente claro se pode ser universal.
Provavelmente, há muito tempo para descrever em tais detalhes as várias opções de interações. Infelizmente, eu não possuo tal recurso.
Aqui está um artigo sobre o assunto onde está ocorrendo uma interação completa. Cada edifício é construído a partir de tijolos e para tarefas específicas. Todos os tijolos possíveis são mostrados no início da linha. O resto é com o construtor.
Os únicos e únicos GlobalVariables e arquivos para troca de dados entre EAs, indicadores e scripts são
Todos os 4 pontos acima são "hacks" locais por falta de peixe. Todos os 4 pontos acima usam mecanismos não projetados para o intercâmbio de dados arbitrários, muito menos conjuntos de dados.
Você pensaria que a GlobalVariables foi projetada especificamente para o envio de mensagens. Isso é uma coisa tola de se dizer. Na verdade, é o mesmo hack que qualquer outro item.
...Grosso modo,um ciclo completo de leitura/escrita através de um recurso corre a uma taxa de 4 milhões de ticks por segundo.
A leitura/escrita ao recurso é muito rápida. Mas até que ponto isto é adequado para tal transmissão:
1. Linha A. Evento Temporizador. Coletar todos os valores de parâmetros que foram alterados no evento e traduzi-los em uma cadeia. Traduzir cadeia para Char, escrever para recurso. Enviar mensagem para o lado B.
2. Festa B. O evento OnChartEvent(), recebeu um sinal sobre a mensagem, abriu o recurso, leu-o, preencheu o kernel de parâmetros com novos valores, redesenhou os elementos necessários.
E se este evento for executado continuamente, na freqüência do temporizador?
A questão é como melhor utilizar os recursos para isso, se houver outras opções.
//---------------------------------------------------------------------------------------------------------------------
E se este evento for executado continuamente, na freqüência do temporizador?
A questão é como melhor utilizar os recursos para isso, se houver outras opções.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Intercâmbio de dados entre programas
fxsaber, 2018.11.21 13:12
Provavelmente, há muito tempo para descrever em tais detalhes as várias opções de interações. Infelizmente, eu não possuo tal recurso.
Aqui está um artigo sobre o assunto onde está ocorrendo uma interação completa. Cada edifício é construído a partir de tijolos e para tarefas específicas. Todos os tijolos possíveis são mostrados no início da linha. O resto é com o construtor.
O artigo não testa a comunicação de dois programas através de recursos, um dos quais está no testador.
Qual é o problema com o sindicato? Por favor, um exemplo:
O artigo não testa a comunicação de dois programas através de recursos, um dos quais está no testador.
Leia a frase sobre tijolos.
...
Este artigo está disparando um canhão contra pardais. Como muitos artigos. Prefiro resolver o problema eu mesmo do que entender o artigo.
Tudo pode ser feito 10 vezes mais fácil e claro. Mas o artigo é muito mais fácil...
E de que serve o artigo se você diz não ter verificado o funcionamento dos recursos no testador?
E de que serve este artigo se você diz não ter verificado a operação de recursos no testador?
Saiu da discussão.
Há algo de errado com esta solução. Talvez eu esteja fazendo algo errado.
Para ser breve:
A função StringToCharArray() leva SOMENTE um conjunto de caracteres.
A função ResourceCreate() aceita SOMENTE um array uint.
Portanto, é necessário reescrever o conteúdo da matriz de caracteres (preenchido com o fio convertido), para a matriz de caracteres uint.
Indicador em um gráfico normal: