
Đây là một chiến lược giao dịch dựa trên chỉ số xu hướng sóng của LazyBear. Chiến lược này sử dụng xu hướng sóng của biến động giá để đánh giá tình trạng quá mua và quá bán của thị trường, thực hiện longing và shorting.
Chiến lược này chủ yếu dựa trên chỉ số xu hướng sóng của LazyBear. Đầu tiên tính giá trung bình của giá ((AP), sau đó tính trung bình di chuyển chỉ số của AP ((ESA) và trung bình di chuyển chỉ số của biến động giá tuyệt đối ((D)). Dựa trên đó tính chỉ số dao động ((CI), sau đó tính trung bình di chuyển chỉ số của CI, để có được đường xu hướng sóng ((WT)).
Đây là một chiến lược theo dõi xu hướng rất đơn giản nhưng rất thực tế.
Chiến lược này cũng có một số rủi ro:
Các giải pháp chính là:
Chiến lược này có thể được tối ưu hóa hơn nữa:
Chiến lược này là một chiến lược theo dõi xu hướng sóng rất đơn giản và thực tế. Nó phát ra tín hiệu giao dịch bằng cách tính toán xu hướng biến động của giá, xác định tình trạng quá mua quá bán của thị trường, sử dụng giao điểm vàng và giao điểm chết của đường dây WT. Chiến lược hoạt động đơn giản và dễ thực hiện.
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note.
//
//@version=4
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
ap = hlc3
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
wt1 = tci
wt2 = sma(wt1,4)
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)
plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)
//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
longCondition = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)
strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())
//strategy.entry(id="Short Entry", long=false, when=shortCondition)