Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch phạm vi biến động dựa trên dao động stochastic

Tác giả:ChaoZhang, Ngày: 2024-06-17 14:52:10
Tags:ATR

img

Tổng quan

Chiến lược này sử dụng Stochastic Oscillator để xác định các điều kiện thị trường mua quá mức và bán quá mức, kích hoạt các giao dịch với các tham số rủi ro và phần thưởng được xác định trước để tận dụng các biến động giá trong phạm vi giao dịch biến động. Ý tưởng chính đằng sau chiến lược này là mua ở cuối thấp của phạm vi giao dịch và bán ở cuối cao, trong khi kiểm soát rủi ro nghiêm ngặt.

Chiến lược logic

  1. Khi Stochastic Oscillator vượt dưới mức bán quá mức (20), chiến lược đi vào một vị trí dài; khi nó vượt qua mức mua quá mức (80), chiến lược đi vào một vị trí ngắn.
  2. Mức dừng lỗ và lấy lợi nhuận được thiết lập dựa trên 2 lần phạm vi trung bình thực sự (ATR), và mỗi giao dịch có rủi ro 1% vốn chủ sở hữu tài khoản.
  3. Để ngăn chặn giao dịch quá mức, chiến lược thực thi tối thiểu 20 thanh giữa mỗi giao dịch, cho phép một khoảng thời gian nguội lại và tránh chém.

Ưu điểm chiến lược

  1. Chiến lược có thể nắm bắt biến động giá trong phạm vi giao dịch biến động, mua ở các điểm thấp và bán ở các điểm cao để có khả năng kiếm lợi nhuận.
  2. Nó sử dụng các biện pháp quản lý rủi ro nghiêm ngặt, bao gồm mức dừng lỗ và mức lợi nhuận dựa trên ATR và rủi ro cố định 1% cho mỗi giao dịch, giúp kiểm soát rút tiền và lỗ giao dịch đơn.
  3. Bằng cách thiết lập một khoảng thời gian tối thiểu giữa các giao dịch (20 thanh), chiến lược tránh giao dịch thường xuyên và bị lừa bởi tiếng ồn thị trường.
  4. Logic chiến lược rõ ràng, dễ hiểu và thực hiện, làm cho nó phù hợp để áp dụng trong các môi trường thị trường khác nhau.

Rủi ro chiến lược

  1. Thành công của chiến lược phần lớn phụ thuộc vào việc xác định đúng phạm vi giao dịch; nếu phạm vi được xác định sai, nó có thể dẫn đến việc thua lỗ.
  2. Nếu thị trường vượt ra khỏi phạm vi giao dịch và hình thành xu hướng, chiến lược có thể bỏ lỡ các cơ hội theo xu hướng.
  3. Mặc dù các biện pháp quản lý rủi ro đã được áp dụng, chiến lược vẫn có thể gặp phải tổn thất vượt quá mong đợi trong điều kiện thị trường cực đoan.
  4. Các thông số chiến lược (ví dụ: mức mua quá mức / bán quá mức, bội số ATR) cần được tối ưu hóa cho các điều kiện thị trường khác nhau; các thông số không phù hợp có thể dẫn đến hiệu suất kém.

Hướng dẫn tối ưu hóa chiến lược

  1. Xem xét kết hợp các chỉ số kỹ thuật khác (ví dụ: MACD, RSI) để xác nhận tín hiệu giao dịch và cải thiện độ tin cậy tín hiệu.
  2. Đưa ra các cơ chế dừng lỗ và lấy lợi nhuận năng động, chẳng hạn như điều chỉnh mức dừng lỗ khi giá di chuyển theo hướng thuận lợi, để có khả năng đạt được lợi nhuận cao hơn.
  3. Để xác định phạm vi giao dịch, hãy khám phá sử dụng các kỹ thuật tiên tiến hơn, chẳng hạn như thuật toán học máy, để cải thiện độ chính xác.
  4. Trong thị trường xu hướng, hãy xem xét việc giới thiệu bộ lọc xu hướng để tránh giao dịch chống lại xu hướng.

Tóm lại

Chiến lược giao dịch phạm vi biến động dựa trên Động dao động Stochastic cố gắng tận dụng các tín hiệu mua quá nhiều và bán quá nhiều của dao động trong phạm vi giao dịch được xác định trước. Chiến lược kiểm soát rủi ro thông qua quản lý rủi ro nghiêm ngặt và khoảng thời gian giao dịch. Mặc dù chiến lược có một số ưu điểm nhất định, thành công của nó phần lớn phụ thuộc vào việc xác định đúng phạm vi giao dịch.


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

//@version=5
strategy("Range Trading with Stochastic", overlay=true)

// Input Parameters
overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100)
stochLength = input.int(14, title="Stochastic Length", minval=1)
riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01)
barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1)

// Calculate Stochastic Oscillator
k = ta.sma(ta.stoch(close, high, low, stochLength), 3)
d = ta.sma(k, 3)

// Variables to Track Time Since Last Trade
var lastTradeBar = 0
barsSinceLastTrade = bar_index - lastTradeBar

// Risk Management
atr = ta.atr(14)
stopLoss = 2 * atr
takeProfit = 2 * atr
riskAmount = strategy.equity * riskPerTrade / 100
positionSize = 1

// Entry Conditions
longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades

// Entry/Exit Orders
if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
    lastTradeBar := bar_index // Update last trade bar
if shortCondition
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
    lastTradeBar := bar_index // Update last trade bar

// Plot Stochastic
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
hline(overboughtLevel, color=color.red, title="Overbought")
hline(oversoldLevel, color=color.green, title="Oversold")



Có liên quan

Thêm nữa