Lewati ke isi

Breakout cBot

Ikhtisar strategi

Breakout cBot memanfaatkan momen ketika harga simbol bergerak melampaui level support atau resistance yang telah ditentukan sebelumnya.

cBot ini memantau konsolidasi harga dengan membandingkan jarak antara Bollinger Bands atas dan bawah dengan ambang batas yang ditentukan pengguna, lalu melakukan hal berikut:

  • Jika harga simbol tetap berada dalam rentang konsolidasi selama jumlah periode tertentu, cBot mengidentifikasi pasar sedang berkonsolidasi.
  • Jika harga menembus di atas pita atas, cBot membuka posisi beli. Jika harga menembus di bawah pita bawah, cBot membuka posisi jual.
  • Saat membuka posisi, cBot menerapkan nilai stop-loss dan take-profit yang ditentukan pengguna.

cBot ini memanfaatkan pergerakan breakout setelah fase konsolidasi, menjadikannya cocok untuk pasar atau simbol yang menunjukkan periode konsolidasi yang jelas dan pergerakan arah yang tajam.

Pembuatan cBot

Pelajari cara membuat cBot, menggunakan C# atau Python, dalam panduan langkah demi langkah kami.

Kode Breakout cBot tersedia di repositori publik kami untuk C# dan Python. Kode yang sama disediakan sebagai templat dalam wizard pembuatan algoritma di cTrader Windows atau Mac, atau Anda dapat menyalin dan menggunakan cuplikan di bawah ini:

 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 

Integrasi indikator

Indikator Bollinger Bands merupakan inti dari strategi yang digunakan oleh Breakout cBot.

cBot menggunakan lebar Bollinger Bands (jarak antara pita atas dan bawah) untuk mengidentifikasi periode konsolidasi. Ketika pita tersebut sempit (menunjukkan volatilitas rendah), cBot menganggap ini sebagai periode konsolidasi.

Jika selisih antara pita atas dan bawah kurang dari atau sama dengan ambang batas yang ditentukan (BandHeightPips), penghitung konsolidasi (consolidation) akan meningkat. cBot memerlukan sejumlah periode konsolidasi berturut-turut (ConsolidationPeriods) sebelum mempertimbangkan potensi breakout.

cBot memantau dan menafsirkan harga untuk breakout dengan cara berikut:

  • Breakout bullish - jika harga ask melebihi Bollinger Band atas, cBot menafsirkan ini sebagai breakout bullish dan mengeksekusi order beli.
  • Breakout bearish - jika harga bid jatuh di bawah Bollinger Band bawah, cBot menafsirkan ini sebagai breakout bearish dan mengeksekusi order jual.

Setelah mengeksekusi trading, penghitung konsolidasi diatur ulang ke nol.

Perhitungan dan logika

Pengaturan Bollinger Bands

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

\(B_{\text{top}}\) – pita atas

\(B_{\text{bottom}}\) – pita bawah

\(MA\) – rata-rata bergerak

\(D\) – jumlah deviasi

\(\sigma\) – deviasi standar

Kondisi konsolidasi

\[ \text{Jika } (B_{\text{top}} - B_{\text{bottom}}) \leq (H \times P), \text{ maka } C_{\text{counter}} = C_{\text{counter}} + 1 \]

Selain itu,

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

\(H\) – tinggi pita dalam pip

\(P\) – ukuran pip

\(C_{\text{Counter}}\) – penghitung konsolidasi

Pemeriksaan periode konsolidasi

Jika penghitung konsolidasi lebih besar dari periode konsolidasi, jalankan logika breakout.

Logika breakout

Jika harga Ask lebih besar dari pita atas, pasang order beli. Jika harga Bid kurang dari pita bawah, pasang order jual.

Parameter

Parameter Unit Definisi Tips
Kuantitas Lot Volume setiap trade. Trader dengan selera risiko rendah dapat memulai dengan jumlah kecil untuk meminimalkan potensi kerugian.

