Chiến lược theo dõi hộp phần trăm động


Ngày tạo: 2023-11-23 10:32:39 sửa đổi lần cuối: 2023-11-23 10:32:39
sao chép: 1 Số nhấp chuột: 605
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi hộp phần trăm động

Tổng quan

Chiến lược này sử dụng tỷ lệ phần trăm thay đổi của giá để thiết lập đường mua và đường dừng, đặt lệnh theo giá phá vỡ đường mua và dừng dưới đường dừng. Đặc điểm chính của nó là chỉ chịu rủi ro một đơn vị, tức là chỉ khi một vị trí trước đó đạt được mục tiêu lợi nhuận được đặt trước.

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

Chiến lược này bắt đầu bằng việc thiết lập một giá cơ sở, với 10% giá này là một phạm vi giá, biên trên là đường mua và biên dưới là đường dừng. Khi giá phá vỡ đường mua, mua với số lượng cố định.

Một điểm quan trọng khác của chiến lược này là chỉ chịu rủi ro một đơn vị. Đó là, chỉ khi vị trí hiện tại đạt được mục tiêu lợi nhuận, vị trí mới sẽ được đặt. Vị trí mới cũng sẽ được thiết lập theo đường mua và đường dừng mới. Điều này có thể hạn chế rủi ro.

Phân tích lợi thế

Chiến lược này kết hợp các ưu điểm của việc theo dõi lỗ hổng và quản lý dự trữ, giúp kiểm soát rủi ro một cách hiệu quả và kiếm lợi nhuận.

  1. Bạn có thể tự động theo dõi xu hướng bằng cách đặt đường mua và đường dừng ở khoảng phần trăm
  2. Kiểm soát rủi ro, hạn chế tổn thất
  3. Chỉ đặt cược khi có lợi nhuận để tránh thua lỗ
  4. Sau khi thu được lợi nhuận, chuyển sang đường dừng lỗ và khóa lợi nhuận.

Phân tích rủi ro

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

  1. Phân đoạn phần trăm quá lớn, đường mua và đường dừng quá xa nhau, rủi ro tăng lên
  2. Phân đoạn phần trăm quá nhỏ, đường mua và đường dừng quá gần nhau, không gian lợi nhuận bị giới hạn
  3. Lợi ích dừng được thiết lập không đúng cách, có thể gây thiệt hại sớm
  4. Tiếp tục tăng cường quá mức, có thể làm tăng tổn thất

Những rủi ro này có thể được tránh bằng cách điều chỉnh các tham số, chẳng hạn như điều chỉnh kích thước phần trăm, điều chỉnh điều kiện gia tăng.

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

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Có thể kết hợp các chỉ số xu hướng để xác định hướng đi của xu hướng
  2. Bạn có thể thêm mô hình học máy để làm cho đường mua và đường dừng trở nên thông minh hơn
  3. Có thể đặt các điều kiện gia tăng khác nhau để giảm rủi ro hơn nữa
  4. Có thể thử nghiệm các thời gian giữ vị trí khác nhau để tìm chu kỳ giữ vị trí tốt nhất

Tóm tắt

Đây là một chiến lược giao dịch sử dụng khoảng phần trăm. Nó đơn giản, thực tế và kiểm soát rủi ro hiệu quả. Bằng cách điều chỉnh tham số và tối ưu hóa mô hình, chiến lược này có thể trở thành một hệ thống theo dõi xu hướng đáng tin cậy, tạo ra lợi nhuận vượt trội ổn định cho nhà đầu tư.

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

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HermanBrummer 4 April 2021

strategy ("The Box Percent Strat", shorttitle="The Box", overlay = true)

///     Designed for LONG only on Daily, 2D or 3D Charts
///     Uses fixed investment risk amount, meaning you're willing to lose that amount per trade
///     Limit buy to not overpay

RiskPerTrade            = input(10000, "Risk losing this much per trade", tooltip="This calculates how much you will lose based on difference between the entry price and stop loss price")
TradeAboveMAFilterPer   = input(50, "The System won't trade if price is below this MA")

UpBoxSize               = (input(10, "Box size in %") * 0.01)+1 // 1.1 == 10% up
DnBoxSize               = 1-(input(10, "Box size in %") * 0.01) // 0.9 == 10% dn


var FirstBar            = close > 0 ? close : na
var FirstTop            = FirstBar * UpBoxSize
var FirstBot            = FirstBar * DnBoxSize


var top                 = sma(FirstTop, 1)
var bot                 = sma(FirstBot, 1)

///     The Box Calcs
if  high[2] > top
    top                 := top * UpBoxSize
    bot                 := bot * UpBoxSize
if  low[1]  < bot
    top                 := top * DnBoxSize
    bot                 := bot * DnBoxSize

 
plot(bot,   "Bot",      #ff0000) // Green
plot(top,   "Top",      #00ff00) // Red

mid                     = ((top-bot)/2)+bot 
plot(mid,   "Mid", color.gray)

TradeAboveMAFilter      = sma(close, TradeAboveMAFilterPer)
plot(TradeAboveMAFilter, "Trade AboveMAF Filter", color.yellow, 3, style=plot.style_circles)

// col = high[1] < top and high >= top ? color.white : na
// bgcolor(col)


///     Shares
RiskRange                   = close * abs(DnBoxSize - 1) // 0.9 - 1 == 1.10 // 10% abs so you don't get a neg number NB NB
Shares                      = RiskPerTrade / RiskRange 
//plot(close-RiskRange, "RiskRange", color.fuchsia)

Enter   =   high >= top
             and close[1] > TradeAboveMAFilter
             and strategy.opentrades[0] == strategy.opentrades[1]
             and strategy.opentrades[1] == strategy.opentrades[2] 
             and strategy.opentrades[2] == strategy.opentrades[3]
             and strategy.opentrades[3] == strategy.opentrades[4] 
             and strategy.opentrades[4] == strategy.opentrades[5]
             and strategy.opentrades[5] == strategy.opentrades[6]
             // won't enter if new positon was taken in the last 6 bars
             // need better code for this.

///     Buy & Sell
//  (new highs)    and  (Close above moving average filter) and (No new trades were taken receently)
if  Enter //(high >= top)  and  (close[1] > TradeAboveMAFilter) and strategy.opentrades[0] == strategy.opentrades[1] 
    strategy.order("En", strategy.long, qty=Shares, limit=top)//, stop=top)
    
//barcolor(strategy.position_size != 0 ? #00ff00 : color.gray)


// ///     If ONE Position THEN this Stop Because: 
// if  strategy.position_size == 1
//     strategy.exit("Ex", "En", stop=bot)
///     If it has more than one trad OPEN
if  strategy.position_size > 0
    strategy.exit("Ex", "En", stop=bot[2] )   // puts stop on old bot

//plot(strategy.position_avg_price, "Avg Price", color.yellow)