Erros, bugs, perguntas - página 363

 

Onde é que SymbolsTotal() e SymbolName() obtêm a informação no testador? Tenho um desajuste entre o i-ésimo símbolo no terminal e o testador.

Se no terminal o 3º USDJPY então no testador o 3º EURGBP.

Estou apenas a fazer uma enumeração dos símbolos MarketWatch e a codificá-los em Expert Advisor por números de série.

 

Boa tarde!

Tenho uma pergunta sobre a funçãoIndicatorSetString na qual pode especificar um nome curto para o indicador, referindo-se ao qual este indicador pode ser subsequentemente removido do gráfico.

Penso que esta é uma situação estranha.

No PC de escritório este procedimento corre bem, mas no outro, o PC de casa o valor do seu nome curto é definido automaticamente no início (ou seja, sem ter em conta os parâmetros de entrada, que utilizo para formar um novo nome), e o novo nome só aparece depois de se destacar o indicador e a sua recarga.

A primeira coisa que me veio à mente foram as diferenças no software, mas depois de comparar, apercebi-me de que tudo é básico, idêntico:

- Códigos de peritos e indicadores;

- versão do software (Build 425);

- OS (WinXP SP3);

- os mesmos parâmetros (especialmente comparados).

Em geral, a verificação é a seguinte:

1. Vários botões são exibidos no ecrã, cada um deles tem um nome curto e geral de um indicador

2. Quando se prime o botão, aparece o indicador que lhe corresponde pelo seu nome comum, e quando o solta, este é apagado com base no nome curto.

3. No PC do escritório, os indicadores são apagados da primeira imprensa, enquanto que no PC de casa só são apagados da segunda imprensa.

Qual poderá ser a razão possível para isto?

Se esquematicamente, excluindo as coisas habituais para peritos e indicadores, bem como outras funcionalidades que não estão directamente relacionadas com a questão mencionada, parece que é o seguinte

1. Em indicador My_Indicator:

   input double  Offset  = 0;
   int OnInit()  
   {  
      string NewNameIndicator = OldNameIndicator + Offset;
      IndicatorSetString (INDICATOR_SHORTNAME, NewNameIndicator);
   }

2. Na EA:

   void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
   {  
        String ShortNameIndicator1;
        //---При нажатии            
        if (sparam==My_Button1.Name()){
            if(My_Button1.State()==true){
                Int handle = iCustom (_Symbol,_Period, "My_Indicator1 ", "FirstParameter");
                ChartIndicatorAdd(0,0,handle);
                ShortNameIndicator1 = ChartIndicatorName(0,0,ChartIndicatorsTotal(0,0)-1);
                 Alert (“State()=true, IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
        if (sparam==My_Button1.Name()){
           if(My_Button1.State()==false){
                  Alert (“State()=false, IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete(0,0,ShortNameIndicator1);  
           }
        }
    }

Como resultado:

No PC de escritório,IndicatorName é emitido como um novo nome a partir do primeiro passe, enquanto que no PC de casa apenas a partir do segundo passe.

No PC do escritório, o IndicatorName é apagado após a primeira prensa, enquanto no PC de casa é apagado após a segunda prensa.

Ao mesmo tempo, após a primeira impressão e divulgação no PC de origem, é exibido o nome do indicador original (My_Indicator sem adicionar o parâmetro de entrada ao nome), embora o código do Expert Advisor e do indicador, repito, seja utilizado em ambos os casos da mesma forma.

 

Para citar aqui a minha mensagem ao servicedesk


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart()
{
}


Tentativa de compilação leva a erro interno #108

após descarregar a última versão do terminal e reinstalá-la na mesma pasta, o erro mudou para erro interno #-3

A sequência de acções
não sei se está relacionada com o erro, mas começou a aparecer logo após ter actualizado os ficheiros de ajuda MQL5 utilizando o procedimento automático correspondente do MetaEditor.

O resultado esperado


compilação normal do guião))


O problema desapareceu hoje depois de uma limpeza anti-vírus do computador.

O malware parece ser novo, uma vez que não foi detectado por nenhum dos antivíruses conhecidos. As manifestações externas foram as seguintes:

  • A presença de um ficheiro com um nome sem significado e extensão .dat na pasta c:\Windows\AppPatch. O cabeçalho do ficheiro mostra que é executável, o nome original é dd.exe, e os campos "product name" e "copyright" são conjuntos sem sentido de letras maiúsculas.
  • presença de uma entrada modificada do Userinit no ficheiro HKLM\Software\Microsoft\Windows NTWinlogon chave de registo com o caminho para o ficheiro acima mencionado. Quando a entrada é apagada, esta última tende a recriar-se sem ser notada se o vírus ainda estiver na memória.
  • execução ocasional de várias cópias de processos conhost.exe e route.exe, e por vezes netsh.exe
  • falhas com o MetaEditor 5)) - O editor de metaquotas era um bom detector de malware, para além de todas as suas características)

