Đây là một chiến lược phá vỡ đảo ngược trung bình dựa trên kênh Bollinger Bands. Nó đi dài khi giá phá vỡ bên dưới dải dưới của Bollinger Bands. Stop loss được đặt ở mức thấp của thanh phá vỡ. Mục tiêu lợi nhuận là dải trên của Bollinger Bands.
Chiến lược này sử dụng một kênh Bollinger Bands 20 giai đoạn, bao gồm một dải giữa, một dải trên và một dải dưới. Dải giữa là một đường trung bình di chuyển đơn giản 20 giai đoạn. Dải trên là dải giữa cộng với 2 độ lệch chuẩn. Dải dưới là dải giữa trừ 2 độ lệch chuẩn.
Khi giá phá vỡ dưới dải dưới, điều này cho thấy giá đã bước vào trạng thái bán quá mức. Chiến lược sẽ đi dài tại thời điểm này. Sau khi bước vào vị trí, stop loss được đặt ở mức thấp của thanh nhập, và mục tiêu lợi nhuận là dải trên. Do đó, chiến lược nhằm mục đích nắm bắt quá trình đảo ngược từ bán quá mức đến mức trung bình, để kiếm lợi nhuận.
Những lợi thế của chiến lược này là:
Những rủi ro của chiến lược này bao gồm:
Chiến lược có thể được cải thiện từ các khía cạnh sau:
Chiến lược này có logic rõ ràng và có thể giao dịch ở một mức độ nào đó. Tuy nhiên, hiệu quả của nó trong việc đánh giá mua quá mức / bán quá mức với Bollinger Bands là hạn chế, và nó không thể xác định hoàn hảo xu hướng. Ngoài ra, cơ chế dừng lỗ và lấy lợi nhuận cần cải thiện. Tiếp theo, nó có thể được tối ưu hóa bằng cách chọn các chỉ số chính xác hơn, điều chỉnh các tham số và tăng cường logic thoát để cải thiện lợi nhuận.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 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/ // © Ronsword //@version=5 strategy("bb 2ND target", overlay=true) // STEP 1. Create inputs that configure the backtest's date range useDateFilter = input.bool(true, title="Filter Date Range of Backtest", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 1997"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") backtestEndDate = input(timestamp("1 Sept 2023"), title="End Date", group="Backtest Time Period", tooltip="This end date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") // STEP 2. See if the current bar falls inside the date range inTradeWindow = true // Bollinger Bands inputs length = input.int(20, title="Bollinger Bands Length") mult = input.float(2.0, title="Multiplier") src = input(close, title="Source") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // EMA Settings ema20 = ta.ema(close, 20) plot(ema20, color=color.blue, title="20 EMA") // Entry condition longEntryCondition = ta.crossover(close, lower) // Define stop loss level as the low of the entry bar var float stopLossPrice = na if longEntryCondition stopLossPrice := low // Top Bollinger Band itself is set as the target topBandTarget = upper // Enter long position when conditions are met if inTradeWindow and longEntryCondition strategy.entry("Long", strategy.long, qty=1) // Set profit targets strategy.exit("ProfitTarget2", from_entry="Long", limit=topBandTarget) // Set stop loss strategy.exit("StopLoss", stop=stopLossPrice) // Plot Bollinger Bands with the same gray color plot(upper, color=color.gray, title="Upper Bollinger Band") plot(lower, color=color.gray, title="Lower Bollinger Band")