Oscilador de equidade por MQL5 significa - página 3

 

DV2010:

...Renat, segundo sei, a exibição do indicador no gráfico após a conclusão dos testes baseia-se nos cálculos efectuados durante o teste e no preenchimento da matriz de indicadores. Mas o que significa, que os resultados não são transferidos do testador para o gráfico indicador personalizado?

Naturalmente, os dados de cálculo do indicador do agente-avaliador não são transferidos para a carta terminal. Não passaremos centenas de megabytes de dados calculados para o terminal, e eles serão imediatamente (e no tick seguinte) recalculados pelo indicador (a chamada da função OnCalculate não foi cancelada).

O indicador deve calcular-se a si próprio.

 

sergey1294:
Отвечу вам одно, пока не появиться режим визуализации решить вашу задачу не так просто. Есть одно решение, это записывать данные эквити в файл при тесте. потом данные из этого файла записать в буфер индикатора тем самым построить график эквити.

Mas onde escrevo exactamente os dados para o buffer?

Pensei que só podia ser escrito à OnCalculated e tentei implementá-lo dessa forma.

 
DV2010:

Rosh, a variante para online já foi publicada, mas como alguém que trabalha principalmente com História, preciso de uma variante que funcione com dados históricos. E ainda tenho dificuldade em compreender qual poderá ser a principal dificuldade aqui.


Escrever valores de equidade num ficheiro. Em seguida, traçar o indicador por estes valores. Contudo, o ficheiro de dados terá de ser movido manualmente porque durante os testes os ficheiros são escritos na pasta agent_name/MQL5/Files.
 
DV2010:

Mas onde escrevo exactamente os dados para o buffer?

Pensei que só podia ser escrito à OnCalculated e tentei implementá-lo dessa forma.

Utilizamos especialistas para escrever valores no ficheiro, depois no indicador escrevemos o código para leitura do ficheiro e escrevemos os dados no buffer. Ainda não vos posso mostrar o código, demorarei algum tempo a escrevê-lo.

 
Renat:

Naturalmente, os valores indicadores calculados não podem ser transferidos do Agente-Testador para a carta terminal. Não passaremos centenas de megabytes de dados calculados para o terminal, e eles serão imediatamente (e no tick seguinte) recalculados pelo indicador (a chamada da função OnCalculate não foi cancelada).

Renat, o indicador deve ler-se a si mesmo

É por isso que inicializo os valores da matriz de indicadores com alguns valores no método OnCalculated .Mas porque é possível inicializar (construir) a linha indicadora desta forma, enquanto os valores de Equidade não o fazem?

 
DV2010:

Renat, o indicador deve ler-se a si mesmo

É por isso que inicializo os valores da matriz de indicadores com alguns valores no método OnCalculated .Mas porque é possível inicializar (construir) a linha indicadora desta forma, enquanto os valores deEquidade não o fazem?

Porque os preços têm uma história mas a equidade não. Portanto, precisa de construir a sua própria história para a Equidade, escrevendo-a num ficheiro.
 
Rosh: Escrever os valores de equidade no ficheiro. Em seguida, construir o indicador com base nestes valores. No entanto, o ficheiro de dados tem de ser transferido manualmente, enquanto se testa, os ficheiros são escritos na pasta Agent_name/MQL5/Files.

Segundo sei, deve ser escrito no ficheiro no OnInit do Consultor Especialista com base na definição via AccountInfoDouble(ACCOUNT_EQUITY) e lido a partir do ficheiro - no indicadorOnCalculated.

Mas porque é que os dados sobre a variável Equty através de AccountInfoDouble(ACCOUNT_EQUITY) estão disponíveis directamente em OnCalculated?

O código ficaria então demasiado pesado.....

Não consigo entender ...OnCalculated in Print AccountInfoDouble(ACCOUNT_EQUITY) produz algum valor .

O que é que o impede exactamente de ser imediatamente atribuído ao conjunto de valores indicadores?

Sempre pensei que a indicação de valores no testador sobre o histórico difere da indicação de valores actuais apenas no facto de o histórico já estar registado, enquanto os dados actuais estão apenas a chegar.

 

sergey1294:
потому что цены имеют историю а эквити нет. По этому для эквити вам нужно строить собственную историю записав ее в файл.

Mas então como é que a dinâmica do Equty é exibida através de AccountInfoDouble(ACCOUNT_EQUITY) em OnCalculated Indicator (não apenas em OnTick Expert Advisor)?

Ou o Indicador OnCalculated funciona de forma diferente no modo de teste e no modo de visualização?

 

Declarar duas arrays Equidade[] e Tempo[] a nível global na EA.

Escrever o valor da equidade e do tempo na matriz apropriada ao testar a EA.

Utilizar um guião para ler o ficheiro no final dos testes e traçar a equidade no gráfico requerido.

Esta é a melhor maneira para os seus objectivos, não compreendo porque precisa de um indicador.

 
DV2010:

Segundo sei, deve ser escrito no ficheiro no OnInit do Consultor Especialista com base na definição via AccountInfoDouble(ACCOUNT_EQUITY) e lido a partir do ficheiro - no indicadorOnCalculated.

Mas porque é que os dados sobre a variável Equty através de AccountInfoDouble(ACCOUNT_EQUITY) estão disponíveis directamente em OnCalculated?

O código ficaria então demasiado pesado.....

Não consigo entender ...OnCalculated in Print AccountInfoDouble(ACCOUNT_EQUITY) produz algum valor .

O que é que o impede exactamente de ser imediatamente atribuído ao conjunto de valores indicadores?

Sempre pensei que a indicação de valores no testador sobre o histórico difere da indicação de valores actuais apenas no facto de o histórico já estar registado, enquanto os dados actuais estão apenas a chegar.

Nem sequer sei como lhe explicar isto. AccountInfoDouble(ACCOUNT_EQUITY) armazena o último valor do capital próprio. Após os testes, como disse Renat, o indicador é reinicializado e recalculado. Assim, os dados de equidade acumulados no tampão indicador durante o teste são apagados.