Errori, bug, domande - pagina 2603

 
Quando si cambiano i nomi dei simboli al broker (aggiunta di suffissi) tutte le impostazioni del grafico con i vecchi simboli (che non esistono più e devono essere trasferiti ai nuovi nomi) vengono perse! Irrevocabilmente, insieme agli indicatori esperti. Stronzate.
 

Nel 2204, il profilo con gli EA viene caricato senza di essi.

Anche il caricamento lento degli EA non è stato risolto. È vero, ora il terminale non si blocca, solo l'EA è sparito per molto tempo.

 
Ho bisogno di aiuto qui. Ho bisogno della combinazione di tasti CTRL+C e CTRL+V nella finestra inattiva del Tester nella scheda Opzioni. Ho trovato solo quanto segue

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Potete dirmi come avviare programmaticamente lo script quando i terminali cambiano TF o si aprono

Egor, 2008.11.16 09:28

Lo script può essere eseguito aggiornando ulteriormente la "keyboard input-state table" nel thread richiesto.

Devo provarlo in MQL, forse puoi aiutarmi:

    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);

    }

Non sono stato in grado di implementarlo. Ne ho davvero bisogno per un multi-tester.

 
fxsaber:
Per favore, aiutatemi. Ho bisogno di inviare combinazioni di tasti CTRL+C e CTRL+V nella finestra inattiva del Tester nella scheda Impostazioni. Ho trovato solo quanto segue

Non è stato possibile attuarlo. Bisogno di un multitester.

Non si può inviare un comando di copia-incolla a una finestra inattiva. Per prima cosa, aprite la finestra del tester e attivate la scheda delle impostazioni
 

C'è qualcosa che non va nelle punte. File EA:

Alt+G manda qui:


Editore 2200

 
Slava:
È impossibile inviare un comando di copia-incolla a una finestra inattiva. Per prima cosa, dovete aprire la finestra del tester e attivare la scheda delle impostazioni

Tutte le azioni per automatizzare il tester possono essere fatte tramite PostMessage, il che è una grande comodità. Poiché il tester può essere ridotto al minimo, ecc.

Ma ottenere e importare le impostazioni è un'eccezione a questa comodità. È possibile organizzare qualche meccanismo che aiuti ad automatizzare il lavoro con le impostazioni da parte vostra?

 

Puoi dirmi come fermare il tester o l'ottimizzatore del codice?

Per esempio, il tester dovrebbe caricare un file esterno. Se il file non viene trovato, mostrano un messaggio che si sono dimenticati del file e fermano il tester o l'ottimizzatore che gira a vuoto.

 
Igor Makanu: MT4 build 1220 era molto probabilmente l'ultimo aggiornamento di MT4, che in precedenza da admins ha scritto che ME per i terminali 4/5 sono gli stessi, il che significa che non ci sarà più nuovo 32 bit ME

E se vengono trovati nuovi bug, rimarranno tali?

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

E se vengono trovati nuovi bug, rimarranno tali?

Risolvere i bug e sviluppare sono cose diverse.
 
. ... Rick D. ... .:

Qualche consiglio su come fermare il tester o l'ottimizzatore dal codice?

Per esempio, l'Expert Advisor ha bisogno di scaricare un file esterno. Se il file non viene trovato, il tester o l'ottimizzatore verrà informato che si è dimenticato del file e smetterà di girare a vuoto.

Forum sul trading, sistemi di trading automatico e test di strategia

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2019.11.06 16:57

A volte nell'ottimizzazione genetica le prime migliaia di passaggi sono sufficienti per capire già il risultato più o meno.

Quando si eseguono automaticamente molte ottimizzazioni, si vuole che tutto funzioni più velocemente. Ecco perché avremo bisogno di un meccanismo per interrompere l'ottimizzazione.

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

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


Applicazione.

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

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;
    }
}
Motivazione: