Chiến lược này kết hợp các chỉ số bảng cân bằng ban đầu và MACD, được đưa ra sau khi xác nhận xu hướng đảo ngược, thuộc chiến lược giao dịch đảo ngược xu hướng.
Tính toán đường xoay của bảng cân bằng ban đầu, như là một chỉ số để đánh giá xu hướng. Giá trên đường xoay là thị trường nhiều đầu, dưới là thị trường trống.
Chỉ số MACD tạo ra tín hiệu bán khi thị trường đa đầu tạo ra một cái gai chết; tạo ra tín hiệu mua khi thị trường trống tạo ra một cái gai vàng.
Kết hợp sự phán đoán xu hướng của bảng cân bằng bằng mắt và tín hiệu đảo ngược của MACD, giao dịch ngược tại điểm đảo ngược xu hướng.
Có thể thiết lập kiểm soát thời gian giao dịch, chẳng hạn như kết thúc giao dịch vào buổi tối, không giao dịch vào cuối tuần, v.v., để tránh rủi ro trong một khoảng thời gian nhất định.
Thực hiện các chiến lược dừng lỗ và ngăn chặn thích hợp để khóa lợi nhuận và kiểm soát rủi ro.
Chỉ số bảng cân bằng trực quan cho thấy xu hướng và mức áp lực hỗ trợ.
Chỉ số MACD nhạy cảm hơn để nắm bắt xu hướng đảo ngược.
Kết hợp các tín hiệu định hướng và đảo ngược, có thể lọc các tín hiệu giả.
Có thể tùy chỉnh thời gian giao dịch, tránh rủi ro tại các thời điểm quan trọng.
Thiết lập chiến lược dừng lỗ có thể quản lý rủi ro tài chính hiệu quả.
Các chỉ số cân bằng và MACD có thể có tín hiệu sai lệch.
Không thể đánh giá được mức độ đảo ngược, có nguy cơ quay trở lại.
Điều khiển thời gian giao dịch có thể bỏ lỡ một số cơ hội giao dịch.
Chặn hư hỏng được thiết lập không đúng, có thể dừng hư hỏng hoặc dừng quá sớm.
Các tham số được tối ưu hóa có thể được tối ưu hóa quá mức và không hiệu quả.
Kiểm tra các tham số của bảng cân bằng và MACD để tìm ra sự kết hợp tham số tối ưu.
Thêm các chỉ số khác để xác nhận tín hiệu giao dịch.
Tối ưu hóa chiến lược dừng lỗ, cân bằng rủi ro và lợi nhuận.
Đánh giá sự cần thiết của việc kiểm soát thời gian giao dịch, giảm bớt thích hợp.
Thêm một bộ lọc xu hướng để tránh thua lỗ trong giao dịch.
Nghiên cứu về cách đánh giá độ mạnh của sự đảo ngược và độ cao của sự hồi phục tiềm năng.
Chiến lược này tích hợp các phán đoán xu hướng của bảng cân bằng ban đầu và tín hiệu giao dịch đảo ngược của MACD để đưa ra quyết định giao dịch sau khi xác nhận xu hướng đảo ngược. Bằng cách tối ưu hóa các tham số và chiến lược hơn nữa, bạn có thể giảm nguy cơ hiểu sai tín hiệu và xây dựng một hệ thống giao dịch đảo ngược xu hướng ổn định và hiệu quả.
/*backtest
start: 2022-09-13 00:00:00
end: 2023-09-19 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/
// © Revazi
//@version=5
strategy("The Impeccable by zyberal", overlay = true)
// Inputs {
// Strategy variables
IchimokuTenkanPeriod = input(9)
IchimokuKijunPeriod = input(190)
IchimokuSenkouPeriod = input(52)
MACDMainFast = input(3)
MACDMainSlow = input(10)
MACDMainSmooth = input(9)
ExitAfterBars = input(2)
ProfitTarget = input(135)
StopLoss = input(70)
// Trading Options
DontTradeOnWeekends = input(true)
ExitAtEndOfDay = input(true)
DayExitTimeHour = input(23)
DayExitTimeMinute = input(04)
ExitOnFriday = input(true)
FridayExitTimeHour = input(20)
FridayExitTimeMinute = input(40)
// }
// TRADING OPTIONS LOGIC {
OpenOrdersAllowed = true
// Dont trade on weekends {
if DontTradeOnWeekends
if dayofweek == dayofweek.saturday or
dayofweek == dayofweek.sunday
OpenOrdersAllowed := false
// }
// Exit on close (end of day) {
if ExitAtEndOfDay
if timeframe.isintraday and
time >= timestamp(year(timenow), month(timenow), dayofmonth(timenow), DayExitTimeHour, DayExitTimeMinute)
OpenOrdersAllowed := false
// }
// Exit on Friday {
if ExitOnFriday
if timeframe.isintraday and
time >= timestamp(year(timenow), month(timenow), dayofmonth(timenow), FridayExitTimeHour, FridayExitTimeMinute)
OpenOrdersAllowed := false
// }
// Rule: Trading signals {
openW3 = request.security(syminfo.tickerid, "W", open)[3]
middleDonchian(Length) => math.avg(ta.highest(Length), ta.lowest(Length))
Tenkan = middleDonchian(IchimokuTenkanPeriod)[2]
[macdLine, signalLine, _] = ta.macd(close, MACDMainFast, MACDMainSlow, MACDMainSmooth)
LongEntrySignal = openW3 > Tenkan and ta.crossunder(macdLine, signalLine)[3] //macdLine[3] < signalLine[3]
ShortEntrySignal = openW3 < Tenkan and ta.crossover(macdLine, signalLine)[3] //macdLine[3] > signalLine[3]
// }
// Calculate conditions {
IsFlat() => strategy.position_size == 0
IsLong() => strategy.position_size > 0
IsShort() => strategy.position_size < 0
longCondition = OpenOrdersAllowed and not IsLong() and LongEntrySignal
shortCondition = OpenOrdersAllowed and not IsShort() and ShortEntrySignal
// }
// Open positions based on conditions {
strategy.order(id = "buy", direction = strategy.long, qty = 1, when = longCondition)
strategy.order(id = "sell", direction = strategy.short, qty = 1, when = shortCondition)
// }