A volte è necessario visualizzare una parte della storia dei prezzi sotto forma di tabella. Ciò può essere fatto con CTRL+U, selezionando la scheda Barre/Ticks. Inserire a mano l'intervallo necessario. È noioso.
Per questo motivo ho creato una funzionalità aggiuntiva, dimostrata dal seguente Expert Advisor.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/it/code/26132#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/it/code/48393inputbool inTicks = true; // true - Ticks, false - Barsinputint inBefore = -60; // Prima in secondiinputint inAfter = 60; // Dopo in secondiinputENUM_TIMEFRAMES inPeriod = PERIOD_CURRENT; // Periodo (modalità Bars)datetime GetTime( constint X )
{
int Window;
datetime Res;
double Price;
return(ChartXYToTimePrice(0, X, 0, Window, Res, Price) ? Res : 0);
}
voidOnChartEvent( const int32_t id, constlong &lparam, constdouble&, conststring& )
{
if ((id == CHARTEVENT_CLICK) && KEYBOARD::IsControl())
{
constdatetime Time = GetTime((int)lparam);
if (Time)
{
if (inTicks)
MTTESTER::CopyTicks(_Symbol, Time + inBefore, Time + inAfter);elseMTTESTER::CopyRates(_Symbol, inPeriod, Time + inBefore, Time + inAfter);
}
}
}
Facendo clic (con CTRL premuto) sul punto necessario del grafico, si ottengono automaticamente i dati tabellari corrispondenti.
Le funzioni selezionate compilano semplicemente alcuni campi di dati e li interrogano. Poi, attraverso l'interfaccia grafica, si vede ciò che interessa. Automazione, in generale.
если бы время файлов в архиве совпадало со временем модификации в кодобазе. Не соответствует времени изменения конкретного файла. Я вижу корректную структуру после разархивирования а ведь сам редактор позволяет загрузить все эти файлы именно так
Buongiorno, caro fxsaber! Per favore, aiutami a risolvere un problema. Il mio script ha una funzione di archivio, che ho sviluppato con l'aiuto della grande libreria MTTESTER. Scrive Settin nella cartella Tester nella seguente riga: if(!kernel32::CopyFileW(SrcPath,DstPath,false)) // Sovrascrive Settin dalla sandbox Files alla cartella Tester. Si ottiene un set con il nome: "Dopo l'archiviazione". Ma non è adatto a ulteriori rielaborazioni, apparentemente a causa della codifica. Tuttavia, se lo si scrive manualmente sul robot nel Tester di strategia e poi lo si salva con il nome "Dopo la scrittura manuale sul robot e il salvataggio", questo set è già adatto. E non si tratta solo di cambiare l'intestazione, ma di qualcos'altro. Ho chiesto aiuto agli uomini di ferro (Qwen, Deep Seek) che hanno generato uno script "ReloadSetsFromCommonFixed". Ha un sacco di ottime caratteristiche e funziona, tranne che per questa riga: if(!FileCopy(source_path, FILE_COMMON, dest_path, FILE_COMMON)) Il set viene copiato, ma poi nella stampa di verifica l'output è abracadabra, apparentemente a causa della codifica. Iron ha offerto 4 soluzioni, ma nessuna ha funzionato (il testo le ha tutte). La mia ultima speranza è quella di usare quelli in pelle. C'è modo di modificare questa riga nella funzione di archiviazione: if(!kernel32::CopyFileW(SrcPath,DstPath,false)) per simulare anche la scrittura manuale sul robot con successivo salvataggio nel formato richiesto "After manual writing to the robot and saving"? Saluti, Alexander
prRead0 = MTTESTER::GetSettings(Control); // legge le impostazioni del robot appena installate
funziona correttamente e prRead0 = true dopo la sua esecuzione.
Ma nella rete Control, prMFI=true, poiché è stato originariamente caricato manualmente nel robot. Ciò significa che la scrittura sul robot non è effettivamente avvenuta, anche se il segno di scrittura prWrite0 = true.
Nella rete originale, prHEX=vero
Nella rete originale del robot, prMFI=true
Il comando MTTESTER::SetSettings2(Settings) funziona, ma queste impostazioni non appaiono nel robot.
È possibile salvare(inLoad = false) un file di set attraverso lo script, quindi modificare a mano qualcosain esso e caricarlo(inLoad = true) nel Tester attraverso lo script.
Se funziona, si possono prendere i pezzi corrispondenti del sorgente.
A volte è necessario visualizzare una parte della storia dei prezzi sotto forma di tabella. Ciò può essere fatto con CTRL+U, selezionando la scheda Barre/Ticks. Inserire a mano l'intervallo necessario. È noioso.
Per questo motivo ho creato una funzionalità aggiuntiva, dimostrata dal seguente Expert Advisor.
Facendo clic (con CTRL premuto) sul punto necessario del grafico, si ottengono automaticamente i dati tabellari corrispondenti.
Le funzioni selezionate compilano semplicemente alcuni campi di dati e li interrogano. Poi, attraverso l'interfaccia grafica, si vede ciò che interessa. Automazione, in generale.
5430 Le finestre continuano a lampeggiare quando si prepara un'attività.
Come si può risolvere questo problema?
5430 Windows continua a lampeggiare durante la preparazione di un compito.
Come si può risolvere questo problema?
Così.
È un grande tema. Ma ho scaricato prima di tutto separatamente ancora lampeggia.
Ho visto che nel file MultiTester_Example.mq5
aggiunto linee al file MultiTester_Example.mq5.
Ho commentato così o devo farlo in modo diverso? Oppure posso eliminare tutte queste 4 righe?
P.S. Ho visto che ho preso il vecchio elenco di attività senza queste linee e sfarfallava. Con le nuove righe non sfarfalla.
Ma ho commentato correttamente solo 1 riga?
È un grande tema. Ma ho scaricato prima che tutto separatamente ancora lampeggia.
Ho visto che nel file MultiTester_Example.mq5
sono state aggiunte le righe
Ho commentato in questo modo o devo farlo in modo diverso? Oppure posso eliminare tutte queste 4 righe in generale?
P.S. Ho visto che ho preso la vecchia task list senza queste righe e lampeggiava. Con le nuove righe non lampeggia.
Ma ho commentato correttamente solo 1 riga?
C'è un modo per modificare questa riga nella funzione di archiviazione?
Ho cercato qui (nella finestra aperta premere INVIO nella barra degli indirizzi) il record impostato. Molto probabilmente questi flag sono necessari.
Questi flag sono stati molto utili e il problema dell'archiviazione è stato risolto. Ora il risultato è nel formato giusto.
Grazie mille!
Ma nel mio script Nocturne il comando non funziona correttamente :
prWrite0 = MTTESTER::SetSettings2(Settings); // Scrivere le impostazioni sul robot
Anche se prWrite0 = true dopo la sua esecuzione.
Probabilmente è ancora una volta una questione di flag quando si leggono le impostazioni dalla cartella.
Questo viene fatto dalla funzione GetKthFileContent, che ha la riga:
int handle = FileOpen(full_path, FILE_READ | FILE_WRITE | FILE_UNICODE | FILE_TXT | FILE_COMMON);
Neanche le varianti della riga seguente funzionano:
// int handle = FileOpen(full_path, FILE_READ | FILE_TXT | FILE_COMMON); // Fonte variante linea
// int handle = FileOpen(full_path, FILE_READ | FILE_UNICODE | FILE_TXT | FILE_COMMON);
Comando successivo:
prRead0 = MTTESTER::GetSettings(Control); // legge le impostazioni del robot appena installate
funziona correttamente e prRead0 = true dopo la sua esecuzione.
Ma nella rete Control, prMFI=true, poiché è stato originariamente caricato manualmente nel robot. Ciò significa che la scrittura sul robot non è effettivamente avvenuta, anche se il segno di scrittura prWrite0 = true.
Nella rete originale, prHEX=vero
Nella rete originale del robot, prMFI=true
Il comando MTTESTER::SetSettings2(Settings) funziona, ma queste impostazioni non appaiono nel robot.
Qual è il problema?
Saluti, Alexander
Qual è il problema?
Non mi sono preoccupato di studiare le bandiere e ho deciso di scrivere un codice funzionante per salvare e caricare i set-file del Tester.
È possibile salvare(inLoad = false) un file di set attraverso lo script, quindi modificare a mano qualcosain esso e caricarlo(inLoad = true) nel Tester attraverso lo script.
Se funziona, si possono prendere i pezzi corrispondenti del sorgente.