تبدیل برخی از اندیکاتورها در قالب BSB Pro

BSB Pro برخی از ویژگی های جدید را برای کار با چندین استراتژی فراهم می کند به طوریکه مواردی از قبیل بارگیری همزمان داده های مختلف، استفاده از نمادها و دوره های گوناگون برای یک اندیکاتور را نیز شامل می شود. این ویژگی های جدید، نیاز به تغییرات جزئی در قالب اندیکاتورها دارند . ما مجموعه ای از اصلاحات را روی نرم افزاز رایگان BSB پیاده سازی کرده ایم تا بتوانیم براحتی از قالب جدید استفاده کنیم.

ما با استفاده از نرم افزار بورس اس بی ورژن ۲.۸۱، قالب جدید را توضیح می دهیم به طوریکه نحوه ی شرح این موضوع را از طریق مقایسه و تبدیل اندیکاتور Footons’s Adaptive MACD با MACD های از قبل تبدیل شده انجام می دهیم.

در این آموزش از ++ Notepad برای ویرایش اندیکاتورها، استفاده می کنیم.

کد منبع Adaptive MACD را می توانید از این انجمن پیدا کنید : 🌍 تبدیل اندیکاتور به قالب جدید.

NameSpace یا فضای نام جدید

BSB Pro از سه فضای نام جدید استفاده می کند :


using BourseStrategyBuilder.Infrastructure.Entities;
using BourseStrategyBuilder.Infrastructure.Enums;
using BourseStrategyBuilder.Infrastructure.Interfaces;

 

همچنین اندیکاتورها در فضای نام BourseStrategyBuilder.Indicators.Store تعریف می شوند.

تبدیل برخی از اندیکاتورها در قالب BSB Pro

 

کد قدیمی :


using System;
using System.Drawing;
namespace Bourse_Strategy_Builder

کد جدید :


using System;
using System.Drawing;
using BourseStrategyBuilder.Infrastructure.Entities;
using BourseStrategyBuilder.Infrastructure.Enums;
using BourseStrategyBuilder.Infrastructure.Interfaces;
namespace BourseStrategyBuilder.Indicators.Store

مقدار دهی اولیه یا initialization

اندیکاتورهای جدید از کانستراکتور یا سازنده های بدون پارامتر استفاده می کنند و حرکات خود را بر مبنای مقداردهی اولیه هماهنگ می کنند. این فرآیند به برنامه اجازه می دهد تا یک نمونه از اندیکاتور را خلق کند تا بعداً بتواند نوع اسلات (slot) آن ها را نیز تنظیم کند.

  1. ما کانستراکتورهای بدون پارامتر را ایجاد و یا copy/paste می کنیم.
  2. مقادیر اولیه را از کانستراکتورهای قدیمی به کانستراکتورهای بدون پارامتر منتقل کنید.
  3. روش های مقداردهی اولیه را با استفاده از کانستراکتورهای قدیمی شکل دهید.
  4. مقدار اولیه ی IndParam را حذف کنید. کلاس IndParam بر مبنای کلاس اندیکاتور ایجاد می شود. SlotType و IndicatorName نیز در کلاس پایه تنظیم شده اند.
  5. افزودن مقدار اولیه SlotType : به صورت SlotType = slotType
  6. CheckParam [0].Checked = PrepareUsePrevBarValueCheckBox(slotType) را حذف کنید. BSB Pro در مقداردهی اولیه نمی تواند چک باکس PrevBar را تنظیم کند. این کار را در زمان محاسبات مربوط به اندیکاتور انجام می دهد.

ما نیازی به تنظیم CustomIndicator =true؛ در اندیکاتورهای مرسوم را نداریم. BSB خود، هنگام بارگیری اندیکاتور، آن را تنظیم می کند.

تبدیل برخی از اندیکاتورها در قالب BSB Pro

 

تبدیل برخی از اندیکاتورها در قالب BSB Pro

 

کد قدیمی :


