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