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

Breakout cBot

ภาพรวมกลยุทธ์

Breakout cBot ใช้ประโยชน์จากช่วงเวลาที่ราคาสัญลักษณ์เคลื่อนที่เกินระดับแนวรับหรือแนวต้านที่กำหนดไว้ล่วงหน้า

cBot นี้ตรวจสอบการรวมตัวของราคาโดยการเปรียบเทียบระยะห่างระหว่างแถบบนและล่างของ Bollinger Bands กับเกณฑ์ที่ผู้ใช้กำหนด แล้วทำสิ่งต่อไปนี้:

  • หากราคาสัญลักษณ์ยังคงอยู่ในช่วงการรวมตัวเป็นจำนวนช่วงเวลาที่กำหนด cBot จะระบุว่าตลาดกำลังรวมตัว
  • หากราคาเคลื่อนที่ทะลุแถบบน cBot จะเปิดโพสิชันซื้อ หากราคาเคลื่อนที่ต่ำกว่าแถบล่าง cBot จะเปิดโพสิชันขาย
  • เมื่อเปิดโพสิชัน cBot จะใช้ค่า Stop Loss และ Take Profit ที่ผู้ใช้กำหนด

cBot นี้ใช้ประโยชน์จากการเคลื่อนไหว Breakout หลังจากช่วงการรวมตัว ทำให้เหมาะสำหรับตลาดหรือสัญลักษณ์ที่มีช่วงการรวมตัวที่ชัดเจนและการเคลื่อนไหวในทิศทางที่รวดเร็ว

การสร้าง cBot

เรียนรู้วิธี สร้าง cBot โดยใช้ C# หรือ Python ใน คู่มือ ขั้นตอนต่อขั้นตอนของเรา

โค้ด Breakout cBot มีอยู่ในที่เก็บสาธารณะของเราใน C# และ Python โค้ดเดียวกันนี้ถูกจัดเตรียมเป็นเทมเพลตใน วิซาร์ดการสร้างอัลกอริทึม ใน cTrader Windows หรือ Mac หรือคุณสามารถคัดลอกและใช้ตัวอย่างโค้ดด้านล่างได้:

 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, AddIndicators = true)]
    public class SampleBreakoutcBot : Robot
    {
        [Parameter("Quantity (Lots)", Group = "Volume", DefaultValue = 1, MinValue = 0.01, Step = 0.01)]
        public double Quantity { get; set; }

        [Parameter("Stop Loss (pips)", Group = "Protection", DefaultValue = 20, MinValue = 1)]
        public int StopLossInPips { get; set; }

        [Parameter("Take Profit (pips)", Group = "Protection", DefaultValue = 40, MinValue = 1)]
        public int TakeProfitInPips { get; set; }

        [Parameter("Source", Group = "Bollinger Bands")]
        public DataSeries Source { get; set; }

        [Parameter("Band Height (pips)", Group = "Bollinger Bands", DefaultValue = 40.0, MinValue = 0)]
        public double BandHeightPips { get; set; }

        [Parameter("Bollinger Bands Deviations", Group = "Bollinger Bands", DefaultValue = 2)]
        public double Deviations { get; set; }

        [Parameter("Bollinger Bands Periods", Group = "Bollinger Bands", DefaultValue = 20)]
        public int Periods { get; set; }

        [Parameter("Bollinger Bands MA Type", Group = "Bollinger Bands")]
        public MovingAverageType MAType { get; set; }

        [Parameter("Consolidation Periods", Group = "Bollinger Bands", DefaultValue = 2)]
        public int ConsolidationPeriods { get; set; }

        BollingerBands bollingerBands;
        string label = "Sample Breakout cBot";
        int consolidation;

        protected override void OnStart()
        {
            bollingerBands = Indicators.BollingerBands(Source, Periods, Deviations, MAType);
        }

        protected override void OnBar()
        {
            var top = bollingerBands.Top.Last(1);
            var bottom = bollingerBands.Bottom.Last(1);

            if (top - bottom <= BandHeightPips * Symbol.PipSize)
            {
                consolidation = consolidation + 1;
            }
            else
            {
                consolidation = 0;
            }

            if (consolidation >= ConsolidationPeriods)
            {
                var volumeInUnits = Symbol.QuantityToVolumeInUnits(Quantity);
                if (Ask > top)
                {
                    ExecuteMarketOrder(TradeType.Buy, SymbolName, volumeInUnits, label, StopLossInPips, TakeProfitInPips);
                    consolidation = 0;
                }
                else if (Bid < bottom)
                {
                    ExecuteMarketOrder(TradeType.Sell, SymbolName, volumeInUnits, label, StopLossInPips, TakeProfitInPips);
                    consolidation = 0;
                }
            }
        }
    }
}
 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
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleBreakoutcBot():
    Label = "Sample Breakout cBot"
    def on_start(self):
        self.bollingerBands = api.Indicators.BollingerBands(api.Source, api.Periods, api.Deviations, api.MAType)

    def on_bar(self):
        top = self.bollingerBands.Top.Last(1)
        bottom = self.bollingerBands.Bottom.Last(1)

        if top - bottom <= api.BandHeightPips * api.Symbol.PipSize:
            self.consolidation += 1
        else:
            self.consolidation = 0

        if self.consolidation >= api.ConsolidationPeriods:
            volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)
            if api.Ask > top:
                api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                self.consolidation = 0 
            elif api.Bid < bottom:
                api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                self.consolidation = 0 

