Chiến lược theo dõi xu hướng kép

Tác giả:ChaoZhang, Ngày: 2023-09-17 18:20:27
Tags:

Tổng quan

Chỉ số này dựa trên chỉ số Aroon để xác định và theo dõi xu hướng theo cả hai hướng. Chỉ số Aroon có thể xác định hiệu quả hướng của xu hướng thị trường. Kết hợp với chỉ số RSI, nó tạo thành một chiến lược theo dõi tương đối hoàn chỉnh.

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

  1. Sử dụng chỉ số Aroon để xác định hướng xu hướng giá. Trên đường 0 cho thấy xu hướng tăng, trong khi dưới đường 0 là xu hướng giảm.

  2. Khi chỉ số Aroon vượt qua trên đường 0 từ dưới, một tín hiệu mua được kích hoạt.

  3. Nếu đã có một vị trí, và giá đóng cửa thấp hơn giá mua, trong khi chỉ số RSI dưới 30, nó được coi là đã bán quá mức, các lệnh mua bổ sung sẽ được đặt.

  4. Khi chỉ số Aroon vượt qua dưới đường 0 từ trên, một tín hiệu thoát hoàn toàn được kích hoạt.

  5. Một mức dừng lỗ 5% được thiết lập. Nếu lỗ vượt quá điểm này, một bước dừng lỗ sẽ được kích hoạt.

Phân tích lợi thế

  1. Sử dụng chỉ số Aroon để xác định hướng xu hướng có thể nắm bắt hiệu quả các điểm xoay thị trường.

  2. Chỉ số RSI giúp xác định các khu vực mua quá mức và bán quá mức, tránh theo đuổi mức cao mới và bán mức thấp trong thời gian thay đổi thị trường.

  3. Giao dịch theo cả hai hướng cho phép kiếm lợi nhuận trong cả thị trường tăng và giảm.

  4. Thiết lập stop loss giúp kiểm soát rủi ro.

Phân tích rủi ro

  1. Chỉ số Aroon có hiệu ứng trì hoãn, có thể bỏ qua sự đảo ngược ngắn hạn và đột ngột.

  2. Nó không thể xử lý hiệu quả các thị trường giới hạn phạm vi, dẫn đến giao dịch không cần thiết.

  3. Giao dịch theo cả hai hướng làm tăng tần suất giao dịch và chi phí hoa hồng.

  4. Các thông số cần điều chỉnh đúng để thích nghi với các khung thời gian và sản phẩm khác nhau.

Hướng dẫn tối ưu hóa

  1. Kết hợp với các chỉ số khác để lọc tín hiệu và giảm lỗi do chậm trễ.

  2. Tăng nghiên cứu định lượng để tối ưu hóa các thông số cho các sản phẩm khác nhau.

  3. Thêm chiến lược thu lợi nhuận để tăng nhân tố lợi nhuận.

  4. Chỉ xem xét giao dịch khi xu hướng rõ ràng để giảm giao dịch không hiệu quả.

Tóm lại

Chiến lược này tích hợp các chỉ số Aroon và RSI để tạo thành một hệ thống giao dịch xu hướng hai hướng tương đối hoàn chỉnh. Nhưng việc tối ưu hóa thêm các tham số và kết hợp với các chỉ số lọc khác vẫn cần thiết để giảm lỗi. Với điều chỉnh tham số và kiểm soát rủi ro thích hợp, chiến lược này có tiềm năng đạt được lợi nhuận dư thừa tương đối ổn định.


/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-12 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/
// © mohanee

//@version=4
// strategy(title="Aroon Oscillator Strategy", overlay=false, pyramiding=2,    initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 

//variables BEGIN
aroonLength=input(169,title="Aroon Length")   //square root of 13
rsiLength=input(13, title="RSI Length")
stopLoss = input(title="Stop Loss%", defval=5, minval=1)
//variables  END

//RSI 
rsi13=rsi(close,rsiLength)




// Drawings

//Aroon oscillator

arronUpper = 100 * (highestbars(high, aroonLength+1) + aroonLength)/aroonLength
aroonLower = 100 * (lowestbars(low, aroonLength+1) + aroonLength)/aroonLength

aroonOsc  = arronUpper - aroonLower

aroonMidpoint = 0
oscPlot = plot(aroonOsc, color=color.green)
midLine= plot(aroonMidpoint, color=color.green)
topLine = plot(90,style=plot.style_circles, color=color.green)
bottomLine = plot(-90,style=plot.style_circles, color=color.red)

fill(oscPlot, midLine, color=aroonOsc>0?color.green:color.red, transp=50)
fill(topLine,bottomLine, color=color.blue)


// RSI 
//plot(rsi13, title="RSI", linewidth=2, color=color.purple)
//hline(50, title="Middle Line", linestyle=hline.style_dotted)
//obLevel = hline(80, title="Overbought", linestyle=hline.style_dotted)
//osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
//fill(obLevel, osLevel, title="Background", color=rsi13 >=30 ? color.green:color.purple, transp=65)  // longTermRSI >=50


//Entry--

strategy.entry(id="Long Entry", comment="LE",  long=true,  when= crossover(aroonOsc,0)   )     //crossover(close,ema34)  //and close>ema34  //crossover(rsi5Val,rsiBuyLine)

//Add
if(strategy.position_size>=1 and close < strategy.position_avg_price and crossover(rsi13,30))
    strategy.order(id="Long Entry", comment="Add", long=true )     //crossover(close,ema34)  //and close>ema34  //crossover(rsi5Val,rsiBuyLine)  --


stopLossVal= abs(strategy.position_size)>1 ? strategy.position_avg_price*(1-0.5) : 0.00 


//close partial
strategy.close(id="Long Entry", comment="Partial X",  qty=strategy.position_size/3, when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 90) )   //close<ema55 and rsi5Val<20 //ema34<ema55 


//close All
strategy.close(id="Long Entry", comment="Exit All",  when=abs(strategy.position_size)>=1 and crossunder(aroonOsc, 0) )   //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89

//close All on stop loss
strategy.close(id="Long Entry", comment="Stoploss X",  when=abs(strategy.position_size)>=1 and close < stopLossVal )   //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89


Thêm nữa