Chiến lược cân bằng dài-ngắn dựa trên điểm trục và đường trung bình động bình phương nhỏ nhất


Ngày tạo: 2023-12-25 17:47:11 sửa đổi lần cuối: 2023-12-25 17:47:11
sao chép: 0 Số nhấp chuột: 597
1
tập trung vào
1623
Người theo dõi

Chiến lược cân bằng dài-ngắn dựa trên điểm trục và đường trung bình động bình phương nhỏ nhất

Tổng quan

Đây là một chiến lược giao dịch định lượng chỉ làm nhiều đầu, nó kết hợp các ưu điểm của chiến lược đảo ngược điểm trung tâm và chiến lược trung bình di chuyển nhỏ nhất. Chiến lược này đi vào thị trường theo xu hướng chính trong thị trường bò, đánh giá tín hiệu đảo ngược nhiều hơn sau khi quan sát sự hình thành đường ray của điểm trung tâm; đồng thời, nó yêu cầu giá mua lại cao hơn trung bình di chuyển nhỏ nhất, làm cho chiến lược ổn định hơn.

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

Chiến lược này kết hợp chiến lược đảo ngược điểm trung tâm và chiến lược trung bình di chuyển nhỏ nhất. Chiến lược đảo ngược điểm trung tâm sẽ tính toán giá cao nhất và giá thấp nhất trong một ngày giao dịch nhất định trước đây, để có được đường lên và đường xuống. Khi giá phá vỡ đường lên, đánh giá là tín hiệu đảo ngược.

Cụ thể, chiến lược này trước tiên tính giá cao nhất trong 3 đường K và giá thấp nhất trong 16 đường K trước đó, để có được điểm trục trên và dưới đường ray. Khi đường ray trên hình thành, hãy đặt nhiều; khi đường ray dưới hình thành, hãy đặt bằng. Đồng thời, nó yêu cầu giá đóng cửa cao hơn trung bình di chuyển tối thiểu hai lần trong 20 ngày.

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

  1. Kết hợp lợi thế của hai chiến lược để đưa ra quyết định giao dịch ổn định và đáng tin cậy hơn

  2. Chiến lược điểm trung tâm có thể xác định điểm đảo ngược, lọc các đột phá giả bằng trung bình di chuyển nhỏ nhất, giảm rủi ro giao dịch

  3. Chỉ cần làm nhiều hơn, phù hợp với mong đợi của hầu hết mọi người.

  4. Chiến lược đơn giản, rõ ràng, dễ hiểu và tối ưu hóa

  5. Tần suất giao dịch vừa, phù hợp với hoạt động đường dài trung bình

Phân tích rủi ro

  1. Không thể nắm bắt cơ hội giảm giá nhanh chóng

  2. Có một số sự chậm trễ, có thể bỏ lỡ một số cơ hội kiếm tiền

  3. Khi chuyển đổi bò và gấu, nó sẽ gây ra tổn thất lớn hơn.

Giải pháp:

  1. Giảm thời gian tính toán và giảm sự chậm trễ

  2. Điều chỉnh các tham số trung bình di chuyển để tối ưu hóa sự tham gia

  3. Tăng chiến lược dừng lỗ, giảm tổn thất đơn lẻ

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

  1. Tham gia vào một loạt các chỉ số xu hướng để cải thiện tính chính xác của phán đoán

  2. Tăng khả năng dự đoán của mô hình học máy, hướng dẫn ra quyết định

  3. Kết hợp với chỉ số biến động, kiểm soát quy mô vị trí

  4. Tối ưu hóa các tham số để tăng tỷ lệ chiến lược

  5. Kiểm tra dữ liệu chu kỳ lâu hơn để xác minh tính ổn định

Tóm tắt

Chiến lược này tích hợp các lợi thế của chiến lược đảo ngược điểm trung tâm và chiến lược trung bình di chuyển tối thiểu hai lần, kiểm soát rủi ro trong khi đánh giá xu hướng đảo ngược, thuộc loại chiến lược vững chắc. Nó có cấu trúc đơn giản, dễ hiểu và kiểm tra, rất phù hợp để học tập và thực hành.

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

//@version=4
//@author exlux99

strategy(title = "Pivot Reversal Upgraded long only", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)
/////////////
//time

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2010, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2031, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
//

length = input(title="Length MA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, length, offset)

//LSMA
leftBars = input(3)
rightBars = input(16)
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond and time_cond? true : (le[1] and high > hprice ? false : le[1])
//leverage
multiplier=input(1.0, step=0.5)
g(v, p) => round(v * (pow(10, p))) / pow(10, p)
risk     = input(100)
leverage = input(1.0, step = 0.5)
c = g((strategy.equity * leverage / open) * (risk / 100), 4)

//entry
strategy.entry("long", strategy.long,c, when=le and close > lsma, comment="long", stop=(hprice + syminfo.mintick) * multiplier)

    
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
strategy.close("long", when=se)