การรวมอินดิเคเตอร์

Bollinger Bands indicator เป็นส่วนสำคัญของกลยุทธ์ที่ใช้โดย Breakout cBot

cBot ใช้ความกว้างของ Bollinger Bands (ระยะห่างระหว่างแบนด์บนและแบนด์ล่าง) เพื่อระบุช่วงเวลาของการรวมตัว เมื่อแบนด์แคบ (บ่งบอกถึงความผันผวนต่ำ) cBot จะถือว่านี่เป็นช่วงเวลาการรวมตัว

หากความแตกต่างระหว่างแบนด์บนและแบนด์ล่างน้อยกว่าหรือเท่ากับเกณฑ์ที่กำหนด (BandHeightPips) เคาน์เตอร์การรวมตัว (consolidation) จะเพิ่มขึ้น cBot ต้องการจำนวนช่วงเวลาการรวมตัวที่ต่อเนื่องกัน (ConsolidationPeriods) ก่อนที่จะพิจารณาการ Breakout ที่อาจเกิดขึ้น

cBot จะติดตามและตีความราคาสำหรับ Breakout ด้วยวิธีนี้:

  • Bullish breakout - หากราคา ask เกินแถบบนของ Bollinger Band cBot จะตีความว่านี่คือ bullish breakout และดำเนินการคำสั่งซื้อ
  • Bearish breakout - หากราคา bid ต่ำกว่าแถบล่างของ Bollinger Band cBot จะตีความว่านี่คือ bearish breakout และดำเนินการคำสั่งขาย

หลังจากดำเนินการเทรดแล้ว เคาน์เตอร์การรวมตัวจะถูกรีเซ็ตเป็นศูนย์

การคำนวณและตรรกะ

การตั้งค่า Bollinger Bands

\[ B_{\text{top}} = MA + (D \times \sigma), \quad B_{\text{bottom}} = MA - (D \times \sigma) \]

\(B_{\text{top}}\) – แบนด์บน

\(B_{\text{bottom}}\) – แบนด์ล่าง

\(MA\) – ค่าเฉลี่ยเคลื่อนที่

\(D\) – จำนวนค่าเบี่ยงเบน

\(\sigma\) – ส่วนเบี่ยงเบนมาตรฐาน

เงื่อนไขการรวมตัว

\[ \text{ถ้า } (B_{\text{top}} - B_{\text{bottom}}) \leq (H \times P), \text{ แล้วก็ } C_{\text{counter}} = C_{\text{counter}} + 1 \]

มิฉะนั้น,

\[ C_{\text{counter}} = 0 \]

\(H\) – ความสูงของแบนด์ใน pips

\(P\) – ขนาดของ pips

\(C_{\text{Counter}}\) – เคาน์เตอร์การรวมตัว

การตรวจสอบช่วงเวลารวมตัว

หากตัวนับการรวมตัวมากกว่าช่วงเวลารวมตัว ให้ดำเนินการตามตรรกะการทะลุ

ตรรกะการทะลุ

หากราคา Ask สูงกว่าแบนด์บน ให้ส่งคำสั่งซื้อ หากราคา Bid ต่ำกว่าแบนด์ล่าง ให้ส่งคำสั่งขาย

พารามิเตอร์

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

