Chiến lược tảng băng trôi hộp trắng


Ngày tạo: 2023-09-26 21:02:21 sửa đổi lần cuối: 2023-09-26 21:02:21
sao chép: 0 Số nhấp chuột: 754
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này dựa trên giao dịch đường trung bình, bằng cách thiết lập ba đường vào của nhiều đầu và đầu trống, để thực hiện nhiều vị trí mở rộng hai chiều, thuộc chiến lược theo dõi xu hướng. Khi giá phá vỡ đường trung bình, lần lượt mở vị trí làm thêm nhược điểm, bằng cách treo đơn để thực hiện phân khúc vào.

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

Chiến lược này chủ yếu dựa trên sự phá vỡ của đường trung bình để đánh giá hướng xu hướng. Cụ thể, nó có được một chỉ số đường trung bình bằng cách tính toán các giá mở cửa, giá đóng cửa, giá cao nhất, giá thấp nhất, v.v.

Số lượng đơn đặt hàng được thực hiện nhiều lần tăng dần, bằng cách thiết lập danh sách treo để thực hiện mở kho theo lô. Ví dụ: đường vào 1 kích hoạt mở 1 tay làm nhiều / trống, đường vào 2 kích hoạt thêm 1 tay giữ, đường vào 3 thêm 1 tay giữ. Điều này có thể phân tán chi phí vào và giảm rủi ro của đơn đặt hàng.

Chiến lược này cũng thiết lập một cơ chế bù đắp. Khi số lượng vị trí không bằng 0, lệnh dừng sẽ được theo dõi dựa trên giá đường trung bình, và nếu giá giảm xuống đường trung bình một lần nữa, nó sẽ dừng vị trí bằng phẳng. Điều này có thể khóa một phần lợi nhuận, bảo vệ tiền.

Nhìn chung, chiến lược này sử dụng tốt nhất các chỉ số đường trung bình để xác định hướng xu hướng, tối đa hóa khoảng lợi nhuận thông qua đường vào nhiều cấp, đồng thời thiết lập rủi ro kiểm soát lỗ hổng đơn, thuộc về chiến lược theo dõi xu hướng điển hình.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng đường trung bình để đánh giá xu hướng rõ ràng. đường trung bình có thể lọc hiệu quả tiếng ồn thị trường để đánh giá xu hướng chính.

  2. Giao diện đa cấp, tận dụng tối đa các khu vực chạy của xu hướng. Bằng cách sử dụng nhiều đường vào, bạn có thể nắm bắt tối đa toàn bộ khu vực chạy của xu hướng, mở rộng không gian lợi nhuận.

  3. Mở kho hàng loạt, giảm rủi ro đơn lẻ. Việc nhập vào nhiều lần có thể phân tán rủi ro của đơn đặt hàng, giảm chi phí nắm giữ trung bình của vị trí.

  4. Thiết lập các cơ chế khấu trừ để kiểm soát rủi ro một cách hiệu quả. Bằng cách khấu trừ các lệnh khấu trừ, bạn có thể dừng lại một cách nhanh chóng khi giá giảm xuống đường trung bình một lần nữa, tránh mất mát quá lớn.

  5. Chiến lược được xây dựng rõ ràng và dễ hiểu, các tham số được thiết lập linh hoạt, có thể được tối ưu hóa cho các thị trường khác nhau.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Tỷ lệ tín hiệu sai của đường trung bình. Xác định xu hướng của đường trung bình có sự chậm trễ, có thể phát tín hiệu sai.

  2. Rủi ro mất mát do đảo ngược xu hướng. Chiến lược này được giả định là có xu hướng, một khi có xu hướng đảo ngược, sẽ tạo ra tổn thất lớn hơn.

  3. Dòng vào được thiết lập quá đông, tăng tần suất giao dịch và chi phí điểm trượt.

  4. Việc mở kho hàng loạt làm tăng rủi ro tập trung vị trí. Khi nắm giữ quá nhiều, rủi ro tập trung.

  5. Đặt điểm dừng không hợp lý, có thể dừng quá sớm hoặc quá nhỏ.

