Chiến lược Combo Breakout Bandpass

Tác giả:ChaoZhang, Ngày: 2024-02-01 10:45:12
Tags:

img

Tổng quan

Đây là một chiến lược kết hợp được thúc đẩy bởi hai yếu tố - đảo ngược và băng thông, đạt được sự chồng chéo nhiều yếu tố và thích nghi với các điều kiện thị trường khác nhau.

Chiến lược logic

Chiến lược bao gồm hai tiểu chiến lược:

  1. 123 Chiến lược đảo ngược: Khi giá đóng giảm trong hai ngày liên tiếp, nếu giá đóng hôm nay phá vỡ mức giá thấp nhất trong hai ngày trước, và đường nhanh của dao động Stochastic 9 ngày vượt qua đường chậm, đi dài. Khi giá đóng tăng trong hai ngày liên tiếp, nếu giá đóng hôm nay giảm xuống dưới mức giá cao nhất trong hai ngày trước, và đường nhanh vượt qua đường chậm, đi ngắn.

  2. Bộ lọc băng thông: Tính toán chỉ số băng thông trong một khoảng thời gian nhất định, đi dài khi nó vượt quá ngưỡng, và đi ngắn khi dưới.

Các tín hiệu kết hợp là: có vị trí dài nếu cả hai chiến lược cung cấp tín hiệu dài, có vị trí ngắn nếu cả hai cung cấp tín hiệu ngắn, nếu không xóa tất cả các vị trí.

Ưu điểm

  • Được thúc đẩy bởi hai yếu tố, thích nghi với các điều kiện thị trường khác nhau, có lợi nhuận trên các chế độ
  • 123 đảo ngược nắm bắt cơ hội đảo ngược trong thị trường giới hạn phạm vi
  • Bộ lọc băng thông theo dõi xu hướng trong các thị trường xu hướng
  • Tín hiệu kết hợp xác minh và tránh giao dịch sai

Rủi ro

  • Các thông số không chính xác có thể gây ra giao dịch quá mức
  • Nhiều lỗ có thể xảy ra trong thị trường hỗn loạn
  • Cần theo dõi chi phí giao dịch

Tăng cường

  • Điều chỉnh các tham số bộ lọc băng thông để tối ưu hóa tính toán băng thông
  • Điều chỉnh 123 tham số đảo ngược để tối ưu hóa xác định đảo ngược dài / ngắn
  • Thêm stop loss vào kiểm soát lỗ cho các giao dịch đơn

Tóm lại

Chiến lược này tích hợp các yếu tố đảo ngược và xu hướng để đạt được giao dịch định lượng dựa trên nhiều yếu tố. Việc xác minh hai yếu tố làm giảm khả năng giao dịch sai, làm cho chiến lược hoạt động tốt trên các thị trường khác nhau.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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 related article is copyrighted material from
// Stocks & Commodities Mar 2010
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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


Bandpass_Filter(Length, Delta, TriggerLevel) =>
    xPrice = hl2
    beta = cos(3.14 * (360 / Length) / 180)
    gamma = 1 / cos(3.14 * (720 * Delta / Length) / 180)
    alpha = gamma - sqrt(gamma * gamma - 1)
    BP = 0.0
    pos = 0.0
    BP := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(BP[1]) - alpha * nz(BP[2])
    pos := iff(BP > TriggerLevel, 1,
	       iff(BP <= TriggerLevel, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bandpass Filter", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthBF = input(20, minval=1)
Delta = input(0.5)
TriggerLevel = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBandpass_Filter = Bandpass_Filter(LengthBF, Delta, TriggerLevel)
pos = iff(posReversal123 == 1 and posBandpass_Filter == 1 , 1,
	   iff(posReversal123 == -1 and posBandpass_Filter == -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 ? red: possig == 1 ? green : blue ) 

Thêm nữa