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

محول العملات

في التداول الخوارزمي، يعد منح خوارزميات cBot والمؤشرات القدرة على تحويل العملات تلقائيًا باستخدام أسعار السوق الحالية أمرًا ضروريًا. في دليل واجهة برمجة التطبيقات (API) هذا، نغطي كيفية تنفيذ هذه الميزة في cTrader.

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

  • تقوم طرق Convert (double value, Asset from, Asset to و Convert(double value, string from, string to)) بإرجاع معدل التحويل الدقيق بين الأصول المحددة أو الأصول ذات الأسماء المحددة. يمكن الوصول إليها عبر خاصية AssetConverter الجديدة في فئة Algo.
  • تتضمن فئة Asset طرق Convert(Asset to, double value) و Convert(string to, double value) الخاصة بها والتي يمكن استدعاؤها بسهولة من أي كائن Asset.
  • عند إجراء الاختبار العكسي، سيستخدم cTrader تلقائيًا معدلات التحويل التاريخية. هذا يعني أنه يمكنك دائمًا توقع نتائج دقيقة تاريخيًا وتقييم أداء خوارزميات cBot الخاصة بك بشكل كامل.

كيف يعمل تحويل العملات

تحتوي واجهة IAssetConverter في مساحة الاسم cAlgo.API.Internals على طريقة Convert() التي لها التحميلات الزائدة التالية:

  • double Convert(double value, Asset from, Asset to) - تحول القيمة المحددة من الأصل from إلى الأصل to.
  • double Convert(double value, string from, string to) - تحول القيمة المحددة من الأصل الذي يطابق اسمه السلسلة from إلى الأصل الذي يطابق اسمه السلسلة to.

تتضمن فئة Algo الآن خاصية AssetConverter من النوع IAssetConverter. يمكنك الوصول إلى الطريقتين أعلاه عن طريق كتابة ما يلي.

1
AssetConverter.Convert(double value, Asset from, Asset to)

تحتوي فئة Asset أيضًا على طرق Convert() الخاصة بها مع التحميلات الزائدة التالية:

  • double Convert(Asset to, double value) - تحول القيمة المحددة من الأصل الذي تم استدعاء هذه الطريقة منه إلى الأصل to.
  • double Convert(string to, double value) - تحول القيمة المحددة من الأصل الذي تم استدعاء هذه الطريقة منه إلى الأصل الذي يطابق اسمه السلسلة to.

انظر إلى المثال أدناه حيث تقوم خوارزمية 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
30
31
32
33
34
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;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class SampleConversionTestBot : Robot
    {
        [Parameter(DefaultValue = "Hello world!")]
        public string Message { get; set; }

        protected override void OnStart()
        {

            Asset baseAssetForNewOrder = Assets.GetAsset("GBP");

            Asset quoteAssetForNewOrder = Assets.GetAsset("JPY");

            double newOrderVolume = baseAssetForNewOrder.Convert(quoteAssetForNewOrder, 1000.00);

            ExecuteMarketOrder(TradeType.Buy, SymbolName, newOrderVolume);

            Print($"New order has been executed with {newOrderVolume} as its volume");
        }


    }
}

إذا ألقينا نظرة على السجل، يمكننا أن نرى أن خوارزمية cBot الخاصة بنا تتصرف كما هو متوقع. في الوقت الذي تم فيه بدء المثيل، كان سعر العرض لـ GBPJPY يساوي 159.619.

تحويل العملات في الاختبار العكسي

يدعم cTrader بشكل كامل معدلات التحويل التاريخية في الاختبار العكسي.

هذا يعني أنه عند إجراء اختبار عكسي لخوارزمية cBot تستخدم أيًا من الطرق الموضحة أعلاه، سيتم إجراء حسابات التحويل باستخدام بيانات دقيقة تاريخيًا بدلاً من أسعار الصرف الحالية بين الأصول المحددة. تضمن هذه الميزة أن تكون نتائج الاختبار العكسي والتحسين دقيقة قدر الإمكان نظرًا لظروف السوق السابقة.

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

باختصار، تشكل أسعار التحويل أداة قيمة أخرى للتأكد من أن خوارزميات cBot والمؤشرات الخاصة بك تعمل تمامًا كما هو متوقع. نظرًا لأن cTrader يدعم استخدام البيانات التاريخية عند تحويل الأصول في الاختبار العكسي، يمكنك التأكد من أن جميع نتائج الاختبار العكسي والتحسين دقيقة تاريخيًا.