Chiến lược chênh lệch giá trung bình động kép


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

Chiến lược chênh lệch giá trung bình động kép

Tổng quan

Chiến lược này là một chiến lược sử dụng hình dạng đường hai chiều để thực hiện giao dịch. Nó kết hợp hai chiến lược con là 123 hình dạng đảo ngược và yếu tố giao dịch giới hạn ((FVE) để thực hiện giao dịch khi cả hai phát ra tín hiệu mua hoặc bán cùng một lúc.

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

123 biến đổi hình dạng

Chiến lược này bắt nguồn từ Ulf Jensen trong cuốn sách “Làm thế nào để kiếm được lợi nhuận gấp ba lần trên thị trường tương lai”.

  • Khi giá đóng cửa tăng 2 ngày liên tiếp và chỉ số Stoch chậm hơn 50 ngày, hãy làm nhiều hơn;
  • Khi giá đóng cửa giảm 2 ngày liên tiếp và chỉ số Stoch nhanh hơn 50 ngày thứ 9, hãy tháo lỗ.

Các nguyên tố có khối lượng giao dịch giới hạn (FVE)

FVE là một chỉ số khối lượng giao dịch thuần túy. Nó dựa trên giá tăng và giảm và khối lượng giao dịch lớn để xác định tiền đang chảy vào hoặc chảy ra.

Tín hiệu FVE được phát ra khi hai thanh gần nhất tăng hoặc giảm cùng một lúc.

Phân tích lợi thế

Chiến lược này kết hợp hai chỉ số để xác định xu hướng thị trường và dòng tiền, có thể ngăn chặn hiệu quả các tín hiệu sai. Và cả hai chiến lược con đều có một số tính năng đảo ngược, do đó, có thể thực hiện hoạt động đấu giá để kiếm lợi nhuận.

Ngoài ra, khi hình dạng hai đường ngang xuất hiện, nó đại diện cho xu hướng ngắn hạn và trung hạn nhất quán, do đó có tính ổn định mạnh mẽ hơn.

Phân tích rủi ro

Chiến lược này dựa trên hình dạng đường thẳng, dễ bị tín hiệu sai dẫn đến thua lỗ khi thị trường bị biến động. Ngoài ra, thất bại đảo ngược là rủi ro phổ biến.

Bạn có thể làm cho chiến lược mạnh hơn bằng cách điều chỉnh các tham số thích hợp, hoặc bạn có thể đặt dừng để kiểm soát rủi ro.

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

Có thể thử nghiệm nhiều loại chỉ số đường trung bình để tìm kiếm sự phù hợp tốt nhất. Các chỉ số phán đoán phụ trợ khác cũng có thể được đưa ra, chẳng hạn như chỉ số mạnh yếu, chỉ số dao động, v.v. để tránh tín hiệu sai.

Ngoài ra, có thể nghiên cứu làm thế nào để điều chỉnh các tham số theo tình trạng thị trường động để làm cho chiến lược thích ứng hơn. Cũng có thể khám phá các thuật toán học máy và mạng lưới thần kinh để thực hiện các tham số thích ứng.

Tóm tắt

Chiến lược này kết hợp hai chỉ số tư duy đảo ngược để đánh giá, có thể tránh rủi ro đến một mức độ nào đó. Tuy nhiên, do phụ thuộc vào hình thức cân bằng, vẫn cần tối ưu hóa hơn nữa để làm cho chiến lược ổn định hơn. Nhìn chung, chiến lược này cung cấp một khuôn khổ cơ bản cho giao dịch mạo hiểm ngắn và đáng để nghiên cứu thêm.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/08/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 FVE is a pure volume indicator. Unlike most of the other indicators 
// (except OBV), price change doesn?t come into the equation for the FVE (price 
// is not multiplied by volume), but is only used to determine whether money is 
// flowing in or out of the stock. This is contrary to the current trend in the 
// design of modern money flow indicators. The author decided against a price-volume 
// indicator for the following reasons:
// - A pure volume indicator has more power to contradict.
// - The number of buyers or sellers (which is assessed by volume) will be the same, 
//     regardless of the price fluctuation.
// - Price-volume indicators tend to spike excessively at breakouts or breakdowns.
//
// 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


FVE(Period,Factor) =>
    pos = 0
    nRes = 0.0
    xhl2 = hl2
    xhlc3 = hlc3
    xClose = close
    xVolume = volume
    xSMAV = sma(xVolume, Period)
    nMF = xClose - xhl2 + xhlc3 - xhlc3[1]
    nVlm = iff(nMF > Factor * xClose / 100,  xVolume, 
             iff(nMF < -Factor * xClose / 100, -xVolume, 0))
    nRes := nz(nRes[1],0) + ((nVlm / xSMAV) / Period) * 100
    pos := iff(nRes > nRes[1] and nRes > nRes[2], 1,
             iff(nRes < nRes[1] and nRes < nRes[2], -1, nz(pos[1], 0)))   
    pos

strategy(title="Combo Backtest 123 Reversal & Finite Volume Elements (FVE)", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Period = input(18, minval=1)
Factor = input(0.6, minval=0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVE = FVE(Period,Factor)
pos = iff(posReversal123 == 1 and posFVE == 1 , 1,
	   iff(posReversal123 == -1 and posFVE == -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 )