ผู้ใช้ที่ทนต่อความเสี่ยงได้สูงอาจตั้งค่าตัวเลขที่สูงขึ้นเพื่อมุ่งหวังผลกำไรที่มากขึ้น
Stop Loss Pip จำนวน pips ที่การเทรดจะปิดโดยอัตโนมัติเพื่อป้องกันการขาดทุนเพิ่มเติม เทรดเดอร์ที่หลีกเลี่ยงความเสี่ยงอาจตั้งค่า Stop Loss ที่คับแคบเพื่อจำกัดการขาดทุนที่อาจเกิดขึ้น

ผู้ใช้ที่สามารถทนต่อความผันผวนของตลาดได้อาจตั้งค่า Stop Loss ที่กว้างขึ้น เพื่อให้การเทรดมีพื้นที่มากขึ้นก่อนที่จะปิด
Take Profit Pip จำนวน pips ที่การเทรดจะปิดโดยอัตโนมัติเพื่อป้องกันการขาดทุนเพิ่มเติม เทรดเดอร์ที่ชอบออกเร็วอาจใช้ค่า Take Profit ที่ต่ำเพื่อใช้ประโยชน์จากการเคลื่อนไหวระยะสั้น

ผู้ใช้ที่มุ่งเป้าไปที่แนวโน้มระยะยาวอาจตั้งค่า Take Profit ที่สูง เพื่อให้การเทรดสามารถดำเนินต่อไปได้นานขึ้น
ความสูงของแถบ Pip ความกว้างสูงสุดของ Bollinger Bands ในช่วงการรวมตัวที่ทำให้ cBot สามารถระบุช่วงเวลาที่มีความผันผวนต่ำได้ นักเทรดที่มุ่งเน้นการรวมตัวที่แน่นอาจใช้ค่า band height ที่ต่ำเพื่อกำหนดเป้าหมาย Breakout หลักจากช่วงเวลาที่มีความผันผวนต่ำ

ผู้ใช้ที่คุ้นเคยกับช่วงที่กว้างกว่าอาจใช้ค่า band height ที่เพิ่มขึ้น ทำให้ cBot สามารถพิจารณาการรวมตัวที่กว้างขึ้นเล็กน้อยเป็นชุดการตั้งค่าที่มีศักยภาพ
ค่าเบี่ยงเบนของเส้น Bollinger Bands ค่า Standard Deviation ที่ใช้ในการคำนวณความกว้างของ Bollinger Bands นักเทรดที่มุ่งเน้นการรวมตัวที่แน่นอาจใช้ค่า band height ที่ต่ำเพื่อกำหนดเป้าหมาย Breakout หลักจากช่วงเวลาที่มีความผันผวนต่ำ

ผู้ใช้ที่คุ้นเคยกับช่วงที่กว้างกว่าอาจใช้ค่า band height ที่เพิ่มขึ้น ทำให้ cBot สามารถพิจารณาการรวมตัวที่กว้างขึ้นเล็กน้อยเป็นชุดการตั้งค่าที่มีศักยภาพ
ช่วงเวลา Bollinger Bands จำนวนช่วงเวลาที่ใช้ในการคำนวณ Bollinger Bands นักเทรดที่มุ่งเน้นการเคลื่อนไหวของตลาดระยะสั้นอาจใช้ช่วงเวลาที่เล็ก ซึ่งทำให้ Bollinger Bands มีความไวต่อการเปลี่ยนแปลงราคาล่าสุดมากขึ้น

ผู้ใช้ที่สนใจแนวโน้มระยะยาวควรพิจารณาช่วงเวลาที่ใหญ่ ซึ่งทำให้ Bollinger Bands เรียบขึ้นและลดความไวต่อความผันผวนระยะสั้น
ช่วงสะสมกำลัง จำนวนแท่งที่ต่อเนื่องกันที่ต้องเป็นไปตามเกณฑ์การรวมตัวก่อนที่จะพิจารณาเทรด Breakout นักเทรดที่มองหาเทรดที่บ่อยขึ้นอาจลดระยะเวลาการรวมตัว ทำให้ cBot สามารถเข้าสู่เทรดได้เร็วขึ้น

ผู้ใช้ที่ต้องการ Breakout ที่ได้รับการยืนยันอาจเพิ่มระยะเวลาการรวมตัวเพื่อให้แน่ใจว่าราคาจะอยู่ในช่วงการรวมตัวนานขึ้นก่อนที่จะดำเนินการ

การประยุกต์

ตลาดที่มีแนวโน้ม

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

กรณีการใช้งาน

