Hệ thống theo dõi thị trường bò

Tác giả:ChaoZhang, Ngày: 2024-01-31 11:01:45
Tags:

img

Tổng quan

Hệ thống theo dõi thị trường bò là một hệ thống giao dịch cơ học dựa trên theo dõi xu hướng. Nó sử dụng các chỉ số xu hướng trên biểu đồ 4 giờ để lọc các tín hiệu giao dịch, trong khi các quyết định vào được thực hiện dựa trên các chỉ số từ biểu đồ 15 phút. Các chỉ số chính bao gồm RSI, Stochastics và MACD. Ưu điểm của hệ thống này là sự kết hợp của nhiều khung thời gian có thể lọc hiệu quả các tín hiệu sai, trong khi các chỉ số khung thời gian ngắn hơn có thể xác định thời gian vào chính xác hơn. Tuy nhiên, cũng có một số rủi ro với hệ thống này, chẳng hạn như quá mức giao dịch và các vấn đề đột phá sai.

Nguyên tắc

RSI, Stochastics, MACD và EMA trên biểu đồ 15 phút cũng cần đồng ý về thiên hướng tăng hoặc giảm để xác định thời gian chính xác nhập cảnh. Điều này cho phép chúng ta tìm ra các điểm vào và ra tốt. Chỉ khi các phán đoán trên cả hai khung thời gian 4 giờ và 15 phút đáp ứng các tiêu chí, hệ thống sẽ tạo ra các tín hiệu giao dịch.

Ưu điểm

  1. Kết hợp nhiều khung thời gian có thể lọc hiệu quả các tín hiệu sai và xác định các xu hướng chính
  2. Các chỉ số chi tiết 15 phút có thể nắm bắt thời gian nhập cảnh tương đối chính xác
  3. Sự kết hợp các chỉ số bao gồm RSI, Stochastics, MACD và các chỉ số kỹ thuật chính khác dễ hiểu và tối ưu hóa
  4. Các phương pháp quản lý rủi ro nghiêm ngặt được áp dụng như lấy lợi nhuận, dừng lỗ, dừng lỗ, vv để kiểm soát hiệu quả rủi ro của các giao dịch riêng lẻ

Rủi ro

  1. Rủi ro giao dịch quá mức: Hệ thống khá nhạy cảm với khung thời gian ngắn hạn, có thể tạo ra nhiều tín hiệu giao dịch, dẫn đến giao dịch quá mức
  2. Rủi ro đột phá sai. Các đánh giá chỉ số ngắn hạn có thể sai, dẫn đến các tín hiệu đột phá sai
  3. Rủi ro thất bại chỉ số: Các chỉ số kỹ thuật có những hạn chế nhất định và có thể thất bại trong điều kiện thị trường cực đoan

Theo đó, hệ thống có thể được tối ưu hóa từ các khía cạnh sau:

  1. Điều chỉnh các tham số chỉ số để làm cho chúng phù hợp hơn với môi trường thị trường khác nhau
  2. Tăng điều kiện lọc để giảm tần suất giao dịch và ngăn chặn giao dịch quá mức
  3. Tối ưu hóa các chiến lược dừng lợi nhuận và dừng lỗ để phù hợp hơn với phạm vi biến động thị trường
  4. Kiểm tra các kết hợp khác nhau của các chỉ số để tìm ra giải pháp tối ưu

Tóm lại

Nhìn chung, Hệ thống theo dõi thị trường bò là một xu hướng rất thực tế sau hệ thống giao dịch cơ học. Nó sử dụng sự kết hợp của các chỉ số nhiều khung thời gian để xác định xu hướng thị trường và thời gian nhập cảnh chính. Với các thiết lập tham số hợp lý và kiểm tra tối ưu hóa liên tục, hệ thống có thể thích nghi với hầu hết các môi trường thị trường và đạt được lợi nhuận ổn định. Tuy nhiên, chúng ta cũng cần nhận thức được một số rủi ro tiềm ẩn và thực hiện các biện pháp chủ động để ngăn ngừa và giảm thiểu những rủi ro này.


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

//@version=4
strategy("Cowabunga System from babypips.com", overlay=true)
// 4 Hour Stochastics
length4 = input(162, minval=1, title="4h StochLength"), smoothK4 = input(48, minval=1, title="4h StochK"), smoothD4 = input(48, minval=1, title="4h StochD")
k4 = sma(stoch(close, high, low, length4), smoothK4)
d4 = sma(k4, smoothD4)

//15 min Stoch
length = input(10, minval=1, title="15min StochLength"), smoothK = input(3, minval=1, title="15min StochK"), smoothD = input(3, minval=1, title="15min StochD")
k = sma(stoch(close, high, low, length), smoothK)
d= sma(k, smoothD)

//4 hour RSI
src1 = close, len1 = input(240, minval=1, title="4H RSI Length")
up1 = rma(max(change(src1), 0), len1)
down1 = rma(-min(change(src1), 0), len1)
rsi4 = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1))

//15 min RSI
src = close, len = input(9, minval=1, title="15M RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi15 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//MACD Settings
source = close
fastLength = input(12, minval=1, title="MACD Fast"), slowLength=input(26,minval=1, title="MACD Slow")
signalLength=input(9,minval=1, title="MACD Signal")
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
signal = ema(macd, signalLength)

// Stops and Profit inputs
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 400, title = "Trailing Stop", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Offset", minval = 0)

// Stops and Profit Targets
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

//Specific Time to Trade
myspecifictradingtimes = input('0500-1600', title="My Defined Hours")

longCondition1 = time(timeframe.period, myspecifictradingtimes) != 0
longCondition2 = rsi4 <= 80
longCondition3 = k4 >= d4 and k4 <= 80
longCondition4 = ema(close, 80) >= ema(close, 162)
allLongerLongs = longCondition1 and longCondition2 and longCondition3 and longCondition4

longCondition5 = rsi15 <= 80
longCondition6 = k >= d and k <= 80 and fastMA >= slowMA
longCondition7 = ema(close, 5) >= ema(close, 10)
allLongLongs = longCondition5 and longCondition6 and longCondition7

if crossover(close, ema(close, 5)) and allLongerLongs and allLongLongs
    strategy.entry("Long", strategy.long, comment="LongEntry")

shortCondition1 = time(timeframe.period, myspecifictradingtimes) != 0
shortCondition2 = rsi4 >= 20
shortCondition3 = k4 <= d4 and k4 >= 20
shortCondition4 = ema(close, 80) <= ema(close, 162)
allShorterShorts = shortCondition1 and shortCondition2 and shortCondition3 and shortCondition4

shortCondition5 = rsi15 >= 20
shortCondition6 = k <= d and k >= 20 and fastMA <= slowMA
shortCondition7 = ema(close, 5) <= ema(close, 10)
allShortShorts = shortCondition5 and shortCondition6 and shortCondition7

if crossunder(close, ema(close,5)) and allShorterShorts and allShortShorts
    strategy.entry("Short", strategy.short, comment="ShortEntry")

strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

Thêm nữa