리소스 로딩... 로딩...

CDC 액션존 트레이딩 봇 전략 ATR와 함께 수익을 취하고 손실을 중지

저자:차오장, 날짜: 2024-06-03 16:19:32
태그:TAEMAATR

img

전반적인 설명

이 전략은 CDC 행동 구역에 기반한 거래 봇 전략이다. 시장 추세를 결정하기 위해 12 기간 및 26 기간 기하급수적 이동 평균 (EMA) 을 사용하며, 단기 EMA가 장기 EMA보다 높을 때 길게 이동하고 반대가 맞을 때 짧게 이동합니다. 이 전략은 동적 인 수익을 취하고 손실을 멈추는 수준을 설정하기 위해 평균 진정한 범위 (ATR) 를 사용합니다. 수익을 취하는 수준은 ATR 및 곱자에 기초하여 결정되며, 중지 손실 수준은 현재 폐쇄 가격의 5%로 고정됩니다.

전략 원칙

  1. 시장 동향을 결정하기 위해 12주기 및 26주기 EMA를 계산합니다.
  2. ATR를 계산하여 동적 취득 및 스톱 손실 수준을 설정합니다.
  3. 단기 EMA가 장기 EMA보다 높을 때 구매 신호가 생성되고 긴 포지션이 열립니다.
  4. 단기 EMA가 장기 EMA보다 낮을 때 판매 신호가 생성되고 짧은 지점이 열립니다.
  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)


관련

더 많은