ข้ามไปที่เนื้อหา

การจัดการอินดิเคเตอร์ทางเทคนิคด้วยโปรแกรม

นักเทรดมักพึ่งพาการผสมผสานระหว่างการเทรดด้วยตนเองและตัวช่วยการเทรดอัตโนมัติ โดยเฉพาะอย่างยิ่งอินดิเคเตอร์ที่กำหนดเอง อย่างไรก็ตาม ในหลายกรณี ตัวช่วยเหล่านี้ไม่รู้จักกันและกันอย่างสิ้นเชิงและไม่สามารถตอบสนองต่อการกระทำและผลลัพธ์ของกันและกันได้

โชคดีที่ cTrader มีวิธีที่สะดวกในการจัดการอินดิเคเตอร์บนกราฟด้วยโปรแกรม การใช้ฟีเจอร์นี้ คุณสามารถสร้างผู้ช่วยแบบไดนามิกที่อ่านข้อมูลจากอินดิเคเตอร์ที่ผู้ใช้เพิ่มลงในกราฟ

คุณยังสามารถทำให้ Algo เพิ่ม ลบ หรือเปลี่ยนการตั้งค่าอินดิเคเตอร์ตามเงื่อนไขบางอย่าง ช่วยให้คุณสามารถเพิ่มมูลค่าให้กับผู้ใช้และเปิดโอกาสใหม่ๆ ในการสร้างรายได้

คู่มือ API นี้อธิบายวิธีการจัดการอินดิเคเตอร์บนกราฟด้วยโปรแกรมในสถานการณ์ต่างๆ

การจัดการอินดิเคเตอร์บนกราฟในหนึ่งนาที!

  • การจัดการอินดิเคเตอร์บนกราฟด้วยโปรแกรม คุณสามารถปรับการตั้งค่าอินดิเคเตอร์ (เช่น ความหนาของเส้น) ขึ้นอยู่กับเงื่อนไขบางอย่าง
  • cBot สามารถเข้าถึงอินดิเคเตอร์ใดๆ ที่คุณเพิ่มลงในกราฟด้วยตนเอง อ่านข้อมูล และเทรดตามนั้น
  • Algo ของคุณสามารถเพิ่มอินดิเคเตอร์ลงในหรือลบออกจากกราฟโดยอัตโนมัติ ช่วยประหยัดเวลาของคุณ
  • การจัดการอินดิเคเตอร์บนกราฟด้วยโปรแกรมสามารถทำได้สำหรับอินดิเคเตอร์ที่กำหนดเองทั้งหมด

เพิ่มและลบอินดิเคเตอร์ด้วยโปรแกรม

คุณสามารถเพิ่มอินดิเคเตอร์ใดๆ ที่คุณมีสิทธิ์เข้าถึงได้อย่างง่ายดายโดยเรียกใช้เมธอดต่อไปนี้

1
ChartIndicator ChartIndicators.Add(string name, params object[] parameterValues)

เมธอดนี้รับชื่ออินดิเคเตอร์เป็นพารามิเตอร์แรก จากนั้นรับพารามิเตอร์ทั้งหมดของอินดิเคเตอร์นั้นตามลำดับ (เช่น "Simple Moving Average", "High", 25)

หมายเหตุ

เมธอดนี้จะยอมรับชื่อของอินดิเคเตอร์ใดๆ ที่คุณมีสิทธิ์เข้าถึง

หมายเหตุ

พารามิเตอร์ DataSeries ใดๆ จะต้องระบุเป็นสตริงในอาร์กิวเมนต์ของเมธอด

หมายเหตุ

หากไม่ได้ระบุพารามิเตอร์บางตัว เมธอดจะใช้ค่าเริ่มต้น หากพารามิเตอร์บางตัวไม่ถูกต้อง เมธอดจะเรียกใช้ตัวจัดการ OnExceptionสำหรับ Algo ของคุณ

หลังจากที่เมธอดถูกดำเนินการ อินดิเคเตอร์ที่ร้องขอจะถูกเพิ่มลงในกราฟทันที และคุณจะสามารถจัดการได้โดยใช้ค่าที่ส่งคืนโดยเมธอด ตัวอย่างเช่น คุณสามารถลบออกโดยเรียกใช้เมธอด ChartIndicators.Remove()

1
2
3
var newIndicator = ChartIndicators.Add("Simple Moving Average", "High", 25);
...
ChartIndicators.Remove(newIndicator);

นี่คือ cBot อย่างง่ายที่ใช้ทั้งสองเมธอดเพื่อเพิ่มอินดิเคเตอร์ Bollinger Bands ที่กำหนดเองลงในกราฟเมื่อใดก็ตามที่ค่า Average True Range (ATR) ข้ามเกณฑ์ที่กำหนด หากค่า ATR ลดลงต่ำกว่าเกณฑ์ อินดิเคเตอร์จะถูกลบออก

 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
35
36
37
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 ChartIndicatorsTest : Robot
    {

        private AverageTrueRange _aTR;
        private ChartIndicator _customBollingerBands;

        protected override void OnStart()
        {
            _aTR = Indicators.AverageTrueRange(14, MovingAverageType.Exponential);
            ChartIndicators.Add("Average True Range");
        }

        protected override void OnBar()
        {
            if (_aTR.Result[Bars.Count - 1] >= 0.0002) 
            {
                _bollingerBands = ChartIndicators.Add("Custom BB");
            } else if (_bollingerBands != null)
            {
                ChartIndicators.Remove(_bollingerBands);
            }
        }

    }
}

