Chiến lược Silver Bullet dựa trên Box Breakout


Ngày tạo: 2024-01-15 12:06:32 sửa đổi lần cuối: 2024-01-15 12:06:32
sao chép: 1 Số nhấp chuột: 801
1
tập trung vào
1617
Người theo dõi

Chiến lược Silver Bullet dựa trên Box Breakout

Tổng quan

Chiến lược này chủ yếu đánh giá định hướng và sức mạnh của thị trường bằng cách theo dõi sự phá vỡ của hộp hình thành từ các điểm cao và thấp của đường K. Khi có sự phá vỡ của hộp phía trên, chiến lược sẽ thiết lập một điểm vào tích cực gần điểm phá vỡ; Khi có sự phá vỡ của hộp phía dưới, chiến lược sẽ thiết lập một điểm vào đảo ngược gần điểm phá vỡ.

Nguyên tắc chiến lược

  1. Chiến lược sẽ xác định một khoảng thời gian giao dịch và chỉ hoạt động trong khoảng thời gian đó để tìm kiếm cơ hội giao dịch.

  2. Chiến lược sẽ xác định xem có sự phá vỡ đáng kể trong giá cao nhất và giá thấp nhất của hai đường K trước khi mỗi đường K được hình thành hay không.

2.1 Nếu giá thấp nhất của đường K thứ hai cao hơn giá cao nhất của đường K thứ nhất, sẽ có một lỗ hổng hầm lên trên.

2.2 Nếu giá cao nhất của dòng K thứ hai thấp hơn giá thấp nhất của dòng K đầu tiên, sẽ có một vụ phá vỡ hộp xuống.

  1. Sau khi xác nhận tín hiệu phá vỡ hộp, chiến lược sẽ đặt điểm vào thẳng hoặc ngược gần giá cao nhất hoặc thấp nhất của đường K.

  2. Một khi một vị trí được tạo ra, chiến lược sẽ thiết lập các điểm dừng dựa trên mức phá vỡ gấp đôi, bằng cách này để nắm bắt sự gia tăng của xu hướng.

  3. Chiến lược này cũng đặt điểm dừng ở vị trí giá thấp nhất hoặc cao nhất của đường K thứ hai, giảm nguy cơ mất mát.

Phân tích lợi thế

Chiến lược này có những lợi thế sau:

  1. Các nguyên tắc đơn giản, dễ hiểu và dễ thực hiện.

  2. Sử dụng K-trung đột phá để đánh giá định hướng và sức mạnh của thị trường, độ chính xác cao.

  3. Bạn có thể nắm bắt cơ hội tăng tốc xu hướng bằng cách đặt mức dừng.

  4. Có một logic dừng lỗ rõ ràng để kiểm soát tổn thất đơn lẻ.

  5. Các chiến lược này rất linh hoạt và có thể được tùy chỉnh theo phong cách cá nhân.

Phân tích rủi ro

Tuy nhiên, chiến lược này cũng có một số rủi ro:

  1. Các tín hiệu đột phá có thể là đột phá giả, không thể hoàn toàn tránh được sự mất mát.

  2. Vị trí dừng lỗ gần điểm vào có thể dễ dàng bị kích hoạt bởi thị trường cực đoan.

  3. Không có khả năng đánh giá được xu hướng, trong trường hợp kinh tế chấn động, việc dừng lỗ có thể thường xuyên được kích hoạt.

  4. Không tính đến ảnh hưởng của sự khác biệt về loại giao dịch và khoảng thời gian.

Hướng tối ưu hóa

Để tối ưu hóa chiến lược này hơn nữa, chúng ta có thể làm như sau:

  1. Cài đặt các tham số dừng tổn thương thích ứng cho các giống và khoảng thời gian khác nhau.

  2. Tăng các chỉ số kỹ thuật để đánh giá xu hướng và tránh bị mắc kẹt trong tình huống chấn động.

  3. Thiết lập cơ hội đặt cược tiếp theo để theo dõi xu hướng.

  4. Lượng kết hợp có thể được đánh giá bằng cách lọc tín hiệu.

  5. Thêm thuật toán học máy để hỗ trợ định hướng xu hướng.

Tóm tắt

Chiến lược này được thiết kế dựa trên nguyên tắc đột phá đơn giản, thu được lợi nhuận dư thừa bằng cách nắm bắt hoạt động tăng tốc sau khi đột phá. Sử dụng các thiết lập dừng và dừng để kiểm soát rủi ro. Chiến lược này dễ hiểu và thực hiện, có thể điều chỉnh và tối ưu hóa theo nhu cầu cá nhân và môi trường thị trường, có tính thực tiễn mạnh mẽ.

Mã nguồn chiến lược
/*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")