
Chiến lược này là một hệ thống giao dịch chỉ mua, tạo ra tín hiệu mua dựa trên đường trung bình di chuyển và chỉ số trung bình hàng hóa chu kỳ ((CCI) hoặc chỉ số định hướng trung bình chu kỳ ((ADX)). Một tín hiệu mua được tạo ra khi đường trung bình di chuyển nhanh xuyên qua đường trung bình di chuyển chậm và CCI chu kỳ và / hoặc ADX chu kỳ đáp ứng các điều kiện cụ thể.
Chiến lược này cũng cho phép nhập lại động, có nghĩa là một vị trí đa đầu mới có thể được mở nếu giá vượt qua ba đường trung bình di chuyển một lần nữa. Tuy nhiên, chiến lược này sẽ xóa vị trí đa đầu nếu giá đóng cửa giảm xuống dưới đường trung bình di chuyển thứ ba.
Các kịch bản xác định các điều kiện để tạo ra tín hiệu mua. Nó kiểm tra hai điều kiện để xác định một tín hiệu mua có hiệu lực:
Một người đàn ông đã bị thương và bị thương nặng.Nếu không có vị trí đa đầu chưa thanh toán và giá cao hơn ba đường trung bình di chuyển, hãy mở một vị trí đa đầu mới.
Điều kiện rút lui:Chiến lược này sẽ xóa các vị trí nhiều đầu nếu giá đóng cửa giảm xuống dưới đường trung bình di chuyển thứ ba.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có những rủi ro sau:
Giải pháp tương ứng:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược mua lại động này tích hợp nhiều chỉ số kỹ thuật để xác định thời điểm mua và sử dụng thiết kế mua lại động, có thể theo dõi xu hướng trong thời gian thực; đồng thời chỉ cần làm nhiều hơn để tránh rủi ro bổ sung của việc tháo lỗ. Bằng cách tối ưu hóa tham số, thiết lập dừng lỗ và quản lý vị trí, chiến lược này có thể được sử dụng trong giao dịch thực tế, kiểm soát rủi ro và thu được lợi nhuận vượt quá.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)
// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")
// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)
// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close, cci_period))
// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)
// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)
// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100
// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)
// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
strategy.entry("Long", strategy.long)
if strategy.position_size > 0 and close < third_ma
strategy.close("Long")
// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)