แก้ไขการตั้งค่าของอินดิเคเตอร์

อินเทอร์เฟซ ChartIndicator ให้การเข้าถึงโดยตรงไปยังการตั้งค่าหลักทั้งหมดของอินดิเคเตอร์ผ่านคุณสมบัติต่อไปนี้:

  • ChartIndicator.Type ซึ่งรับประเภทของอินดิเคเตอร์
  • ChartIndicator.Parameters ซึ่งรับรายการพารามิเตอร์ทั้งหมดของอินดิเคเตอร์
  • Lines ซึ่งรับรายการเส้นทั้งหมดที่แสดงผลโดยอินดิเคเตอร์

เนื่องจากอินดิเคเตอร์เป็นเครื่องมือช่วยในการมองเห็น คุณสามารถเพิ่มประสิทธิภาพโดยการแก้ไขการตั้งค่าขึ้นอยู่กับสภาวะตลาด อินดิเคเตอร์ต่อไปนี้พยายามทำเช่นนั้น

 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
35
36
37
38
39
40
41
42
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
{
    [Indicator(AccessRights = AccessRights.None, IsOverlay = true)]
    public class ColourMovingAverage : Indicator
    {

        private MovingAverage _fastMA;
        private ChartIndicator _chartMA;
        private const int __lineThickness = 4;


        protected override void Initialize()
        {
            _fastMA = Indicators.MovingAverage(Bars.OpenPrices, 10, MovingAverageType.Exponential);
            _chartMA = ChartIndicators.Add("Exponential Moving Average", "Open", 10);
        }

        public override void Calculate(int index)
        {
            var line = _chartMA.Lines[0];

            if (Symbol.Bid > _fastMA.Result[index]) 
            {
                line.Color = Color.Green;
                line.Thickness = __lineThickness;
            } else 
            {
                line.Color = Color.Red;
                line.Thickness = __lineThickness;
            }
        }
    }
}

ขึ้นอยู่กับว่าราคาปัจจุบันของสัญลักษณ์อยู่เหนือหรือต่ำกว่าค่าเฉลี่ยเคลื่อนที่แบบเอ็กซ์โพเนนเชียล เส้นอินดิเคเตอร์จะเปลี่ยนสีและความหนา ในบางกรณี (เช่น การตอบสนองอย่างรวดเร็วต่อแนวโน้มที่เปลี่ยนแปลง) การช่วยเหลือด้านภาพเพิ่มเติมสามารถสร้างความแตกต่างได้ทั้งหมด

จัดการเหตุการณ์เพิ่มเติม

อินเทอร์เฟซ ChartsIndicators ยังเปิดเผยเหตุการณ์หลายอย่างที่คุณสามารถจัดการเพื่อจัดการอินดิเคเตอร์กราฟแบบโปรแกรม:

  • IndicatorAdded ซึ่งจะทริกเกอร์ทุกครั้งที่มีการเพิ่มอินดิเคเตอร์ใหม่ลงในกราฟ
  • IndicatorRemoved ซึ่งจะทริกเกอร์ทุกครั้งที่มีการลบอินดิเคเตอร์ออกจากกราฟ
  • IndicatorModified ซึ่งจะทริกเกอร์ทุกครั้งที่มีการปรับการตั้งค่าของอินดิเคเตอร์

เหตุการณ์เหล่านี้มีประโยชน์สำหรับนักพัฒนาปลั๊กอิน ผ่านปลั๊กอิน คุณสามารถสร้างองค์ประกอบใหม่ของ UI ของ cTrader ที่เปลี่ยนเนื้อหาขึ้นอยู่กับว่าผู้ใช้เพิ่ม ลบ หรือแก้ไขอินดิเคเตอร์หรือไม่

การจัดการอินดิเคเตอร์ในโหมดต่างๆ

นี่คือวิธีที่การจัดการอินดิเคเตอร์ทำงานในโหมดและเครื่องมือต่างๆ ของ cTrader

โหมด/เครื่องมือ วิธีการทำงาน
การ backtesting แบบไม่มีภาพ อินดิเคเตอร์ทั้งหมดที่เพิ่มผ่าน ChartIndicators จะแสดงบนกราฟเมื่อ backtesting เสร็จสิ้น
การ backtesting แบบมีภาพและ Market Replay ทุกอย่างทำงานแบบเรียลไทม์ตามที่ตั้งใจไว้
การเพิ่มประสิทธิภาพ การทำงานทั้งหมดจะทำงานแต่จะไม่มีการเปลี่ยนแปลงใดๆ กับกราฟเมื่อ backtesting เสร็จสิ้น
cTrader CLI การทำงานทั้งหมดทำงานตามที่ตั้งใจไว้ แต่ไม่มีการเปลี่ยนแปลงใดๆ กับกราฟใดๆ

การจัดการอินดิเคเตอร์กราฟแบบโปรแกรมเป็นสิ่งที่เหมาะสำหรับนักพัฒนาที่ต้องการนำเสนอ algo ที่เพิ่มประสิทธิภาพหรือทำให้การทำงานกับอินดิเคเตอร์ง่ายขึ้น ด้วยการใช้ประโยชน์จากฟีเจอร์นี้ คุณสามารถส่งมอบผลิตภัณฑ์ที่มีคุณภาพสูงและมีคุณค่าให้กับผู้ใช้ของคุณได้

Image title