Strategi peluru perak berbasis Box Breakout

Penulis:ChaoZhang, Tanggal: 2024-1-15 12:06:32
Tag:

img

Gambaran umum

Strategi ini terutama mendeteksi terobosan kotak yang terbentuk oleh titik tinggi dan rendah dari garis K untuk menilai arah dan kekuatan pasar. Ketika ada terobosan kotak ke atas, strategi akan menetapkan posisi panjang di sekitar titik terobosan. Ketika ada terobosan kotak ke bawah, strategi akan menetapkan posisi pendek di sekitar titik terobosan. Setelah sinyal perdagangan dihasilkan, strategi akan menempatkan pesanan untuk membuka posisi dan mengatur stop loss dan mengambil keuntungan untuk mengendalikan risiko.

Logika Strategi

  1. Strategi mendefinisikan periode waktu perdagangan dan hanya mencari peluang perdagangan selama periode tersebut.

  2. Setelah setiap K-line terbentuk, strategi menilai apakah ada terobosan yang signifikan antara harga tertinggi dan terendah dari dua K-line sebelumnya.

    2.1 Jika harga terendah dari K-line ke-2 lebih tinggi dari harga tertinggi dari K-line ke-1, ada pembobolan kotak ke atas.

    2.2 Jika harga tertinggi dari K-line ke-2 lebih rendah dari harga terendah dari K-line ke-1, terjadi penembusan kotak ke bawah.

  3. Setelah mengkonfirmasi sinyal box breakout, strategi menetapkan titik masuk panjang atau pendek di sekitar harga tertinggi atau terendah dari garis K saat ini.

  4. Setelah posisi dibuka, strategi menetapkan mengambil keuntungan berdasarkan dua kali rentang breakout untuk menangkap percepatan tren.

  5. Strategi ini juga menetapkan stop loss pada harga terendah atau tertinggi dari garis K ke-2 untuk mengurangi risiko kerugian.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Logikanya sederhana dan mudah diterapkan.

  2. Menggunakan K-line box breakout untuk menilai arah dan kekuatan pasar memiliki akurasi tinggi.

  3. Pengaturan take profit menangkap peluang dari akselerasi tren.

  4. Ada logika stop loss yang jelas untuk mengendalikan kerugian tunggal.

  5. Ide strategi ini fleksibel dan dapat disesuaikan sesuai dengan gaya pribadi.

Analisis Risiko

Namun, ada beberapa risiko dalam strategi:

  1. Sinyal breakout bisa jadi breakout palsu, kerugian tidak bisa dihindari sepenuhnya.

  2. Stop loss di dekat titik masuk dapat dengan mudah dipicu oleh pasar yang agresif.

  3. Ini tidak dapat menilai struktur tren dan berhenti dapat sering dipicu di pasar yang terikat rentang.

  4. Ini tidak mempertimbangkan dampak dari produk dan periode waktu yang berbeda.

Arahan Optimasi

Untuk lebih mengoptimalkan strategi, kita dapat meningkatkan dari aspek berikut:

  1. Atur parameter stop loss dan take profit adaptif untuk produk dan periode waktu yang berbeda.

  2. Tambahkan indikator teknis untuk penilaian tren untuk menghindari terjebak di pasar yang terikat rentang.

  3. Atur kesempatan tambahan berikutnya untuk melacak trend run.

  4. Gabungkan indikator volume untuk menilai keaslian sinyal breakout dan filter.

  5. Tambahkan algoritma pembelajaran mesin untuk membantu menentukan arah tren.

Ringkasan

Strategi ini dirancang berdasarkan prinsip breakout sederhana untuk menangkap berjalan dipercepat setelah breakout untuk keuntungan berlebih. Ini menggunakan berhenti dan keuntungan untuk mengendalikan risiko.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Scriptâ„¢ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Dvitash

//@version=5
strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true)

startTime = input(defval = "1000", title = "Start Time")
endTime = input(defval = "1600", title = "End Time")
contractAmt = input.int(defval = 2, title = "Contract Amount")
fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color")
borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color")
fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length")

allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York"))
newDay = bool(ta.change(time('D')))
h = hour(time('1'), "America/New_York")

var bool fvgDrawn = na
var float entryPrice = na 
var float stopPrice = na 
var float tpPrice = na 

if newDay
    fvgDrawn := false
    // a_allBoxes = box.all
    // if array.size(a_allBoxes) > 0
    //     for i = 0 to array.size(a_allBoxes) - 1
    //         box.delete(array.get(a_allBoxes, i))

if allowedTime and barstate.isconfirmed and h <= 16
    //Long FVG
    if high[2] < low and not fvgDrawn
        // box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := low[2]
        entryPrice := low
        tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry")
        fvgDrawn := true

    if low[2] > high and not fvgDrawn
        // box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol)
        stopPrice := high[2]
        entryPrice := high
        tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2)
        // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
        strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry")
        fvgDrawn := true
if h >= 16
    strategy.close_all()
    strategy.cancel_all()

strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit")
strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")

Lebih banyak