CDC 액션존을 기반으로 한 ATR 손절매 및 손절매 트레이딩 로봇 전략

TA EMA ATR
생성 날짜: 2024-06-03 16:19:32 마지막으로 수정됨: 2024-06-03 16:19:32
복사: 3 클릭수: 647
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

CDC 액션존을 기반으로 한 ATR 손절매 및 손절매 트레이딩 로봇 전략

개요

이 전략은 CDC 행동 영역을 기반으로 한 거래 로봇 전략이다. 12주기 및 26주기 지수 이동 평균을 사용하여 시장의 추세를 결정하며, 단기 EMA가 장기 EMA 위에있을 때 더 많이하고, 반대로 부실합니다. 이 전략은 평균 실제 파도 (ATR) 를 사용하여 동적 중지 및 중지 수준을 설정합니다.

전략 원칙

  1. 12주기 및 26주기 EMA를 계산하여 시장의 흐름을 결정한다.
  2. ATR을 계산하여 동적 정지 및 정지 수준을 설정합니다.
  3. 단기 EMA가 장기 EMA 위에 있을 때, 구매 신호를 발송하고 더 많은 지점을 열 수 있다.
  4. 단기 EMA가 장기 EMA 아래 있을 때, Sell 신호를 발송하고 공백을 설정한다.
  5. 정지수준은 ATR과 한 배수를 기반으로 결정되며, 가격이 정지수준에 도달했을 때 청산한다.
  6. 스톱로스 레벨은 현재 클로즈 가격의 5%로 고정되어 있으며, 가격이 스톱로스 레벨에 도달했을 때 평지한다.

전략적 이점

  1. EMA를 사용하여 시장의 추세를 파악하고, 다양한 시장 환경에 효과적으로 적응할 수 있습니다.
  2. ATR을 사용하여 동적 정지 수준을 설정하면 수익을 더 잘 보호 할 수 있습니다.
  3. 고정된 스톱로스 레벨은 위험을 통제하고 손실을 허용 가능한 범위로 제한하는 데 도움이 됩니다.
  4. 코드 구조는 명확하고, 이해하기 쉽고, 수정하기 쉽고, 추가적인 최적화를 위해 적합하다.

전략적 위험

  1. EMA는 시장의 급격한 변화로 인해 잘못된 신호를 보낼 수 있는 지연된 지표입니다.
  2. ATR 제약 수준은 시장의 큰 변동이 있을 때 적시에 수익을 보호하지 못할 수 있다.
  3. 고정된 스톱로스 레벨은 어떤 경우에는 잠재적인 수익을 놓치는 조기 청산으로 이어질 수 있다.
  4. 이 전략은 거래 비용과 슬라이드 포인트를 고려하지 않고 실제 거래 결과는 재검토 결과와 차이가 있을 수 있습니다.

전략 최적화 방향

  1. MACD 또는 이동 평균의 교차와 같은 다른 추세 지표를 사용하여 신호의 정확성을 향상 시키십시오.
  2. ATR 배수와 스톱 스톱 손실 비율을 최적화하여 다양한 시장 조건에 더 잘 적응합니다.
  3. 동적 상쇄 메커니즘, 예를 들어, 추적 상쇄 또는 변동률 기반 상쇄를 도입하여 위험을 더 잘 통제하십시오.
  4. 거래 비용과 슬라이드 포인트를 고려하고 적절한 거래 종류와 거래 시간을 선택하여 전략의 실제 성과를 향상시킵니다.

요약하다

이 전략은 CDC 행동 구역에 기반한 ATR 중지 중지 손실 거래 로봇 전략으로, EMA를 통해 시장 추세를 포착하고, ATR은 동적 중지 수준을 설정하고, 고정된 손실 비율을 사용하여 위험을 제어합니다. 이 전략은 장점이 있지만, 여전히 몇 가지 위험과 개선의 여지가 있습니다. 이 전략은 추가로 최적화 및 테스트를 통해 실제 거래에서 좋은 성과를 낼 것으로 예상됩니다.

전략 소스 코드
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CDC Action Zone Trading Bot with ATR for Take Profit and 5% Stop Loss", overlay=true)

// ดึงข้อมูลราคาปิด
close_price = close

// คำนวณเส้น EMA 12 และ EMA 26
ema12 = ta.ema(close_price, 12)
ema26 = ta.ema(close_price, 26)

// คำนวณ ATR
atr_length = input.int(14, title="ATR Length")
atr = ta.atr(atr_length)

// กำหนด Multiplier สำหรับ ATR Trailing Stoploss
mult_atr_stoploss = input.float(2.5, title="ATR Stoploss Multiplier")

// คำนวณ ATR Trailing Stoploss
prev_stoploss = close_price
for i = 1 to 10
    prev_stoploss := math.max(prev_stoploss, high[i] - mult_atr_stoploss * atr)

// กำหนด Take Profit เป็น ATR Trailing Stoploss
takeProfitPercent = input.float(10, title="Take Profit (%)") / 100
takeProfit = close_price + (close_price - prev_stoploss) * takeProfitPercent

// กำหนด Stop Loss เป็น 5% ของราคาปิดปัจจุบัน
stopLossPercent = input.float(5, title="Stop Loss (%)") / 100
stopLoss = close_price * stopLossPercent

// กำหนดสีแท่งกราฟ
buyColor = input.color(color.green, title="Buy Color")
sellColor = input.color(color.red, title="Sell Color")
neutralColor = input.color(color.gray, title="Neutral Color")
color = if (ema12 > ema26)
    buyColor
else if (ema12 < ema26)
    sellColor
else
    neutralColor

// สัญญาณ Buy
buySignal = (color == buyColor) and (color[1] != buyColor)

// สัญญาณ Sell
sellSignal = (color == sellColor) and (color[1] != sellColor)

// เปิด Position Long
if (buySignal)
    strategy.entry("Long", strategy.long)

// เปิด Position Short
if (sellSignal)
    strategy.entry("Short", strategy.short)

// ปิด Position เมื่อถึง Take profit
if (strategy.position_size > 0 and close_price > takeProfit)
    strategy.exit("Long", profit=takeProfit)

// ปิด Position เมื่อถึง Stop loss
if (strategy.position_size > 0 and close_price < stopLoss)
    strategy.exit("Long", loss=stopLoss)

// ปิด Position เมื่อถึง Take profit
if (strategy.position_size < 0 and close_price < takeProfit)
    strategy.exit("Short", profit=takeProfit)

// ปิด Position เมื่อถึง Stop loss
if (strategy.position_size < 0 and close_price > stopLoss)
    strategy.exit("Short", loss=stopLoss)