Các biện pháp quản lý rủi ro:

  1. Tối ưu hóa tham số đường trung bình, chọn đường trung bình chu kỳ phù hợp.

  2. Theo dõi các chỉ số kỹ thuật quan trọng, đánh giá các tín hiệu thay đổi xu hướng và dừng lỗ kịp thời.

  3. Điều chỉnh khoảng cách thiết lập đường vào sân, giảm tần suất giao dịch.

  4. Tối ưu hóa kích thước và tỷ lệ vị trí, kiểm soát rủi ro tập trung.

  5. Kiểm tra và tối ưu hóa điểm dừng để giảm nguy cơ dừng.

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

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Kiểm tra các tham số và nguồn dữ liệu khác nhau, chọn chỉ số trung bình tốt nhất để xác định hiệu quả của xu hướng.

  2. Tối ưu hóa tỷ lệ khoảng cách và số vị trí của đường vào nhiều chỗ trống để tìm tham số tối ưu.

  3. Kết hợp với các chỉ số khác làm điều kiện lọc, tránh phát ra tín hiệu sai lệch của đường thẳng. Ví dụ MACD, RSI, v.v.

  4. Tối ưu hóa vị trí đường dừng, cũng có thể đặt điểm dừng theo ATR động.

  5. Tăng khả năng đánh giá xu hướng đảo ngược, thiết lập điều kiện đóng tất cả các vị trí nắm giữ.

  6. Các tham số có thể tối ưu hóa chiến lược theo các giai đoạn thị trường khác nhau.

  7. Tăng chức năng điều chỉnh động số vị trí, xác định số người mở vị trí dựa trên tỷ lệ sử dụng vốn.

Tóm tắt

Chiến lược này sử dụng đường thẳng để đánh giá xu hướng, và hoạt động của xu hướng là nguồn lợi nhuận chính. Bằng cách tham gia nhiều cấp và mở các vị trí, bạn có thể nắm bắt xu hướng một cách hiệu quả, mở rộng vùng lợi nhuận. Đồng thời thiết lập cơ chế dừng lỗ để kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Robot WhiteBox Iceberg", shorttitle = "Robot WhiteBox Iceberg", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data")
short3 = input(true, title = "short 3")
short2 = input(true, title = "short 2")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
long2 = input(true, title = "long 2")
long3 = input(true, title = "long 3")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
lots = 0.0
size = strategy.position_size
mult = 1 / syminfo.mintick
needtime = true

//MA
oc2 = (open + close) / 2
pcma = (highest(high, len) + lowest(low, len)) / 2
src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close
sma = sma(src, len)
ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult

//Levels
longline1 = 0.0
longline2 = 0.0
longline3 = 0.0
shortline1 = 0.0
shortline2 = 0.0
shortline3 = 0.0
longline1 := long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 := lots[1] == 0 ? long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close : longline2[1]
longline3 := lots[1] == 0 ? long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close : longline3[1]
shortline1 := short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 := lots[1] == 0 ? short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close : shortline2[1]
shortline3 := lots[1] == 0 ? short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close : shortline3[1]

//Lines
colorlong1 = long1 ? color.lime : na
colorlong2 = long2 ? color.lime : na
colorlong3 = long3 ? color.lime : na
colorshort1 = short1 ? color.red : na
colorshort2 = short2 ? color.red : na
colorshort3 = short3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3")
plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2")
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")
plot(longline2, offset = offset, color = colorlong2, title = "Long line 2")
plot(longline3, offset = offset, color = colorlong3, title = "Long line 3")

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime))
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma, when = needtime)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma, when = needtime)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("L2")
    strategy.cancel("L3")
    strategy.cancel("S1")
    strategy.cancel("S2")
    strategy.cancel("S3")
    strategy.cancel("TPL")
    strategy.cancel("TPS")