Chiến lược giao dịch đảo ngược xu hướng của Ichimoku và MACD

Tác giả:ChaoZhang, Ngày: 2023-09-20 15:44:13
Tags:

Tổng quan

Chiến lược này kết hợp các chỉ số Ichimoku và MACD, tham gia giao dịch sau khi xác nhận sự đảo ngược xu hướng.

Chiến lược logic

  1. Tính toán đường Ichimoku Tenkan để đo hướng xu hướng. Giá trên nó cho thấy xu hướng tăng, và dưới xu hướng giảm.

  2. MACD death cross tạo ra tín hiệu bán trong xu hướng tăng; Golden cross buy tín hiệu trong xu hướng giảm.

  3. Kết hợp sự thiên vị xu hướng Ichimoku và tín hiệu đảo ngược MACD để giao dịch đảo ngược xu hướng.

  4. Tùy chọn để thiết lập kiểm soát giờ giao dịch, chẳng hạn như không giao dịch vào ban đêm hoặc cuối tuần, để tránh rủi ro liên quan đến thời gian nhất định.

  5. Sử dụng stop loss thích hợp và lấy lợi nhuận để khóa lợi nhuận và kiểm soát rủi ro.

Ưu điểm

  1. Ichimoku trực quan hiển thị xu hướng và mức hỗ trợ / kháng cự.

  2. MACD nhạy cảm ghi nhận sự đảo ngược xu hướng.

  3. Kết hợp xu hướng thiên vị và đảo ngược cải thiện chất lượng tín hiệu.

  4. Thời gian giao dịch tùy chỉnh tránh rủi ro xung quanh các sự kiện tin tức lớn.

  5. Dừng lỗ và lấy lợi nhuận quản lý rủi ro vốn hiệu quả.

Rủi ro

  1. Ichimoku và MACD có thể tạo ra tín hiệu sai.

  2. Sức mạnh đảo ngược không rõ, có nguy cơ theo đuổi trên và dưới.

  3. Kiểm soát giờ giao dịch có thể bỏ lỡ một số cơ hội.

  4. Các thiết lập dừng lỗ và lấy lợi nhuận không đúng dẫn đến thoát sớm.

  5. Tối ưu hóa tham số có thể dẫn đến quá phù hợp.

Tăng cường

  1. Kiểm tra các thông số Ichimoku và MACD để kết hợp tối ưu.

  2. Thêm các chỉ số khác để xác nhận tín hiệu giao dịch.

  3. Tối ưu hóa dừng và lợi nhuận để cân bằng rủi ro và lợi nhuận.

  4. Đánh giá sự cần thiết của việc kiểm soát giờ giao dịch và thư giãn nếu thích hợp.

  5. Tích hợp bộ lọc xu hướng để tránh tổn thất từ các giao dịch đảo ngược.

  6. Nghiên cứu các cách để đánh giá sức mạnh đảo ngược và chiều cao rút lui tiềm năng.

Kết luận

Chiến lược này kết hợp sự thiên vị xu hướng của Ichimoku và tín hiệu đảo ngược xu hướng của MACD để giao dịch sau khi đảo ngược xu hướng.


/*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)
// }



Thêm nữa