Chiến lược theo dõi dựa trên các điểm giá chính


Ngày tạo: 2023-09-21 15:24:53 sửa đổi lần cuối: 2023-09-21 15:24:53
sao chép: 0 Số nhấp chuột: 684
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 ý tưởng rằng các điểm dừng và dừng thường được đặt ở mức giá nguyên hoặc mức giá quan trọng, và các điểm này thường đóng vai trò như các điểm hỗ trợ và kháng cự. Bằng cách nhận diện các mức giá quan trọng này, chiến lược thực hiện mua hoặc bán khi giá gần.

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

Chiến lược này bao gồm các quy tắc sau:

  1. Giao dịch mua được thực hiện khi giá đóng cửa cao hơn mức giá quan trọng và không chạm vào giá này trong 10 đường K trước.

  2. Tiếp theo, sử dụng theo dõi leo để theo dõi sự di chuyển của giá vượt qua mức giá quan trọng.

  3. Hoạt động bán là trái ngược với mua, khi giá đóng cửa thấp hơn mức giá quan trọng và không chạm vào giá đó trong 10 đường K trước.

  4. Các phương pháp để xác định mức giá quan trọng là:

    • Chuyển giá đóng cửa thành số nguyên
    • Tính số dư với 50 điểm nguyên ((configurable)
    • Nếu số dư lớn hơn 25, hãy lấy 50 điểm gần nhất làm giá quan trọng
    • Nếu không, giá chính sẽ không thay đổi.

Chiến lược này dựa trên tư tưởng về tâm lý giá, cho rằng giá cả hoặc mức độ quan trọng thường là vị trí quan trọng mà các bên cạnh cạnh tranh, do đó có hiệu quả như một tín hiệu giao dịch. Trong khi đó, theo dõi leo thang có thể theo dõi xu hướng sau khi giá vượt qua.

Lợi thế chiến lược

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

  1. Các tín hiệu giao dịch đơn giản và trực quan và các quy tắc tham gia.
  2. Sử dụng quy luật chung về điểm giá then chốt, không phụ thuộc vào một giống cụ thể.
  3. Theo dõi dừng lỗ có thể khóa lợi nhuận, theo xu hướng.

Rủi ro chiến lược

Chiến lược này cũng có những rủi ro sau:

  1. Các điểm giá quan trọng không nhất thiết phải là hỗ trợ hoặc kháng cự mạnh. Nếu phá vỡ sai, có thể dẫn đến thất bại trong giao dịch.
  2. Quy tắc phán đoán 10 đường K cố định có thể không phù hợp với các giống khác nhau.
  3. Theo dõi dừng lỗ không nên quá xa, nếu không có thể dừng lỗ quá sớm.

Giải pháp tương ứng:

  1. Các chỉ số khác cũng được sử dụng để đánh giá điểm giá quan trọng.
  2. Tối ưu hóa cho các tham số của các giống khác nhau, tìm kiếm sự kết hợp tham số tốt nhất.
  3. Tối ưu hóa các tham số theo dõi lỗ hổng để gần gũi hơn với thị trường.

Hướng tối ưu hóa chiến lược

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

  1. Thêm nhiều điều kiện để đánh giá tầm quan trọng của các điểm giá quan trọng, tránh nguy cơ phá vỡ giả. Các chỉ số như kết hợp với khối lượng giao dịch.

  2. Các tham số tối ưu hóa, đặc biệt là các tham số như bước dài trong khu vực giá quan trọng, chu kỳ đường K. Để phù hợp hơn với các đặc điểm của các giống khác nhau.

  3. Tối ưu hóa các cơ chế tracking stop loss, ví dụ như sử dụng tracking stop loss động thay vì tracking stop loss cố định.

  4. Thêm các thuật toán học máy sử dụng dữ liệu lịch sử để đánh giá sức mạnh của các khu vực giá quan trọng để cải thiện chất lượng tín hiệu.

  5. Mở rộng chiến lược qua các chu kỳ thời gian, đồng thời đánh giá xu hướng trong các chu kỳ thời gian cao hơn và theo dõi trong các chu kỳ thời gian thấp hơn.

Tóm tắt

Chiến lược này dựa trên suy nghĩ đơn giản và trực quan về các điểm quan trọng của giá, sử dụng các thói quen giao dịch phổ biến để tạo ra tín hiệu giao dịch. Cơ hội chiến lược là rất nhiều, nhưng cần được tối ưu hóa hơn nữa để xử lý các trường hợp phá vỡ giả. Các phương tiện như tối ưu hóa tham số và học máy có thể tăng sự ổn định của chiến lược.

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