انتقل إلى المحتوى

عمليات الملفات

يعبر مستخدمو المنصة عن مخاوف مبررة بشأن تشغيل cBots والمؤشرات مع AccessRights.FullAccess. هذا صحيح بشكل خاص عندما لا يتوفر كود المصدر، فمن الصعب معرفة التغييرات التي ستدخلها الخوارزمية على نظام الملفات بشكل مؤكد. في دليل حقوق الوصول، نصحنا بالفعل بأن cBots والمؤشرات التي تشاركها مع الآخرين يجب أن تتلقى AccessRights.None.

يشرح دليل واجهة برمجة التطبيقات هذا كيف يمكن للخوارزميات ذات AccessRights المحدودة إجراء عمليات آمنة مع الملفات المحلية.

عمليات الملفات في دقيقة واحدة!

  • تسمح ميزة عمليات الملفات للخوارزميات ذات حقوق الوصول المقيدة بالعمل مع الملفات والمجلدات فقط داخل مجلد مخصص.
  • يتوافق اسم المجلد مع اسم cBot أو المؤشر.
  • تظل جميع الدلائل الأخرى لنظام ملفات المستخدم محمية بشكل آمن من الوصول غير المصرح به.
  • في واجهة برمجة التطبيقات، يتم دعم ميزة عمليات الملفات فقط لخوارزميات .NET 6.0.

قواعد عمليات الملفات

يُسمح لأي خوارزمية ذات حقوق وصول مقيدة بإجراء عمليات الملفات فقط في مجلد مخصص في نظام ملفات المستخدم. يحدد كل نوع من الخوارزميات مجلده الخاص كما هو موضح أدناه (مثل cBots والمؤشرات)، مع إنشاء مجلد منفصل لكل اسم خوارزمية.

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

ملاحظة

تتوفر ميزة عمليات الملفات للخوارزميات .NET 6.0 فقط.

تحدد القواعد التالية كيفية عمل ميزة عمليات الملفات في واجهة برمجة التطبيقات:

1. لكل خوارزمية حق الوصول فقط إلى المجلد المقابل لاسمها (بما في ذلك المجلدات الفرعية، إن وجدت).

2. إذا لم يكن هناك مجلد مقابل، يتم إنشاء مثل هذا المجلد في نظام الملفات وفقًا للمخطط أعلاه عند تشغيل نسخة لأول مرة.

3. إذا تعذر إنشاء مجلد جديد، فلن يبدأ cBot أو المؤشر، وسيتم الإبلاغ عن خطأ.

4. في كود الخوارزمية، لا تحتاج إلى تحديد المسار الكامل للمجلد المقابل. بدلاً من ذلك، تستخدم الخوارزميات مسارًا نسبيًا.

5. يوفر مساحة الاسم System.IO مجموعة متنوعة من الفئات (File، FileInfo، Directory. DirectoryInfo، Path، إلخ.) التي يمكن استدعاء الطرق ذات الصلة لها لتنفيذ العمليات مع الملفات والمجلدات.

فيما يلي بعض الأمثلة على الطرق المضمنة في فئات File و Directory.

الطريقة الوصف
File.Create() ينشئ أو يعيد كتابة ملف في الدليل المحدد.
File.WriteAllText() ينشئ ملفًا جديدًا، ويكتب السلسلة المحددة في الملف ويغلق الملف.
File.Copy() ينسخ الملف الموجود إلى ملف جديد. لا يُسمح بإعادة كتابة ملف بنفس الاسم.
File.Delete() يحذف ملفًا في الدليل المحدد.
Directory.CreateDirectory() ينشئ مجلدًا أو مجلدًا فرعيًا.
Directory.Delete() يحذف مجلدًا أو مجلدًا فرعيًا.
Directory.Exists() يتحقق مما إذا كان الدليل المحدد موجودًا.
Directory.Move() ينقل الدليل الموجود إلى دليل جديد محدد.

حالة الاستخدام

عند استدعاء TakeChartshot() طريقة، لا تحتاج إلى تحديد المسار الكامل للدليل الوجهة بعد File.WriteAllBytes. نظرًا لميزة عمليات الملفات، سيتم حفظ chartshot في دليل الخوارزمية ذي الصلة حتى إذا كانت حقوق الوصول هي AccessRights.None.

إنشاء مثال cBot

مثال cBot أدناه لديه AccessRights.None، ولكنه ينشئ ملفًا نصيًا في المجلد المقابل المسمى "File Access Test" مباشرة بعد تهيئته. إذا تم وضع أمر سوق ناجح OnStart()، يكتب cBot معرف المركز في الملف الذي تم إنشاؤه.

 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

الملخص

لا تزال ميزة عمليات الملفات في واجهة برمجة التطبيقات تمكن الخوارزميات ذات حقوق الوصول المقيدة من العمل مع الملفات والمجلدات المحلية. يمكنك استخدام طرق من مساحة الاسم System.IO في C# لبرمجة كيفية تنفيذ الخوارزميات لمثل هذه العمليات ضمن حدود المجلد المقابل. وبالتالي، تظل الدلائل الأخرى في نظام ملفات المستخدم محمية بالكامل حتى إذا كان كود المصدر للخوارزمية غير متاح.