Chiến lược đảo ngược mô hình Momentum Turn


Ngày tạo: 2023-11-15 15:36:39 sửa đổi lần cuối: 2023-11-15 15:36:39
sao chép: 0 Số nhấp chuột: 632
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược mô hình Momentum Turn

Tổng quan

Chiến lược này kết hợp hai chiến lược 123 hình dạng đảo ngược và dễ di chuyển, nhằm mục đích giao dịch bằng cách nắm bắt các điểm biến đổi của giá. Chiến lược 123 hình dạng đảo ngược tạo ra tín hiệu khi giá cổ phiếu hình thành một mô hình cụ thể trong ba ngày liên tiếp. Chiến lược dễ di chuyển (EOM) sử dụng thay đổi giá và khối lượng giao dịch để đánh giá động lực thị trường.

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

Chiến lược này bao gồm hai phần:

  1. 123 chiến lược đảo ngược hình dạng
  • Sử dụng chỉ số Stoch để đánh giá quá mua
  • Khi giá đóng cửa giảm hai ngày liên tiếp và đường nhanh của Stoch cao hơn đường chậm, hãy tháo lỗ
  • Khi giá đóng cửa tăng hai ngày liên tiếp và đường nhanh của Stoch thấp hơn đường chậm
  1. Chiến lược di chuyển dễ dàng
  • Tính trung bình của ngày trước
  • Tính trung bình của khoảng cách so với ngày trước
  • Tính toán tỷ lệ giữa điểm di chuyển và số lượng giao dịch
  • Tăng giá khi tỷ giá lớn hơn mức giảm giá, giảm giá khi tỷ giá nhỏ hơn mức giảm giá

Kết hợp hai tín hiệu, khi Easy of Movement và hình dạng 123 đồng thời làm nhiều tín hiệu, mở nhiều vị trí; khi Easy of Movement và hình dạng 123 đồng thời làm trống tín hiệu, mở vị trí trống.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Kết hợp hình thức kỹ thuật giá cả và động lực thị trường để tăng độ chính xác tín hiệu

  2. 123 hình dạng đảo ngược để nắm bắt các điểm biến, dễ dàng di chuyển để đánh giá động lượng xu hướng, hai thứ này bổ sung cho nhau

  3. Chỉ số Stoch tránh mở lỗ liên tục trong quá trình khôi phục

  4. Logic giao dịch đơn giản, rõ ràng và dễ thực hiện

  5. Các tham số có thể tùy chỉnh để thích ứng với các môi trường thị trường khác nhau

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Quá phụ thuộc vào thiết lập tham số, tham số không đúng có thể dẫn đến giao dịch thường xuyên hoặc bị bỏ phiếu

  2. Nhiều điều kiện lọc được sử dụng cùng nhau, tần số tạo tín hiệu có thể quá thấp

  3. Các chỉ số di động dễ dàng nhạy cảm với biến động thị trường, có thể gây ra tín hiệu sai

  4. Cần kiểm soát quy mô vị trí

  5. Chỉ áp dụng cho cổ phiếu đang có xu hướng, không phù hợp với việc thu hồi thị trường

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

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Tối ưu hóa tham số, điều chỉnh mức độ nghiêm ngặt của điều kiện lọc, cân bằng tần số giao dịch và chất lượng tín hiệu

  2. Tham gia chiến lược dừng lỗ, kiểm soát chặt chẽ lỗ đơn

  3. Trình lọc xu hướng để tránh giao dịch ngược

  4. Thêm mô-đun quản lý tiền để điều chỉnh vị trí theo biến động của tỷ lệ biến động

  5. Sử dụng phương pháp học máy để tối ưu hóa các tham số để phù hợp với thị trường

Tóm tắt

Chiến lược này tích hợp các chỉ số kỹ thuật giá cả và các chỉ số động lực thị trường, xác nhận chất lượng xu hướng đồng thời nắm bắt các điểm biến, có giá trị thực tế cao. Tuy nhiên, cũng cần lưu ý đến nguy cơ kiểm soát tần suất giao dịch, tổn thất đơn lẻ và hoạt động ngược.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/04/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
// This indicator gauges the magnitude of price and volume movement. 
// The indicator returns both positive and negative values where a 
// positive value means the market has moved up from yesterday's value 
// and a negative value means the market has moved down. A large positive 
// or large negative value indicates a large move in price and/or lighter 
// volume. A small positive or small negative value indicates a small move 
// in price and/or heavier volume.
// A positive or negative numeric value. A positive value means the market 
// has moved up from yesterday's value, whereas, a negative value means the 
// market has moved down. 
//
// 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

EOM(BuyZone, SellZone) =>
    pos = 0
    xHigh = high
    xLow = low
    xVolume = volume
    xHalfRange = (xHigh - xLow) * 0.5
    xMidpointMove = mom(xHalfRange, 1)
    xBoxRatio = iff((xHigh - xLow) != 0, xVolume / (xHigh - xLow), 0)
    nRes = iff(xBoxRatio != 0, 1000000 * ((xMidpointMove - xMidpointMove[1]) / xBoxRatio), 0)
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ease of Movement (EOM)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
BuyZone = input(4000, minval=1)
SellZone = input(-4000)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEOM = EOM(BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posEOM == 1 , 1,
	   iff(posReversal123 == -1 and posEOM == -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 )