Erros, bugs, perguntas - página 2603

 
Ao alterar os nomes dos símbolos no corretor (sufixos adicionados) todas as definições dos gráficos com os símbolos antigos (que já não existem e precisam de ser transferidos para os novos nomes) são perdidos! Irrevogavelmente, juntamente com os indicadores dos peritos. Tretas.
 

Em 2204, o perfil com EAs é carregado sem eles.

O lento carregamento de EAs também não foi fixado. É verdade, agora o terminal não está pendurado, apenas a EA desapareceu durante muito tempo.

 
Preciso de ajuda aqui. Preciso da combinação de teclas CTRL+C e CTRL+V na janela inactiva da tabulação Testador em Opções. Apenas encontrei o seguinte

Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais

Pode dizer-me como iniciar o script programático quando os terminais mudam de TF ou abrem

Egor, 2008.11.16 09:28

O guião pode ser executado actualizando adicionalmente a "tabela de estados de entrada do teclado" na linha desejada.

Tenho de o experimentar em MQL, talvez me possa ajudar:

    if ( h != NULL)
    {
        HWND child = :: FindWindowEx( h,NULL,"Edit", NULL);

        UINT lparam_Ctrl1 = :: MapVirtualKey( VK_CONTROL, 0) << 16 | 1 ;
        UINT lparam_A1 = :: MapVirtualKey((int)'A', 0) << 16 | 1 ;

        UINT lparam_A2 = 1 << 31 | 1 << 30 | :: MapVirtualKey((int)'A', 0) << 16 | 1 ;
        UINT lparam_Ctrl2 = 1 << 31 | 1 << 30 | :: MapVirtualKey( VK_CONTROL, 0) << 16 | 1 ;

        DWORD pid;
        DWORD tid = GetWindowThreadProcessId( child, & pid);
        HANDLE hProc = OpenProcess( PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, pid);
        //Ctrl + A

        AttachThreadInput( GetCurrentThreadId(), tid, TRUE);

        LRESULT pl1_Ctrl = :: PostMessage( child, WM_KEYDOWN, VK_CONTROL, lparam_Ctrl1 );
        WaitForInputIdle( hProc, INFINITE);

        BYTE state[256];
        GetKeyboardState( state);
        state[ VK_CONTROL] = 0x80;
        SetKeyboardState( state);

        LRESULT pl1_A = :: PostMessage( child, WM_KEYDOWN, (int)'A', lparam_A1 );
        WaitForInputIdle( hProc, INFINITE);

        LRESULT pl2_A = :: PostMessage( child, WM_KEYUP, (int)'A', lparam_A2);
        WaitForInputIdle( hProc, INFINITE);

        LRESULT pl2_Ctrl = :: PostMessage( child, WM_KEYUP, VK_CONTROL, lparam_Ctrl2);        
        WaitForInputIdle( hProc, INFINITE);
/*
        GetKeyboardState(state);
        state[VK_CONTROL] = 0x0;
        SetKeyboardState(state);
*/

        AttachThreadInput( GetCurrentThreadId(), tid, FALSE);

    }

Não fui capaz de a implementar. Preciso mesmo dele para um multiteste.

 
fxsaber:
Por favor, ajudem. Preciso de enviar combinações de teclas CTRL+C e CTRL+V na janela inactiva do Testador no separador Definições. Apenas encontrei o seguinte

Não foi possível implementá-lo. Necessitava muito para um multitester.

Não se pode enviar um comando de copiar-colar para uma janela inactiva. Primeiro, abra a janela do testador e active o separador das definições
 

Há algo de errado com as dicas. Ficheiro EA:

Alt+G envia aqui:


Editor 2200

 
Slava:
É impossível enviar um comando copy-paste para uma janela inactiva. Primeiro, deve abrir a janela do testador e activar o separador das definições

Todas as acções para automatizar o testador podem ser feitas através do PostMessage, o que é uma grande conveniência. Uma vez que o testador pode ser minimizado, etc.

Mas a obtenção e importação de configurações é uma excepção a esta conveniência. É possível organizar algum mecanismo para ajudar a automatizar o trabalho com configurações do seu lado?

 

Pode dizer-me qual a forma de impedir o testador ou o optimizador de codificar?

Por exemplo, o provador deve carregar um ficheiro externo. Se o ficheiro não for encontrado, mostrar uma mensagem de que se esqueceram do ficheiro e impedir o testador ou o optimizador de correr ociosamente.

 
Igor Makanu: MT4 build 1220 foi muito provavelmente a última actualização de MT4, que mais cedo os administradores escreveram que ME para os terminais 4/5 são os mesmos, o que significa que não haverá mais ME de 32 bit novos

E se forem encontrados novos bugs, eles vão continuar assim?

 
. ... Rick D. ... .:

E se forem encontrados novos bugs, será que eles vão continuar assim?

A correcção de bugs e o desenvolvimento são coisas diferentes.
 
. ... Rick D. ... .:

Alguma dica sobre como parar o testador ou optimizador do código?

Por exemplo, o Expert Advisor precisa de descarregar um ficheiro externo. Se o ficheiro não for encontrado, o testador ou optimizador será informado de que se esqueceu do ficheiro e deixará de funcionar em modo inactivo.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Características da linguagem mql5, subtilezas e truques

fxsaber, 2019.11.06 16:57

Por vezes, na optimização genética, os primeiros milhares de passagens são suficientes para já compreender mais ou menos o resultado.

Quando se executam automaticamente muitas optimizações, quer-se que tudo funcione mais rapidamente. É por isso que vamos precisar de um mecanismo para interromper a optimização.

#include <fxsaber\MultiTester\MTTester.mqh>  // https://www.mql5.com/ru/code/26132

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


Aplicação.

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}