Pengguna dengan toleransi risiko yang lebih tinggi dapat menetapkan angka yang lebih besar untuk menargetkan keuntungan yang lebih besar.
Stop Loss Pip Jumlah pip di mana perdagangan akan ditutup secara otomatis untuk mencegah kerugian lebih lanjut. Trader yang menghindari risiko dapat menetapkan nilai Stop Loss yang ketat untuk membatasi potensi kerugian.

Pengguna yang mampu mentolerir fluktuasi pasar dapat menetapkan nilai Stop Loss yang lebih luas, memberikan ruang lebih bagi perdagangan mereka sebelum ditutup.
Take Profit Pip Jumlah pip di mana perdagangan akan ditutup secara otomatis untuk mencegah kerugian lebih lanjut. Trader yang lebih suka keluar cepat dapat menggunakan nilai Take Profit yang lebih rendah untuk memanfaatkan pergerakan jangka pendek.

Pengguna yang menargetkan tren yang lebih panjang dapat menetapkan nilai Take Profit yang tinggi agar perdagangan mereka dapat berjalan lebih lama.
Tinggi band Pip Lebar maksimum Bollinger Bands selama fase konsolidasi yang memungkinkan cBot untuk mengidentifikasi periode volatilitas rendah. Trader yang fokus pada konsolidasi ketat dapat menggunakan nilai tinggi band yang rendah untuk menargetkan breakout besar dari periode volatilitas rendah.

Pengguna yang nyaman dengan rentang yang lebih lebar dapat menggunakan nilai tinggi band yang meningkat, memungkinkan cBot untuk mempertimbangkan konsolidasi yang sedikit lebih luas sebagai potensi setup.
Deviasi Bollinger Bands — Nilai standard deviation yang digunakan untuk menghitung lebar Bollinger Bands. Trader yang fokus pada konsolidasi ketat dapat menggunakan nilai tinggi band yang rendah untuk menargetkan breakout besar dari periode volatilitas rendah.

Pengguna yang nyaman dengan rentang yang lebih lebar dapat menggunakan nilai tinggi band yang meningkat, memungkinkan cBot untuk mempertimbangkan konsolidasi yang sedikit lebih luas sebagai potensi setup.
Periode Bollinger Bands — Jumlah periode yang digunakan untuk menghitung Bollinger Bands. Trader yang fokus pada pergerakan pasar jangka pendek dapat menggunakan periode kecil, yang membuat Bollinger Bands lebih sensitif terhadap perubahan harga terkini.

Pengguna yang tertarik pada tren jangka panjang harus mempertimbangkan periode besar, yang meratakan Bollinger Bands dan mengurangi sensitivitasnya terhadap fluktuasi jangka pendek.
Periode konsolidasi — Jumlah bar berturut-turut yang harus memenuhi kriteria konsolidasi sebelum trading breakout dipertimbangkan. Trader yang mencari trading lebih sering dapat mengurangi periode konsolidasi, memungkinkan cBot untuk masuk trading lebih cepat.

Pengguna yang lebih memilih breakout yang dikonfirmasi dapat meningkatkan periode konsolidasi untuk memastikan harga tetap dalam rentang konsolidasi lebih lama sebelum tindakan diambil.

Penerapan

Pasar yang sedang tren

Breakout cBot bekerja dengan baik di pasar trending (naik atau turun). Di pasar seperti itu, breakout sering kali sejalan dengan tren keseluruhan setelah periode konsolidasi, yang mengarah pada pergerakan harga yang signifikan.

Contoh penggunaan

Pertimbangkan skenario di mana EURUSD berada dalam tren naik yang kuat tetapi sementara berkonsolidasi dalam rentang sempit. Bollinger Bands menyempit, menunjukkan volatilitas yang berkurang. cBot mendeteksi konsolidasi ini dan menunggu breakout. Saat tren berlanjut, harga menembus di atas Bollinger Band atas. cBot mengeksekusi order beli, memanfaatkan kelanjutan tren.

