Chiến lược theo dõi số tròn

Tác giả:ChaoZhang, Ngày: 2023-09-21 15:24:53
Tags:

Tổng quan

Chiến lược này dựa trên ý tưởng rằng mức dừng lỗ và mức lợi nhuận thường được đặt ở số tròn hoặc mức giá chính, hoạt động như hỗ trợ và kháng cự.

Chiến lược logic

Các quy tắc chính của chiến lược này là:

  1. Khi giá đóng là trên một mức giá chính, và không chạm vào mức đó trong 10 thanh gần đây, đi dài.

  2. Sử dụng một điểm dừng lại với bước 20 điểm để theo dõi chuyển động sau khi giá phá vỡ mức chính.

  3. Các tín hiệu bán là ngược lại - khi đóng là dưới mức chính và chưa chạm vào nó trong 10 thanh trước, đi ngắn.

  4. Các mức chính được xác định là:

    • Chuyển đổi giá gần thành số nguyên
    • Tính toán số dư từ chia cho 50 (có thể cấu hình)
    • Nếu số dư > 25, sử dụng số nguyên 50 tiếp theo như mức chính
    • Nếu không giữ mức khóa không thay đổi

Chiến lược này dựa trên tâm lý học rằng các số tròn và các mức chính thường là chiến trường cho bò và gấu, và do đó cung cấp các tín hiệu giao dịch hiệu quả.

Ưu điểm

Những lợi thế của chiến lược này là:

  1. Các tín hiệu giao dịch đơn giản và trực quan và các quy tắc nhập cảnh.
  2. Sử dụng mô hình phổ quát của giá chính thay vì các quy tắc cụ thể về công cụ.
  3. Chạy theo dừng khóa trong lợi nhuận trong khi cưỡi xu hướng.

Rủi ro

Những rủi ro cần xem xét là:

  1. Các mức chính có thể không phải lúc nào cũng hoạt động như một hỗ trợ / kháng cự mạnh.
  2. Trình nhìn ngược cố định 10 bar có thể không phù hợp với các thiết bị khác nhau.
  3. Khoảng cách dừng phía sau không nên quá rộng, nếu không nó có thể dừng lại sớm.

Các giải pháp có thể:

  1. Thêm thêm các bộ lọc để đánh giá độ mạnh của các mức chính, ví dụ: khối lượng.
  2. Tối ưu hóa các thông số như thời gian xem lại cho các thiết bị khác nhau.
  3. Tối ưu hóa cơ chế dừng lại để thích nghi hơn.

Cơ hội gia tăng

Chiến lược có thể được cải thiện bằng cách:

  1. Thêm thêm các điều kiện để xác nhận tầm quan trọng của các mức chính và tránh giả mạo.

  2. Tối ưu hóa các thông số như phạm vi cấp độ chính và thời gian xem lại dựa trên các đặc điểm của thiết bị.

  3. Cải thiện cơ chế dừng kéo theo, ví dụ như sử dụng đường mòn động thay vì đường mòn điểm cố định.

  4. Tích hợp máy học để đánh giá sức mạnh của các mức chính bằng cách sử dụng dữ liệu lịch sử.

  5. Mở rộng sang hệ thống nhiều khung thời gian với xu hướng TF cao hơn và theo dõi TF thấp hơn.

Kết luận

Chiến lược này cung cấp các tín hiệu đơn giản và trực quan dựa trên mức giá chính và các quy ước giao dịch. Nó có nhiều cơ hội nhưng cần tối ưu hóa hơn nữa để xử lý giả mạo. Chế độ điều chỉnh tham số và học máy có thể cải thiện độ bền. Nó cung cấp các ý tưởng giao dịch ngày tốt và cũng có thể được mở rộng thành hệ thống theo dõi xu hướng nhiều khung thời gian.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions


strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

//Round Levels credit to RKchartest

roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0) 

rDelimeter = 1/syminfo.mintick

intRoundLevel = close[1] * rDelimeter

intRemainder = intRoundLevel % roundLevel50 
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)

//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)

// end

//Start of strategy

distToFullNumber=(close-roundLevel) //can be positive or negative number

distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price


TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order

longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)

if (longCondition)
    strategy.entry("LongMagnet", strategy.long)
    strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)

shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)

if (shortCondition)
    strategy.entry("ShortMagnet", strategy.short)
    strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)
    

Thêm nữa