Lewati ke isi

Operasi file

Pengguna platform mengungkapkan kekhawatiran yang beralasan tentang meluncurkan cBot dan indikator dengan AccessRights.FullAccess. Ini terutama benar ketika tidak ada kode sumber yang tersedia, sulit untuk mengetahui dengan pasti perubahan apa yang akan diperkenalkan oleh algoritma ke sistem file. Dalam panduan hak akses, kami telah menyarankan bahwa cBot dan indikator yang Anda bagikan dengan orang lain harus menerima AccessRights.None.

Panduan API ini menjelaskan bagaimana algoritma dengan AccessRights terbatas dapat melakukan operasi dengan file lokal secara aman.

Operasi file dalam satu menit!

  • Fitur operasi file memungkinkan algoritma dengan hak akses terbatas untuk bekerja dengan file dan folder hanya di dalam folder yang ditentukan.
  • Nama folder sesuai dengan nama cBot atau indikator.
  • Semua direktori lain dari sistem file pengguna tetap terlindungi secara aman dari akses yang tidak sah.
  • Dalam API, fitur operasi file hanya didukung untuk algoritma .NET 6.0.

Aturan operasi berkas

Setiap algoritma dengan hak akses terbatas diizinkan untuk melakukan operasi berkas hanya di folder yang ditentukan dalam sistem berkas pengguna. Setiap jenis algoritma menempatkan foldernya sendiri seperti yang ditunjukkan di bawah ini (seperti cBot dan indikator), dengan folder terpisah yang dibuat untuk setiap nama algoritma.

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

Catatan

Fitur operasi berkas hanya tersedia untuk algoritma .NET 6.0.

Aturan berikut menentukan bagaimana fitur operasi berkas berfungsi dalam API:

1. Setiap algoritma hanya memiliki akses ke folder yang sesuai dengan namanya (termasuk subfolder, jika ada).

2. Jika tidak ada folder yang sesuai, folder tersebut dibuat dalam sistem berkas sesuai dengan skema di atas ketika sebuah instansi pertama kali diluncurkan.

3. Jika folder baru tidak dapat dibuat, cBot atau indikator tidak akan dimulai, dan kesalahan akan dilaporkan.

4. Dalam kode algoritma, Anda tidak perlu menentukan jalur lengkap ke folder yang sesuai. Sebaliknya, algoritma menggunakan jalur relatif.

5. Namespace System.IO menawarkan berbagai kelas (File, FileInfo, Directory. DirectoryInfo, Path, dll.) yang metode relevannya dapat dipanggil untuk menjalankan operasi dengan berkas dan folder.

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

Metode Deskripsi
File.Create() Membuat atau menimpa berkas di direktori yang ditentukan.
File.WriteAllText() Membuat berkas baru, menulis string yang ditentukan ke berkas dan menutup berkas.
File.Copy() Menyalin berkas yang ada ke berkas baru. Menimpa berkas dengan nama yang sama tidak diizinkan.
File.Delete() Menghapus berkas di direktori yang ditentukan.
Directory.CreateDirectory() Membuat folder atau subfolder.
Directory.Delete() Menghapus folder atau subfolder.
Directory.Exists() Memeriksa apakah direktori yang ditentukan ada.
Directory.Move() Memindahkan direktori yang ada ke direktori baru yang ditentukan.

Kasus penggunaan

Saat memanggil TakeChartshot() metode, tidak perlu menentukan jalur lengkap direktori tujuan setelah File.WriteAllBytes. Karena karakteristik operasi file, tangkapan layar grafik akan disimpan di direktori yang terkait dengan algoritma bahkan jika hak akses adalah AccessRights.None.

Contoh membuat cBot

Contoh cBot di bawah ini memiliki AccessRights.None, tetapi ia membuat berkas teks di folder yang sesuai bernama "File Access Test" segera setelah inisialisasi. Jika order pasar berhasil ditempatkan OnStart(), cBot menulis ID posisi dalam berkas yang dibuat.

 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

Fitur operasi berkas dalam API masih memungkinkan algoritma dengan hak akses terbatas untuk bekerja dengan berkas dan folder lokal. Anda dapat menggunakan metode dari namespace System.IO C# untuk memprogram bagaimana algoritma akan melakukan operasi tersebut dalam batasan folder yang sesuai. Dengan demikian, direktori lain dalam sistem berkas pengguna tetap sepenuhnya terlindungi bahkan jika kode sumber algoritma tidak tersedia.