Praktik terbaik

  • Gunakan periode yang lebih besar. cBot sangat efektif pada periode yang lebih besar (1-jam, 4-jam, dll.) di pasar trending. Setup ini membantu menangkap pergerakan harga signifikan yang menghasilkan pengembalian lebih tinggi.
  • Hindari periode konsolidasi pendek. Di pasar yang sangat trending, Anda mungkin ingin menghindari pengaturan yang menyebabkan periode konsolidasi pendek karena mungkin mengarah pada breakout palsu.

Breakout setelah pola

cBot dapat digunakan untuk trading breakout dari pola grafik yang biasanya mengarah pada pergerakan harga yang kuat, seperti segitiga, bendera, atau pennant. Pola-pola ini sering kali menghasilkan fase konsolidasi yang diikuti oleh breakout.

Contoh penggunaan

Pertimbangkan skenario di mana simbol EURGBP membentuk pola segitiga simetris pada grafik h1. Saat segitiga menyempit, Bollinger Bands juga mengencang, menunjukkan volatilitas yang berkurang. cBot mengidentifikasi konsolidasi dalam pola segitiga. Setelah harga breakout di atas Bollinger Band atas saat keluar dari pola segitiga, cBot mengeksekusi order beli untuk menangkap breakout.

Praktik terbaik

  • Gabungkan cBot dengan pola lainnya. Identifikasi pola grafik penting secara manual dan kemudian gunakan cBot untuk mengotomatisasi trading breakout setelah pola selesai.
  • Perpanjang periode konsolidasi. Untuk pola yang terbentuk dalam periode yang lebih lama, pertimbangkan untuk meningkatkan periode konsolidasi agar cBot hanya memicu setelah pola benar-benar terbentuk.

Trading pasca-berita

cBot mungkin efektif pada hari-hari dengan berita ekonomi besar, acara, atau pengumuman. Setelah berita tertentu, beberapa pasar membutuhkan waktu untuk konsolidasi saat trader mencerna informasi. Ketika arah pasar menjadi jelas, breakout mungkin terjadi.

Contoh penggunaan

Pertimbangkan skenario setelah rilis data Non-Farm Payrolls AS, pasangan JPYUSD berkonsolidasi saat trader menilai implikasi dari laporan tersebut. Bollinger Bands menyempit, menunjukkan volatilitas rendah. cBot mengidentifikasi konsolidasi ini dan menunggu breakout. Saat pasar menentukan arah (misalnya, USD yang lebih kuat karena data yang lebih baik dari perkiraan), harga melakukan breakout di bawah Bollinger Band bawah. cBot mengeksekusi order jual untuk menangkap pergerakan tersebut.

Praktik terbaik

  • Pantau kalender ekonomi. Konfigurasikan cBot untuk berjalan di sekitar rilis ekonomi besar. Pastikan pengaturan periode konsolidasi disesuaikan untuk menangkap fase konsolidasi pasca-berita sebelum breakout.
  • Sesuaikan stop loss. Karena peningkatan volatilitas setelah peristiwa berita, pertimbangkan untuk memperlebar stop loss untuk mengakomodasi potensi ayunan pasar sebelum breakout sepenuhnya terwujud.

Summary

Breakout cBot memberdayakan trader untuk memanfaatkan volatilitas pasar, volume trading tinggi, dan peningkatan aktivitas. Meskipun cBot efisien dalam mengeksekusi strategi breakout, ketergantungannya pada Bollinger Bands dapat menyebabkan masalah kinerja dalam kondisi pasar tertentu.

Menyesuaikan Breakout cBot ke simbol tertentu dan preferensi trading Anda dapat secara signifikan meningkatkan efektivitasnya. Dengan memasukkan strategi Anda sendiri ke dalam cBot dan memodifikasi kodenya untuk memungkinkannya menggunakan indikator tambahan, Anda dapat lebih meningkatkan akurasi dan kinerjanya.