public class MACD : Indicator
{
public MACD(SlotTypes slotType)
{
// General properties
IndicatorName = "Adaptable MACD";
PossibleSlots = SlotTypes.OpenFilter | SlotTypes.CloseFilter;
SeparatedChart = true;
CustomIndicator = true;
// Setting up the indicator parameters
IndParam = new IndicatorParam();
IndParam.IndicatorName = IndicatorName;
IndParam.SlotType = slotType;
// The ComboBox parameters
IndParam.ListParam[0].Caption = "Logic";
IndParam.ListParam[0].ItemList = new string[]

کد جدید :


public class MACD : Indicator
{
public MACD()
{
IndicatorName = "Adaptable MACD";
PossibleSlots = SlotTypes.OpenFilter | SlotTypes.CloseFilter;
SeparatedChart = true;
}
public override void Initialize(SlotTypes slotType)
{
SlotType = slotType;
// The ComboBox parameters
IndParam.ListParam[0].Caption = "Logic";
IndParam.ListParam[0].ItemList = new string[]

روش محاسبه

ما روش محاسبه ی خود را بر مبنای DataSet قرار می دهیم. DataSet فرآیند تست داده ها را در BSB Pro حفظ و مدیریت می کند، و باعث می شود داده های مختلفی به هر اندیکاتور تعلق گیرد. در حقیقت DataSet در نرم افزار رایگان BSB استفاده نمی شود، اما ما باید تنظیماتی را روی آن پیاده کنیم تا بتوانیم سازگاری های بیشتری را در BSB Pro شاهد باشیم. از آنجا که ما آن را روی مقدار اولیه و حالت آماده به کار قرار می دهیم بنابراین نیازی به تنظیم SlotTypes، جهت ارائه ی روش محاسباتی مناسب، نداریم.

در روش محاسباتی کدها، ما باید slotType را به SlotType تغییر نام دهیم زیرا slotType ( با s کوچک) آنچنان قابل استفاده نیست. در محاسبات معمولاً از ویژگی های پایه ای SlotType استفاده می شود.

تبدیل برخی از اندیکاتورها در قالب BSB Pro

 

کد قدیمی :


public override void Calculate(SlotTypes slotType)
{
// Reading the parameters
MAMethod shortmaMethod = (MAMethod )IndParam.ListParam[1].Index;
MAMethod longmaMethod = (MAMethod )IndParam.ListParam[4].Index;

کد جدید :

public override void Calculate(IDataSet dataSet)
{
DataSet = dataSet;
// Reading the parameters
MAMethod shortmaMethod = (MAMethod )IndParam.ListParam[1].Index;
MAMethod longmaMethod = (MAMethod )IndParam.ListParam[4].Index;

روش SetDescription

SetDescription دیگر به پارامتر slotType نیازی ندارد زیرا در کلاس پایه ذخیره شده است. ما پارامتر slotType را از اعلان های خود حذف می کنیم.

تبدیل برخی از اندیکاتورها در قالب BSB Pro

کد قدیمی :


///
/// Sets the indicator logic description
///
public override void SetDescription(SlotTypes slotType)
{
EntryFilterLongDescription = ToString() + "; the MACD line ";
EntryFilterShortDescription = ToString() + "; the MACD line ";

کد جدید:


///
/// Sets the indicator logic description
///
public override void SetDescription()
{
EntryFilterLongDescription = ToString() + "; the MACD line ";
EntryFilterShortDescription = ToString() + "; the MACD line ";

شمارش DataPeriod

DataPeriod تغییر کرده است. شمارش جدید در فضای نام BourseStrategyBuilder.Infrastructure.Enums انجام می شود و در آخر جایگزین DataPeriod قدیمی می شود.

این تغییر بر اندیکاتور Adaptive MACD تأثیر نمی گذارد.


namespace BourseStrategyBuilder.Infrastructure.Enums
{
public enum DataPeriod
{
M1 = 1,
M5 = 5,
M15 = 15,
M30 = 30,
H1 = 60,
H4 = 240,
D1 = 1440,
W1 = 10080
}
}

درباره ی M23admin

یک پاسخ ارسال نمایید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *