
Chiến lược theo dõi xu hướng giá động sử dụng nhiều chỉ số động lực để xác định xu hướng giá, thiết lập vị trí trong giai đoạn bắt đầu xu hướng, khóa lợi nhuận bằng cách thiết lập dừng lỗ để theo dõi xu hướng giá.
Chiến lược theo dõi xu hướng giá động lực sử dụng các chỉ số kỹ thuật sau:
Chỉ số năng lượng không gian: Chỉ số này phản ánh mối quan hệ tương đối giữa lực lượng nhiều đầu và lực lượng không đầu. Năng lượng không gian> 0 đại diện cho lực lượng nhiều đầu lớn hơn lực lượng không đầu, giá tăng; ngược lại, giá giảm. Chiến lược sử dụng chỉ số này để so sánh lực lượng không gian và dự đoán hướng giá.
Chỉ số lệch: Chỉ số này đánh giá sự đảo ngược xu hướng bằng cách tính toán giá và khối lượng giao dịch. Chiến lược sử dụng tín hiệu lệch như thời gian vào.
Đường hầm Donchian: Chỉ số này xây dựng đường hầm thông qua giá cao nhất và giá thấp nhất, biên giới của đường hầm có thể được sử dụng làm điểm hỗ trợ và kháng cự. Chiến lược sử dụng đường hầm để đánh giá xu hướng.
Chiến lược dựa trên nhiều chỉ số trên để đánh giá xu hướng giá và thời gian đảo ngược, trong giai đoạn xu hướng bắt đầu, thiết lập vị trí đầu nhiều hoặc vị trí đầu trống dựa trên tín hiệu chỉ số. Sau đó, dựa trên điểm dừng dừng lỗ để khóa lợi nhuận trong thời gian, để nắm bắt xu hướng giá.
Chiến lược này có những ưu điểm sau:
Sử dụng nhiều chỉ số để đánh giá xu hướng, giảm khả năng sai lầm.
Sử dụng chỉ số để nắm bắt chính xác các điểm đảo ngược xu hướng.
Kết hợp các kênh và đường trung bình di chuyển để xác định xu hướng lớn.
Cài đặt điểm dừng dừng để có thể dừng lại kịp thời và tránh rút lui mở rộng.
Có thể điều chỉnh theo các tham số, áp dụng cho các giao dịch theo chu kỳ và giống khác nhau.
Lập luận chiến lược rõ ràng và dễ hiểu, dễ dàng để tối ưu hóa sau này.
Chiến lược này cũng có một số rủi ro:
Việc đánh giá kết hợp nhiều chỉ số làm tăng xác suất tín hiệu sai, cần điều chỉnh các tham số để tối ưu hóa trọng số chỉ số.
Cài đặt điểm dừng quá nhỏ có thể làm tăng xác suất dừng, đặt quá lớn có thể mở rộng rút lui. Cần cân nhắc toàn diện để xác định điểm dừng hợp lý.
Các tham số khác nhau của chu kỳ thị trường cần được điều chỉnh, và việc áp dụng mù quáng có thể dẫn đến không thích nghi với môi trường thị trường.
Cần có đủ tiền để hỗ trợ giao dịch đồng thời nhiều đơn vị, nếu không sẽ khó có được lợi nhuận vượt quá.
Các giao dịch theo quy trình có rủi ro về sự phù hợp được đánh giá lại và hiệu quả của đĩa cứng có một số bất ổn.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tối ưu hóa các tham số chỉ số, tìm ra sự kết hợp tối ưu của các tham số cho các chu kỳ và giống khác nhau.
Thêm thuật toán học máy để tự động tìm các tham số tối ưu.
Thêm cơ chế dừng lỗ thích ứng, điều chỉnh điểm dừng lỗ theo tình hình thị trường.
Kết hợp các yếu tố tần số cao và các chỉ số cơ bản, tăng alpha của chiến lược.
Phát triển khung kiểm tra tự động, điều chỉnh các tham số và xác minh hiệu quả giao dịch.
Tiếp theo, các nhà đầu tư có thể sử dụng các mô-đun quản lý rủi ro để kiểm soát quy mô vị trí và giảm rút tiền.
Thêm giao dịch mô phỏng và xác minh thực tế, tăng sự ổn định của chiến lược.
Chiến lược này sử dụng nhiều chỉ số động lực để đánh giá xu hướng giá, và thiết lập điểm dừng để khóa lợi nhuận. Chiến lược này có thể nắm bắt xu hướng giá một cách hiệu quả, có tính ổn định mạnh mẽ. Bằng cách điều chỉnh các tham số, tối ưu hóa cấu trúc và kiểm soát rủi ro, chiến lược này có thể tăng cường hiệu quả hơn nữa và giảm rủi ro giao dịch. Chiến lược này cung cấp một chương trình theo dõi xu hướng đáng tin cậy và dễ sử dụng để giao dịch số lượng.
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mbagheri746
//@version=4
strategy("Bagheri IG Ether v2", overlay=true, margin_long=100, margin_short=100)
TP = input(3000, minval = 1 , title ="Take Profit")
SL = input(2200, minval = 1 , title ="Stop Loss")
//_________________ RoC Definition _________________
rocLength = input(title="ROC Length", type=input.integer, minval=1, defval=186)
smoothingLength = input(title="Smoothing Length", type=input.integer, minval=1, defval=50)
src = input(title="Source", type=input.source, defval=close)
ma = ema(src, smoothingLength)
mom = change(ma, rocLength)
sroc = nz(ma[rocLength]) == 0
? 100
: mom == 0
? 0
: 100 * mom / ma[rocLength]
//srocColor = sroc >= 0 ? #0ebb23 : color.red
//plot(sroc, title="SROC", linewidth=2, color=srocColor, transp=0)
//hline(0, title="Zero Level", linestyle=hline.style_dotted, color=#989898)
//_________________ Donchian Channel _________________
length1 = input(53, minval=1, title="Upper Channel")
length2 = input(53, minval=1, title="Lower Channel")
offset_bar = input(91,minval=0, title ="Offset Bars")
upper = highest(length1)
lower = lowest(length2)
basis = avg(upper, lower)
DC_UP_Band = upper[offset_bar]
DC_LW_Band = lower[offset_bar]
l = plot(DC_LW_Band, style=plot.style_line, linewidth=1, color=color.red)
u = plot(DC_UP_Band, style=plot.style_line, linewidth=1, color=color.aqua)
fill(l,u,color = color.new(color.aqua,transp = 90))
//_________________ Bears Power _________________
wmaBP_period = input(65,minval=1,title="BearsP WMA Period")
line_wma = ema(close, wmaBP_period)
BP = low - line_wma
//_________________ Balance of Power _________________
ES_BoP=input(15, title="BoP Exponential Smoothing")
BOP=(close - open) / (high - low)
SBOP = rma(BOP, ES_BoP)
//_________________ Alligator _________________
//_________________ CCI _________________
//_________________ Moving Average _________________
sma_period = input(74, minval = 1 , title = "SMA Period")
sma_shift = input(37, minval = 1 , title = "SMA Shift")
sma_primary = sma(close,sma_period)
SMA_sh = sma_primary[sma_shift]
plot(SMA_sh, style=plot.style_line, linewidth=2, color=color.yellow)
//_________________ Long Entry Conditions _________________//
MA_Lcnd = SMA_sh > low and SMA_sh < high
ROC_Lcnd = sroc < 0
DC_Lcnd = open < DC_LW_Band
BP_Lcnd = BP[1] < BP[0] and BP[1] < BP[2]
BOP_Lcnd = SBOP[1] < SBOP[0]
//_________________ Short Entry Conditions _________________//
MA_Scnd = SMA_sh > low and SMA_sh < high
ROC_Scnd = sroc > 0
DC_Scnd = open > DC_UP_Band
BP_Scnd = BP[1] > BP[0] and BP[1] > BP[2]
BOP_Scnd = SBOP[1] > SBOP[0]
//_________________ OPEN POSITION __________________//
if strategy.position_size == 0
strategy.entry(id = "BUY", long = true , when = MA_Lcnd and ROC_Lcnd and DC_Lcnd and BP_Lcnd and BOP_Lcnd)
strategy.entry(id = "SELL", long = false , when = MA_Scnd and ROC_Scnd and DC_Scnd and BP_Scnd and BOP_Scnd)
//_________________ CLOSE POSITION __________________//
strategy.exit(id = "CLOSE BUY", from_entry = "BUY", profit = TP , loss = SL)
strategy.exit(id = "CLOSE SELL", from_entry = "SELL" , profit = TP , loss = SL)
//_________________ TP and SL Plot __________________//
currentPL= strategy.openprofit
pos_price = strategy.position_avg_price
open_pos = strategy.position_size
TP_line = (strategy.position_size > 0) ? (pos_price + TP/100) : strategy.position_size < 0 ? (pos_price - TP/100) : 0.0
SL_line = (strategy.position_size > 0) ? (pos_price - SL/100) : strategy.position_size < 0 ? (pos_price + SL/100) : 0.0
// hline(TP_line, title = "Take Profit", color = color.green , linestyle = hline.style_dotted, editable = false)
// hline(SL_line, title = "Stop Loss", color = color.red , linestyle = hline.style_dotted, editable = false)
Tline = plot(TP_line != 0.0 ? TP_line : na , title="Take Profit", color=color.green, trackprice = true, show_last = 1)
Sline = plot(SL_line != 0.0 ? SL_line : na, title="Stop Loss", color=color.red, trackprice = true, show_last = 1)
Pline = plot(pos_price != 0.0 ? pos_price : na, title="Stop Loss", color=color.gray, trackprice = true, show_last = 1)
fill(Tline , Pline, color = color.new(color.green,transp = 90))
fill(Sline , Pline, color = color.new(color.red,transp = 90))
//_________________ Alert __________________//
//alertcondition(condition = , title = "Position Alerts", message = "Bagheri IG Ether\n Symbol: {{ticker}}\n Type: {{strategy.order.id}}")
//_________________ Label __________________//
inMyPrice = input(title="My Price", type=input.float, defval=0)
inLabelStyle = input(title="Label Style", options=["Upper Right", "Lower Right"], defval="Lower Right")
posColor = color.new(color.green, 25)
negColor = color.new(color.red, 25)
dftColor = color.new(color.aqua, 25)
posPnL = (strategy.position_size != 0) ? (close * 100 / strategy.position_avg_price - 100) : 0.0
posDir = (strategy.position_size > 0) ? "long" : strategy.position_size < 0 ? "short" : "flat"
posCol = (strategy.openprofit > 0) ? posColor : (strategy.openprofit < 0) ? negColor : dftColor
myPnL = (inMyPrice != 0) ? (close * 100 / inMyPrice - 100) : 0.0
var label lb = na
label.delete(lb)
lb := label.new(bar_index, close,
color=posCol,
style=inLabelStyle=="Lower Right"?label.style_label_upper_left:label.style_label_lower_left,
text=
"╔═══════╗" +"\n" +
"Pos: " +posDir +"\n" +
"Pos Price: "+tostring(strategy.position_avg_price) +"\n" +
"Pos PnL: " +tostring(posPnL, "0.00") + "%" +"\n" +
"Profit: " +tostring(strategy.openprofit, "0.00") + "$" +"\n" +
"TP: " +tostring(TP_line, "0.00") +"\n" +
"SL: " +tostring(SL_line, "0.00") +"\n" +
"╚═══════╝")