Chiến lược theo xu hướng hai chiều


Ngày tạo: 2023-09-17 18:20:27 sửa đổi lần cuối: 2023-09-17 18:20:27
sao chép: 2 Số nhấp chuột: 695
1
tập trung vào
1617
Người theo dõi

Tổng quan

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

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

  1. Sử dụng chỉ số Aroon để xác định xu hướng của giá. Chỉ số trên đường 0 là xu hướng tăng, dưới đường 0 là xu hướng giảm.

  2. Khi chỉ số Aroon vượt qua đường 0 từ phía dưới, thực hiện giao dịch mua.

  3. Nếu đã xây dựng kho và giá đóng cửa thấp hơn giá mua, và RSI thấp hơn 30, được coi là bán quá mức, đặt thêm kho.

  4. Khi chỉ số Aroon giảm xuống dưới đường 0 từ trên, hãy bán toàn bộ.

  5. Thiết lập điểm dừng lỗ là 5%, nếu lỗ vượt quá điểm đó, hãy dừng lỗ và bán.

Phân tích lợi thế

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

  2. Chỉ số RSI hỗ trợ xác định vùng quá mua quá bán, tránh theo đuổi giá cao và giá thấp tại các điểm biến động của thị trường.

  3. Giao dịch hai chiều có thể tạo ra lợi nhuận trong cả hai môi trường thị trường tăng và giảm.

  4. Thiết lập điểm dừng sẽ giúp kiểm soát rủi ro.

Phân tích rủi ro

  1. Chỉ số Aroon bị tụt hậu, có thể bỏ lỡ sự đảo ngược ngắn hạn và đột ngột.

  2. Không xử lý hiệu quả thị trường sẽ tạo ra nhiều giao dịch không cần thiết.

  3. Giao dịch hai chiều làm tăng tần suất giao dịch và chi phí phí.

  4. Cần điều chỉnh các tham số thích hợp để thích ứng với các chu kỳ và giống khác nhau.

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

  1. Kết hợp với các chỉ số khác để lọc tín hiệu, giảm khả năng giao dịch sai do trì trệ.

  2. Tăng nghiên cứu định lượng, tối ưu hóa các tham số để phù hợp với các giống khác nhau.

  3. Tăng chiến lược ngăn chặn và tăng lợi nhuận.

  4. Cân nhắc giao dịch chỉ khi có xu hướng rõ ràng, giảm giao dịch không hiệu lực.

Tóm tắt

Chiến lược này kết hợp cả hai chỉ số Aroon và RSI để tạo thành một chiến lược giao dịch xu hướng hai chiều hoàn chỉnh hơn. Tuy nhiên, cần thiết phải thiết lập các tham số tối ưu hóa hơn nữa, kết hợp với các chỉ số lọc khác để giảm khả năng giao dịch sai. Chiến lược này có khả năng thu được lợi nhuận vượt trội ổn định hơn sau khi các tham số được tối ưu hóa và kiểm soát rủi ro.

Mã nguồn chiến lược
/*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