CDCアクションゾーンに基づくATRストッププロフィットおよびストップロス取引ロボット戦略

TA EMA ATR
作成日: 2024-06-03 16:19:32 最終変更日: 2024-06-03 16:19:32
コピー: 3 クリック数: 647
1
フォロー
1617
フォロワー

CDCアクションゾーンに基づくATRストッププロフィットおよびストップロス取引ロボット戦略

概要

この戦略は,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)