Chiến lược kép của việc nắm bắt xu hướng đảo ngược và dừng lỗ động


Ngày tạo: 2024-02-05 09:54:13 sửa đổi lần cuối: 2024-02-05 09:54:13
sao chép: 0 Số nhấp chuột: 558
1
tập trung vào
1617
Người theo dõi

Chiến lược kép của việc nắm bắt xu hướng đảo ngược và dừng lỗ động

Tổng quan

Chiến lược này là một chiến lược kép, kết hợp chiến lược nắm bắt xu hướng đảo ngược và chiến lược dừng động, nhằm mục đích nắm bắt xu hướng đảo ngược đồng thời thiết lập dừng động để kiểm soát rủi ro.

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

Chiến lược nắm bắt xu hướng đảo ngược

Chiến lược này dựa trên các chỉ số ngẫu nhiên K và D. Nó tạo ra tín hiệu mua khi giá giảm hai ngày liên tiếp và K tăng hơn D. Nó tạo ra tín hiệu bán khi giá tăng hai ngày liên tiếp và K giảm dưới D. Điều này có thể bắt được xu hướng đảo ngược giá.

Chiến lược dừng lỗ động

Chiến lược này dựa trên sự biến động của giá và độ lệch để thiết lập điểm dừng động. Nó tính toán sự biến động của giá cao và thấp trong một khoảng thời gian gần đây, sau đó kết hợp với độ lệch để xác định giá dừng động hiện đang ở kênh lên hoặc kênh xuống. Điều này có thể điều chỉnh vị trí dừng lỗ theo môi trường thị trường.

Hai chiến lược được sử dụng kết hợp để kiểm soát rủi ro bằng cách thiết lập dừng động trong khi bắt được tín hiệu đảo ngược.

Phân tích lợi thế

  • Có khả năng nắm bắt các điểm biến động giá, phù hợp với giao dịch đảo ngược
  • Thiết lập dừng động, có thể điều chỉnh vị trí dừng tùy theo môi trường thị trường
  • Xác nhận tín hiệu kép, tránh tín hiệu giả
  • Kiểm soát rủi ro, đảm bảo lợi nhuận

Phân tích rủi ro

  • Rủi ro thất bại của tín hiệu đảo ngược giá
  • Rủi ro đặt tham số. Thiếu đặt tham số có thể ảnh hưởng đến hiệu quả của chiến lược
  • Rủi ro về tính thanh khoản: Một số loại giao dịch có tính thanh khoản kém, không thể dừng lỗ

Bạn có thể kiểm soát rủi ro bằng cách tối ưu hóa các tham số, ngăn chặn nghiêm ngặt và chọn các giống có tính thanh khoản tốt.

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

  • Tối ưu hóa các tham số chỉ số ngẫu nhiên, tìm kiếm sự kết hợp tham số tốt nhất
  • Tối ưu hóa các tham số dừng để tìm vị trí dừng tối ưu
  • Tăng các điều kiện lọc để tránh đặt hàng trong thị trường bất ổn
  • Thêm mô-đun quản lý vị thế để kiểm soát tổn thất tối đa

Bằng cách tối ưu hóa tổng hợp, các chiến lược có thể nắm bắt được xu hướng đảo ngược trong khi kiểm soát rủi ro.

Tóm tắt

Chiến lược này kết hợp hai chiến lược bắt đầu xu hướng đảo ngược và dừng động, có thể bắt được điểm biến động giá và có thể thiết lập rủi ro kiểm soát dừng động, là một chiến lược giao dịch ngắn hạn tương đối ổn định. Bằng cách tiếp tục tối ưu hóa giám sát, chiến lược này có khả năng thu được lợi nhuận ổn định.

Mã nguồn chiến lược
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/12/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//  The Kase Dev Stops system finds the optimal statistical balance between letting profits run, 
//  while cutting losses.  Kase DevStop seeks an ideal stop level by accounting for volatility (risk),
//  the variance in volatility (the change in volatility from bar to bar), and volatility skew 
//  (the propensity for volatility to occasionally spike incorrectly).
//  Kase Dev Stops are set at points at which there is an increasing probability of reversal against 
//  the trend being statistically significant based on the log normal shape of the range curve.  
//  Setting stops will help you take as much risk as necessary to stay in a good position, but not more.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

KaseDevStops(Length, Level) =>
    pos = 0.0
    RWH = (high - low[Length]) / (atr(Length) * sqrt(Length))
    RWL = (high[Length] - low) / (atr(Length) * sqrt(Length))
    Pk = wma((RWH-RWL),3)
    AVTR = sma(highest(high,2) - lowest(low,2), 20)
    SD = stdev(highest(high,2) - lowest(low,2),20)
    Val4 = iff(Pk>0, highest(high-AVTR-3*SD,20), lowest(low+AVTR+3*SD,20))
    Val3 = iff(Pk>0, highest(high-AVTR-2*SD,20), lowest(low+AVTR+2*SD,20))
    Val2 = iff(Pk>0, highest(high-AVTR-SD,20), lowest(low+AVTR+SD,20))
    Val1 = iff(Pk>0, highest(high-AVTR,20), lowest(low+AVTR,20))
    ResPrice = iff(Level == 4, Val4,
                 iff(Level == 3, Val3,
                  iff(Level == 2, Val2,
                     iff(Level == 1, Val1, Val4))))
    pos := iff(close < ResPrice , -1, 1)
    pos

strategy(title="Combo Backtest 123 Reversal & Kase Dev Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthKDS = input(30, minval=2, maxval = 100)
LevelKDS = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKaseDevStops = KaseDevStops(LengthKDS, LevelKDS)
pos = iff(posReversal123 == 1 and posKaseDevStops == 1 , 1,
	   iff(posReversal123 == -1 and posKaseDevStops == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )