Operazioni sui file
Gli utenti della piattaforma esprimono preoccupazioni giustificate riguardo all'avvio di cBot e indicatori con AccessRights.FullAccess. Ciò è particolarmente vero quando non è disponibile il codice sorgente, è difficile sapere con certezza quali modifiche verranno introdotte dall'algoritmo nel file system. Nella guida ai diritti di accesso, abbiamo già consigliato che i cBot e gli indicatori che condividi con altri dovrebbero ricevere AccessRights.None.
Questa guida API spiega come gli algoritmi con AccessRights limitati possono condurre in modo sicuro operazioni con file locali.
Operazioni sui file in un minuto!
- La funzionalità delle operazioni sui file consente agli algoritmi con diritti di accesso limitati di lavorare con file e cartelle solo all'interno di una cartella designata.
- Il nome della cartella corrisponde al nome del cBot o dell'indicatore.
- Tutte le altre directory del file system dell'utente rimangono protette in modo sicuro dall'accesso non autorizzato.
- Nell'API, la funzionalità delle operazioni sui file è supportata solo per gli algoritmi .NET 6.0.
Regole delle operazioni sui file
Qualsiasi algoritmo con diritti di accesso limitati può eseguire operazioni sui file solo in una cartella designata del file system dell'utente. Ogni tipo di algoritmo localizza la propria cartella come mostrato di seguito (come cBot e indicatori), con una cartella separata creata per ogni nome di algoritmo.
Documents
|-cAlgo
|-Data
|-cBots
|-${cBot Name}
|-Indicators
|-${Indicator Name}
Nota
La funzionalità delle operazioni sui file è disponibile solo per gli algoritmi .NET 6.0.
Le seguenti regole determinano come funziona la funzionalità delle operazioni sui file nell'API:
1. Ogni algoritmo ha accesso solo alla cartella corrispondente al suo nome (incluse le sottocartelle, se presenti).
2. Se non esiste una cartella corrispondente, tale cartella viene creata nel file system secondo lo schema sopra indicato quando un'istanza viene avviata per la prima volta.
3. Se non è possibile creare una nuova cartella, il cBot o l'indicatore non si avvierà e verrà segnalato un errore.
4. Nel codice dell'algoritmo, non è necessario specificare il percorso completo della cartella corrispondente. Gli algoritmi utilizzano invece un percorso relativo.
5. Lo spazio dei nomi System.IO offre una varietà di classi (File, FileInfo, Directory. DirectoryInfo, Path, ecc.) per le quali è possibile chiamare metodi rilevanti per eseguire operazioni con file e cartelle.
Di seguito sono riportati alcuni esempi dei metodi inclusi nelle classi File e Directory.
| Metodo | Descrizione |
|---|---|
File.Create() | Crea o sovrascrive un file nella directory designata. |
File.WriteAllText() | Crea un nuovo file, scrive la stringa specificata nel file e chiude il file. |
File.Copy() | Copia il file esistente in un nuovo file. Non è consentito sovrascrivere un file con lo stesso nome. |
File.Delete() | Elimina un file nella directory designata. |
Directory.CreateDirectory() | Crea una cartella o una sottocartella. |
Directory.Delete() | Elimina una cartella o una sottocartella. |
Directory.Exists() | Verifica se la directory specificata esiste. |
Directory.Move() | Sposta la directory esistente in una nuova directory specificata. |
Caso d'uso
Quando si chiama il metodo TakeChartshot(), non è necessario specificare il percorso completo della directory di destinazione dopo File.WriteAllBytes. Grazie alla funzionalità di operazioni sui file, il chartshot verrà salvato nella directory dell'algoritmo corrispondente anche se i diritti di accesso sono AccessRights.None.
Esempio di creazione di un cBot
L'esempio di cBot riportato di seguito ha AccessRights.None, ma crea un file di testo nella cartella corrispondente denominata "File Access Test" immediatamente dopo la sua inizializzazione. Se viene effettuato con successo un ordine di mercato OnStart(), il cBot scrive un ID di posizione nel file creato.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Parametro File
Il tipo di parametro File consente agli algoritmi di accettare input di file dagli utenti tramite API. Permette agli algoritmi di leggere e scrivere in modo sicuro da e verso un file selezionato dall'utente sulla macchina locale.
Quando definito in un algoritmo:
- Nell'interfaccia utente di cTrader, il parametro viene visualizzato come un campo di testo con un pulsante Sfoglia che apre una finestra di dialogo per la selezione dei file.
- In cTrader CLI, gli utenti possono passare direttamente un percorso di file come valore del parametro.
- L'algoritmo riceve un oggetto
Filefortemente tipizzato con metodi di lettura e scrittura integrati.
Nota
L'accesso ai file è limitato al file esplicitamente fornito dall'utente e non concede accesso illimitato al file system locale.
Il tipo di parametro File può essere utilizzato per eseguire le seguenti operazioni negli algoritmi:
| Operazione | Esempi |
|---|---|
| Input di dati esterni | Leggere file CSV o di testo, caricare set di dati personalizzati. |
| Output persistente | Scrivere log in un file, esportare risultati. |
| Gestione della configurazione | Caricare file di configurazione esterni, mantenere grandi set di parametri. |
Per definire un parametro file, dichiarare una proprietà di tipo File e annotarla con l'attributo [Parameter].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
DefaultValue opzionale può essere utilizzato per precompilare il parametro con un percorso di file, e il tipo File espone un set di metodi di alto livello per interagire con i contenuti del file. È possibile leggere l'intero file come testo o come singole righe.
1 2 | |
Le operazioni di scrittura sovrascrivono i contenuti esistenti del file.
1 | |
È possibile aggiungere testo o più righe senza sovrascrivere il contenuto esistente.
1 2 | |
Prima di eseguire operazioni, è possibile verificare se il file esiste.
1 2 3 4 | |
Riepilogo
La funzionalità di operazioni sui file nell'API consente comunque agli algoritmi con diritti di accesso limitati di lavorare con file e cartelle locali. È possibile utilizzare metodi dallo spazio dei nomi System.IO di C# per programmare il modo in cui gli algoritmi eseguiranno tali operazioni entro i confini della cartella corrispondente. Pertanto, le altre directory nel file system dell'utente rimangono completamente protette anche se il codice sorgente dell'algoritmo non è disponibile.

