Alla fine del miglior passaggio vengono presi i dati e da essi si formano (con intervalli impostati di parametri di ingresso) diversi task per l'ottimizzazione.
Vengono eseguite tutte le ottimizzazioni a partire dal punto 3.
I passaggi migliori vengono presi da tutte le ottimizzazioni del punto 4 e salvati come set per la negoziazione del portafoglio.
Si è rivelato uno scanner di mercato e un regolatore di TS molto potente. Le fonti TC non sono necessarie per queste manipolazioni.
Si è rivelato uno scanner di mercato e un regolatore di TS molto potente.
#property script_show_inputs#include <fxsaber\MultiTester\MultiTester.mqh> // https://www.mql5.com/it/code/26132#include <fxsaber\MultiTester\Task.mqh>
inputbool OnlyCustomSymbols = true; // Solo caratteri personalizzatiinputbool AllSymbols = false; // Tutti i caratteri o correntevoid Add( conststring SymbName )
{
TesterSettings.Add(NULL, SymbName, 0, 0, 0, TASK::InitBase, TASK::DeinitBase);
for (int i = 0; i < ::inAmount; i++)
TesterSettings.Add(NULL, NULL, 0, 0, 0, TASK::InitSub, TASK::DeinitSub);
}
// Questa funzione è responsabile della generazione dell'elenco dei compiti.void SetTesterSettings()
{
if (AllSymbols)
// Cerca tutti i simboli nel Market Watch.for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
{
conststring Name = SymbolName(i, true);
if (!OnlyCustomSymbols || SymbolInfoInteger(Name, SYMBOL_CUSTOM))
Add(Name);
}
elseif (!OnlyCustomSymbols || SymbolInfoInteger(_Symbol, SYMBOL_CUSTOM))
Add(_Symbol);
}
Il Consulente esperto dovrebbe avere
sinputint inMinTrades = 500; // Numero minimo di operazioni (posizioni).sinputint inMaxTrades = 90000; // Numero massimo di operazioni (posizioni).doubleOnTester()
{
return(((TesterStatistics(STAT_TRADES) >= inMinTrades) && (TesterStatistics(STAT_TRADES) <= inMaxTrades)) ? TesterStatistics(STAT_PROFIT) : 0);
}
Non conosco le versioni precedenti. Ma l'ultima versione può eseguire più volte un test per lo stesso strumento.
Nel log appare Done, poi vuoto (Start non appare), e il terminale ha avviato un nuovo passaggio nello stesso momento. Sembra che else if (IsRun = (Init = TesterSettings.Init(Pos)) && TesterSettings.Run(Pos)) restituisce false, perché TesterSettings.Run(Pos) ha restituito false. E al prossimo passaggio del timer, if (MTTESTER::IsReady()) restituirà false, facendo in modo che il ciclo rimanga in attesa. Lo stesso TesterSettings.Run(Pos)) restituisce false, sembra essere banale a causa del timeout, cioè non aspetta ed esce.
Sì, è quello che ho fatto io stesso, ho aumentato il valore a 50. Ma nel caso in cui qualcun altro abbia un problema simile o voglia modificarlo nella versione generale.
traveller00: Sì, è quello che ho fatto io stesso, ho aumentato il valore a 50. Ma nel caso in cui qualcun altro abbia un problema simile o voglia modificarlo nella versione generale.
Ho registrato il numero di tentativi necessari per cambiare lo stato del pulsante. Risultati interessanti.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Ora la libertà di automatizzare il Tester è totale.
Uno degli esempi di applicazione reale (tutto viene eseguito automaticamente)
Si è rivelato uno scanner di mercato e un regolatore di TS molto potente. Le fonti TC non sono necessarie per queste manipolazioni.
Si è rivelato uno scanner di mercato e un regolatore di TS molto potente.
Il Consulente esperto dovrebbe avere
Non conosco le versioni precedenti. Ma l'ultima versione può eseguire più volte un test per lo stesso strumento.
Nel log appare Done, poi vuoto (Start non appare), e il terminale ha avviato un nuovo passaggio nello stesso momento. Sembra che else if (IsRun = (Init = TesterSettings.Init(Pos)) && TesterSettings.Run(Pos)) restituisce false, perché TesterSettings.Run(Pos) ha restituito false. E al prossimo passaggio del timer, if (MTTESTER::IsReady()) restituirà false, facendo in modo che il ciclo rimanga in attesa. Lo stesso TesterSettings.Run(Pos)) restituisce false, sembra essere banale a causa del timeout, cioè non aspetta ed esce.
traveller00:
TesterSettings.Run(Pos)) restituisce false sembra essere banale a causa del timeout, cioè non aspetta ed esce.
Se è così, provare ad aumentare questo numero
Non ho mai avuto un caso in cui il pulsante di avvio non si trasformasse in un pulsante di arresto per molto tempo dopo essere stato premuto.
Ho eseguito l'Esempio 3 per un centinaio di caratteri e tutto ha funzionato bene.
Sì, è quello che ho fatto io stesso, ho aumentato il valore a 50. Ma nel caso in cui qualcun altro abbia un problema simile o voglia modificarlo nella versione generale.
Ho registrato il numero di tentativi necessari per cambiare lo stato del pulsante. Risultati interessanti.
ZY Forse questo bug è ancora presente.