Bỏ qua

Thao tác với tệp

Người dùng nền tảng bày tỏ lo ngại chính đáng về việc khởi chạy cBot và chỉ báo với AccessRights.FullAccess. Điều này đặc biệt đúng khi không có mã nguồn, khó có thể biết chắc chắn những thay đổi nào sẽ được thuật toán đưa vào hệ thống tệp. Trong hướng dẫn về quyền truy cập, chúng tôi đã khuyên rằng cBot và chỉ báo mà bạn đang chia sẻ với người khác nên nhận AccessRights.None.

Hướng dẫn API này giải thích cách các thuật toán với AccessRights hạn chế có thể thực hiện các thao tác với tệp cục bộ một cách an toàn.

Thao tác với tệp trong một phút!

  • Tính năng thao tác với tệp cho phép các thuật toán có quyền truy cập hạn chế làm việc với tệp và thư mục chỉ trong một thư mục được chỉ định.
  • Tên thư mục tương ứng với tên cBot hoặc chỉ báo.
  • Tất cả các thư mục khác của hệ thống tệp của người dùng vẫn được bảo vệ an toàn khỏi truy cập trái phép.
  • Trong API, tính năng thao tác với tệp chỉ được hỗ trợ cho các thuật toán .NET 6.0.

Quy tắc thao tác với tệp

Bất kỳ thuật toán nào có quyền truy cập hạn chế đều được phép thực hiện các thao tác với tệp chỉ trong một thư mục được chỉ định của hệ thống tệp của người dùng. Mỗi loại thuật toán định vị thư mục riêng của nó như được hiển thị bên dưới (chẳng hạn như cBot và chỉ báo), với một thư mục riêng biệt được tạo cho mỗi tên thuật toán.

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

Ghi chú

Tính năng thao tác với tệp chỉ khả dụng cho các thuật toán .NET 6.0.

Các quy tắc sau xác định cách tính năng thao tác với tệp hoạt động trong API:

1. Mỗi thuật toán chỉ có quyền truy cập vào thư mục tương ứng với tên của nó (bao gồm cả thư mục con, nếu có).

2. Nếu không có thư mục tương ứng, một thư mục như vậy sẽ được tạo trong hệ thống tệp theo sơ đồ trên khi một phiên bản được khởi chạy lần đầu tiên.

3. Nếu không thể tạo thư mục mới, cBot hoặc chỉ báo sẽ không khởi động và một lỗi sẽ được báo cáo.

4. Trong mã thuật toán, bạn không cần chỉ định đường dẫn đầy đủ đến thư mục tương ứng. Thay vào đó, các thuật toán sử dụng đường dẫn tương đối.

5. Không gian tên System.IO cung cấp nhiều lớp (File, FileInfo, Directory. DirectoryInfo, Path, v.v.) mà các phương thức liên quan có thể được gọi để thực hiện các thao tác với tệp và thư mục.

Dưới đây là một số ví dụ về các phương thức được bao gồm trong các lớ

Phương thức Mô tả
File.Create() Tạo hoặc ghi đè một tệp trong thư mục được chỉ định.
File.WriteAllText() Tạo một tệp mới, ghi chuỗi được chỉ định vào tệp và đóng tệp.
File.Copy() Sao chép tệp hiện có sang một tệp mới. Không được phép ghi đè một tệp có cùng tên.
File.Delete() Xóa một tệp trong thư mục được chỉ định.
Directory.CreateDirectory() Tạo một thư mục hoặc thư mục con.
Directory.Delete() Xóa một thư mục hoặc thư mục con.
Directory.Exists() Kiểm tra xem thư mục được chỉ định có tồn tại hay không.
Directory.Move() Di chuyển thư mục hiện có đến một thư mục mới được chỉ định.

Trường hợp sử dụng

Khi gọi phương thức TakeChartshot(), không cần phải chỉ định đường dẫn đầy đủ của thư mục để lưu sau File.WriteAllBytes do bản chất của thao tác tệp. Ảnh chụp màn hình biểu đồ sẽ được lưu trong thư mục liên quan đến thuật toán, ngay cả khi có AccessRights.None.

Tạo ví dụ cBot

Ví dụ cBot dưới đây có AccessRights.None, nhưng nó tạo một tệp văn bản trong thư mục tương ứng có tên "File Access Test" ngay sau khi khởi tạo. Nếu một lệnh thị trường thành công được đặt OnStart(), cBot sẽ ghi ID vị thế vào tệp đã tạo.

 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

Tổng quan

Tính năng thao tác tệp trong API vẫn cho phép các thuật toán với quyền truy cập hạn chế làm việc với các tệp và thư mục cục bộ. Bạn có thể sử dụng các phương thức từ không gian tên System.IO của C# để lập trình cách thuật toán sẽ thực hiện các thao tác như vậy trong phạm vi của thư mục tương ứng. Do đó, các thư mục khác trong hệ thống tệp của người dùng vẫn được bảo vệ hoàn toàn ngay cả khi mã nguồn thuật toán không khả dụng.