Chiến lược giao dịch định lượng OBV và MACD thay đổi

Tác giả:ChaoZhang, Ngày: 2023-11-15 17:58:42
Tags:

img

Tổng quan

Chiến lược này sử dụng khối lượng cân đối thay đổi (OBV) và MACD để tạo ra tín hiệu giao dịch. Nó kết hợp chỉ số giá MACD và OBV thay đổi như một chỉ số toàn diện cho khối lượng và giá, nhằm nắm bắt các cơ hội giao dịch khi giá và khối lượng tăng mạnh.

Chiến lược logic

  1. Tính toán trung bình di chuyển đơn giản (SMA) để xác định xu hướng thị trường.

  2. Tính toán OBV thay đổi. Nó sửa đổi tính toán OBV dựa trên giá gần và mối quan hệ giá gần trước đó để làm cho OBV nhạy cảm hơn.

  3. Tính toán MACD trên OBV thay đổi. MACD bao gồm đường nhanh, đường chậm và biểu đồ để xác định thay đổi động lượng khối lượng.

  4. Khi MACD băng qua vàng và tăng, một tín hiệu mua được tạo ra.

  5. Khi MACD chết chéo và đi xuống, một tín hiệu bán được kích hoạt.

  6. Kiểm tra SMA để tránh giao dịch không cần thiết trong thị trường không có xu hướng.

Phân tích lợi thế

  1. OBV thay đổi nhạy cảm hơn để nắm bắt những thay đổi khối lượng sớm.

  2. MACD cho thấy rõ sự thay đổi động lượng khối lượng và các mức chính.

  3. Số lượng và giá kết hợp tín hiệu cải thiện độ chính xác.

  4. SMA lọc tín hiệu sai bằng cách xác định xu hướng thị trường.

  5. Logic chiến lược rõ ràng và không gian tối ưu hóa lớn.

Phân tích rủi ro

  1. OBV thay đổi có thể tạo ra tín hiệu sai, cần lọc theo các chỉ số khác.

  2. Cài đặt tham số MACD không chính xác có thể bỏ lỡ giao dịch hoặc gây ra tín hiệu sai.

  3. Hãy chú ý đến chi tiết cổ phiếu để tránh mất mát.

  4. Theo dõi tình hình thị trường vì chiến lược có thể không hoạt động cho các kịch bản đặc biệt.

  5. Rủi ro quá mức kiểm tra lại có thể dẫn đến hiệu suất kém hơn trong giao dịch trực tiếp.

Hướng dẫn tối ưu hóa

  1. Kiểm tra các kết hợp thời gian SMA khác nhau để tối ưu hóa việc xác định xu hướng thị trường.

  2. Kiểm tra các thông số MACD để xác định tốt hơn sự thay đổi động lượng khối lượng.

  3. Thêm các chỉ số khác như bộ lọc, như KDJ, RSI v.v.

  4. Thêm stop loss để giới hạn lỗ cho mỗi giao dịch.

  5. Tối ưu hóa quản lý tiền để cải thiện lợi nhuận tổng thể.

  6. Sự khác biệt trong các tham số thử nghiệm giữa các cổ phiếu.

Kết luận

Chiến lược này kết hợp OBV và MACD thay đổi để đạt được tổng hợp khối lượng và giá. Nó có thể nắm bắt sự thay đổi động lực khối lượng sớm và tạo ra tín hiệu giao dịch. So với việc sử dụng OBV hoặc MACD một mình, chiến lược này cung cấp cơ hội giao dịch đáng tin cậy hơn. Tuy nhiên, rủi ro tín hiệu sai tồn tại và tối ưu hóa thêm các chỉ số và tham số, cộng với quản lý tiền bạc là cần thiết để có được lợi nhuận ổn định trong giao dịch trực tiếp. Nhìn chung, chiến lược có logic rõ ràng và đáng để thử nghiệm và tối ưu hóa để khám phá tiềm năng của nó.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot

//@version=5
strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100)

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
//SMA Tredline
out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)
//sma plot
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200", offset=offset)
plot(outf, color=color.maroon, title="MA50", offset=offset)
plot(outn, color=color.orange, title="MA90", offset=offset)
plot(outt, color=color.olive, title="MA21", offset=offset)
plot(outthree, color=color.fuchsia, title="MA9", offset=offset)

fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
chng = 0
obv = ta.cum(math.sign(ta.change(close)) * volume)
if close < close[1] and (open < close)
    chng := 1
else if close > close[1]
    chng := 1
else
    chng := -1
obvalt = ta.cum(math.sign(chng) * volume)
//src = input(title="Source", defval=close)
src = obvalt
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
//hline(0, "Zero Line", color=color.new(#787B86, 50))
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
//BUY Signal
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macd,2)
macdlong = ta.crossover(macd, signal)
longCondition=false
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macd,1)
macdsell = macd < signal
shortCondition = false
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true


if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)


Thêm nữa