이치모쿠와 MACD 트렌드 역전 거래 전략

저자:차오장, 날짜: 2023-09-20 15:44:13
태그:

전반적인 설명

이 전략은 이치모쿠와 MACD 지표를 결합하여, 트렌드 역전을 확인한 후 거래를 시작합니다. 트렌드 역전 거래 전략에 속합니다.

전략 논리

  1. 이치모쿠 텐칸 라인을 계산하여 트렌드 방향을 측정합니다. 이보다 높은 가격은 상승 추세를 나타냅니다. 아래는 하락 추세를 나타냅니다.

  2. MACD 죽음의 크로스는 상승 추세에서 판매 신호를 생성하고, 금색 크로스는 하락 추세에서 구매 신호를 생성합니다.

  3. 이치모쿠 트렌드 편향과 MACD 반전 신호를 결합하여 트렌드 반전을 거래합니다.

  4. 특정 시간과 관련된 위험을 피하기 위해 밤이나 주말에 거래하지 않는 것과 같은 거래 시간 조절을 설정할 수 있는 옵션.

  5. 적당한 스톱 로스를 사용하고 수익을 취해서 수익을 확보하고 위험을 통제합니다.

장점

  1. 이치모쿠는 직관적으로 트렌드와 지원/저항 수준을 표시합니다.

  2. MACD는 트렌드 반전을 민감하게 파악합니다.

  3. 트렌드 편향과 역행을 결합하면 신호 품질이 향상됩니다.

  4. 커스터마이징 가능한 거래 시간은 주요 뉴스 이벤트와 관련된 위험을 피합니다.

  5. 스톱 로스 및 영업이익은 자본 위험을 효과적으로 관리합니다.

위험성

  1. 이치모쿠와 MACD는 잘못된 신호를 생성할 수 있습니다.

  2. 역전력은 알려지지 않아 위와 아래를 추격할 위험이 있습니다.

  3. 거래 시간 통제는 몇 가지 기회를 놓칠 수 있습니다.

  4. 잘못된 스톱 로스 설정과 이익 취득 설정은 조기 출퇴를 초래합니다.

  5. 매개 변수 최적화는 과도한 부착으로 이어질 수 있습니다.

강화

  1. 최적의 조합을 위해 이치모쿠와 MACD 매개 변수를 테스트합니다.

  2. 거래 신호를 확인하기 위해 다른 지표를 추가합니다.

  3. 위험과 수익을 균형을 맞추기 위해 스톱과 수익을 최적화하십시오.

  4. 거래 시간 통제의 필요성을 평가하고 적절한 경우 휴식을 취하십시오.

  5. 트렌드 필터를 포함하여 역전 거래로 인한 손실을 피합니다.

  6. 역전력을 측정하는 방법과 잠재적인 철수 높이를 연구하십시오.

결론

이 전략은 이치모쿠의 트렌드 편향과 MACD의 반전 신호를 결합하여 트렌드 반전 후 거래를 수행합니다. 추가 최적화 및 향상으로 신호 오류를 줄이고 견고한 트렌드 반전 시스템으로서 안정성과 효율성을 향상시킬 수 있습니다.


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



더 많은