พิจารณาสถานการณ์ที่ EURUSD อยู่ในแนวโน้มขาขึ้นที่แข็งแกร่ง แต่รวมตัวชั่วคราวในช่วงแคบ Bollinger Bands แคบลง ซึ่งบ่งชี้ถึงความผันผวนที่ลดลง cBot จะตรวจจับการรวมตัวนี้และรอ Breakout เมื่อแนวโน้มกลับมา ราคาจะทะลุผ่าน Bollinger Band บน cBot จะดำเนินการคำสั่งซื้อ เพื่อใช้ประโยชน์จากการต่อเนื่องของแนวโน้ม

แนวปฏิบัติที่ดีที่สุด

  • ใช้ช่วงเวลาที่ใหญ่กว่า cBot มีประสิทธิภาพเป็นพิเศษในช่วงเวลาที่ใหญ่กว่า (1 ชั่วโมง, 4 ชั่วโมง, เป็นต้น) ในตลาดที่มีแนวโน้ม การตั้งค่านี้ช่วยจับการเคลื่อนไหวของราคาที่มีนัยสำคัญซึ่งให้ผลตอบแทนที่สูงกว่า
  • หลีกเลี่ยงช่วงเวลาการรวมตัวที่สั้น ในตลาดที่มีแนวโน้มแข็งแกร่ง คุณอาจต้องการหลีกเลี่ยงการตั้งค่าที่ทำให้เกิดช่วงเวลาการรวมตัวที่สั้น เพราะอาจนำไปสู่ Breakout ที่ผิดพลาด

Breakout หลังจากรูปแบบ

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

กรณีการใช้งาน

พิจารณาสถานการณ์ที่สัญลักษณ์ EURGBP ก่อตัวเป็นรูปแบบสามเหลี่ยมสมมาตรบนแผนภูมิ 1 ชั่วโมง เมื่อสามเหลี่ยมแคบลง Bollinger Bands ก็จะตีบแคบลงเช่นกัน ซึ่งบ่งบอกถึงความผันผวนที่ลดลง cBot จะระบุการรวมตัวภายในรูปแบบสามเหลี่ยม เมื่อราคา Breakout เหนือ Bollinger Band บนขณะที่ออกจากรูปแบบสามเหลี่ยม cBot จะดำเนินการคำสั่งซื้อเพื่อจับ Breakout

แนวปฏิบัติที่ดีที่สุด

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

การซื้อขายหลังข่าว

cBot อาจมีประสิทธิภาพในวันที่มีข่าวเศรษฐกิจสำคัญ เหตุการณ์ หรือการประกาศต่างๆ หลังจากข่าวบางอย่าง ตลาดบางแห่งใช้เวลาในการรวมตัวเนื่องจากนักเทรดประมวลผลข้อมูล เมื่อทิศทางตลาดชัดเจน Breakout อาจเกิดขึ้น

กรณีการใช้งาน

พิจารณาสถานการณ์หลังการเผยแพร่ข้อมูล U.S. Non-Farm Payrolls คู่ JPYUSD จะรวมตัวขณะที่นักเทรดประเมินผลกระทบของรายงาน Bollinger Bands ตีบแคบลง ซึ่งบ่งบอกถึงความผันผวนต่ำ cBot จะระบุการรวมตัวนี้และรอ Breakout เมื่อตลาดตัดสินใจทิศทาง (เช่น USD แข็งขึ้นเนื่องจากข้อมูลที่ดีกว่าที่คาดไว้) ราคาจะ Breakout ใต้ Bollinger Band ล่าง cBot จะดำเนินการคำสั่งขายเพื่อจับการเคลื่อนไหว

แนวปฏิบัติที่ดีที่สุด

  • ติดตามปฏิทินเศรษฐกิจ กำหนดค่า cBot ให้ทำงานในช่วงเวลาที่มีการประกาศข่าวเศรษฐกิจสำคัญ ตรวจสอบให้แน่ใจว่าการตั้งค่าระยะเวลาการรวมตัวได้รับการปรับเพื่อจับช่วงการรวมตัวหลังข่าวก่อน Breakout
  • ปรับ Stop Loss เนื่องจากความผันผวนที่เพิ่มขึ้นหลังเหตุการณ์ข่าว ให้พิจารณาขยาย Stop Loss เพื่อรองรับการแกว่งตัวของตลาดที่อาจเกิดขึ้นก่อนที่ Breakout จะเกิดขึ้นอย่างสมบูรณ์

Summary

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

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