Langkau tajuk talian

Operasi fail

Pengguna platform menyuarakan kebimbangan yang wajar tentang melancarkan cBot dan indikator dengan AccessRights.FullAccess. Ini terutamanya benar apabila tiada kod sumber tersedia, sukar untuk mengetahui dengan pasti perubahan apa yang akan diperkenalkan oleh algoritma kepada sistem fail. Dalam panduan hak akses, kami telah menasihatkan bahawa cBot dan indikator yang anda kongsi dengan orang lain harus menerima AccessRights.None.

Panduan API ini menerangkan bagaimana algoritma dengan AccessRights terhad boleh menjalankan operasi dengan fail tempatan secara selamat.

Operasi fail dalam satu minit!

  • Ciri operasi fail membolehkan algoritma dengan hak akses terhad untuk bekerja dengan fail dan folder hanya di dalam folder yang ditetapkan.
  • Nama folder sepadan dengan nama cBot atau indikator.
  • Semua direktori lain dalam sistem fail pengguna kekal dilindungi secara selamat daripada akses tanpa kebenaran.
  • Dalam API, ciri operasi fail hanya disokong untuk algoritma .NET 6.0.

Peraturan operasi fail

Mana-mana algoritma dengan hak akses terhad dibenarkan untuk melakukan operasi fail hanya dalam folder yang ditetapkan dalam sistem fail pengguna. Setiap jenis algoritma mencari foldernya sendiri seperti yang ditunjukkan di bawah (seperti cBot dan indikator), dengan folder berasingan dicipta untuk setiap nama algoritma.

Documents
|-cAlgo
  |-Data
    |-cBots
      |-${cBot Name}
    |-Indicators
      |-${Indicator Name}

Nota

Ciri operasi fail hanya tersedia untuk algoritma .NET 6.0 sahaja.

Peraturan berikut menentukan bagaimana ciri operasi fail berfungsi dalam API:

1. Setiap algoritma hanya mempunyai akses kepada folder yang sepadan dengan namanya (termasuk subfolder, jika ada).

2. Jika tiada folder yang sepadan, folder sedemikian dicipta dalam sistem fail mengikut skema di atas apabila contoh pertama kali dilancarkan.

3. Jika folder baharu tidak dapat dicipta, cBot atau indikator tidak akan bermula, dan ralat akan dilaporkan.

4. Dalam kod algoritma, anda tidak perlu menentukan laluan penuh ke folder yang sepadan. Sebaliknya, algoritma menggunakan laluan relatif.

5. Ruang nama System.IO menawarkan pelbagai kelas (File, FileInfo, Directory. DirectoryInfo, Path, dll.) di mana kaedah yang berkaitan boleh dipanggil untuk melaksanakan operasi dengan fail dan folder.

Di bawah adalah beberapa contoh kaedah yang termasuk dalam kelas File dan Directory.

Kaedah Penerangan
File.Create() Mencipta atau menulis ganti fail dalam direktori yang ditetapkan.
File.WriteAllText() Mencipta fail baharu, menulis rentetan yang ditentukan ke dalam fail dan menutup fail.
File.Copy() Menyalin fail sedia ada ke fail baharu. Menulis ganti fail dengan nama yang sama tidak dibenarkan.
File.Delete() Memadam fail dalam direktori yang ditetapkan.
Directory.CreateDirectory() Mencipta folder atau subfolder.
Directory.Delete() Memadam folder atau subfolder.
Directory.Exists() Memeriksa sama ada direktori yang ditentukan wujud.
Directory.Move() Memindahkan direktori sedia ada ke direktori baharu yang ditentukan.

Kes penggunaan

Apabila memanggil kaedah TakeChartshot(), anda tidak perlu menentukan laluan penuh direktori simpanan selepas File.WriteAllBytes. Disebabkan sifat operasi fail, tangkapan skrin carta akan disimpan dalam direktori yang berkaitan dengan algoritma walaupun dengan hak akses AccessRights.None.

Cipta contoh cBot

Contoh cBot di bawah mempunyai AccessRights.None, tetapi ia mencipta fail teks dalam folder yang sepadan bernama "File Access Test" serta-merta selepas pengawalannya. Jika pesanan pasaran yang berjaya diletakkan OnStart(), cBot menulis ID posisi dalam fail yang dicipta.

 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using System.IO;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class MycBot : Robot
    {
        protected override void OnStart()
        {
            TradeResult result = ExecuteMarketOrder(TradeType.Buy, SymbolName, 1000);

            if (result.IsSuccessful)
            {
                string positionId = result.Position.Id.ToString();
                {
                    File.WriteAllText("My positions.txt", $"{positionId}");
                } 
            }
        }
    }
}

Created File

Written Position ID

Ringkasan

Ciri operasi fail dalam API masih membolehkan algoritma dengan hak akses terhad untuk bekerja dengan fail dan folder tempatan. Anda boleh menggunakan kaedah daripada ruang nama System.IO C# untuk mengaturcarakan bagaimana algoritma akan melaksanakan operasi sedemikian dalam lingkungan folder yang sepadan. Oleh itu, direktori lain dalam sistem fail pengguna kekal dilindungi sepenuhnya walaupun jika kod sumber algoritma tidak tersedia.