Limpava tudo em modo seguro.

Sim, foi riscada a conta local da Webmoney, mas os dados de identificação não desapareceram)))).

Recomendo a todos que verifiquem manualmente.

 
Urain:

Onde é que SymbolsTotal() e SymbolName() obtêm a informação no testador? Tenho um desajuste entre o i-ésimo símbolo no terminal e o testador.

Se no terminal o 3º USDJPY então no testador o 3º EURGBP.

Estou apenas a fazer uma enumeração dos símbolos MarketWatch e a codificá-los em Expert Advisor por números de série.

Não se pode confiar na ordem dos símbolos na MarketWatch, porque pode ser qualquer por definição.
 

Arquivos anexados:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

o que é?

parece enumerar enum_TYPE_MARKET_INFO, em forma numérica.

Tenho a mesma coisa. reportar ao SD.

 
Renat:
A ordem dos caracteres no relógio de mercado não pode ser baseada, porque pode ser qualquer ordem por definição.

Não se trata da ordem dos símbolos ou do número de símbolos, mas a ordem e o número de símbolos ao mesmo tempo são diferentes no terminal e no testador.

Resolvi o problema passando a lista de símbolos para o testador através de um ficheiro. Embora acredite sinceramente que se trata de um insecto.

 
Urain:

Não se trata da ordem dos símbolos ou do número de símbolos, mas a ordem e o número de símbolos ao mesmo tempo são diferentes no terminal e no testador.

Em geral, resolvi o problema passando o conjunto de caracteres para o testador através de um ficheiro. Embora eu honestamente pense que é um insecto.

Não compreendo bem o problema...

E se o utilizador alterar a ordem dos caracteres no Marketwatch enquanto trabalha, será também um bug?

 
AlexSTAL:

Não compreendo bem o problema...

Se o utilizador alterar a ordem dos caracteres no Marketwatch enquanto este está a funcionar, isso também seria um bug?

Quando o testador está a funcionar? É improvável, após o início do testador funciona isoladamente, mas no modo de pré-arranque espera-se que os símbolos coincidam (aqueles entre testes de Expert Advisors, por exemplo quando se muda um EA ou quando se muda um símbolo ou período, e qualquer alteração nas definições do testador deve levar a uma correspondência de símbolos, imho).
 
Urain:

Não se trata da ordem dos caracteres ou do número de caracteres, mas a ordem e o número são diferentes no terminal e no testador ao mesmo tempo.

Em geral, resolvi o problema passando uma lista de caracteres no testador através de um ficheiro. Embora acredite sinceramente que se trata de um insecto.

A base de dados de símbolos (market watch) é actualizada de forma assíncrona e aleatória a partir do servidor. Em qualquer caso, não pode confiar na sua encomenda.

O Testador é um programa separado, muitas vezes remoto. No testador, a base de símbolos não é completamente transferida, e apenas os símbolos que são utilizados nos cálculos - isto é feito para poupar recursos. Por conseguinte, a ordem dos símbolos (adicionados à lista de símbolos activos no testador) é diferente.

Usar nomes de símbolos em parâmetros - esta é uma opção mais segura.