日々のDCA戦略とEMAの接触

作者: リン・ハーンチャオチャン開催日:2024年01月16日 15時30分17秒
タグ:

img

概要

このパインスクリプト戦略は,EMAのタッチ信号を組み込み,TradingViewプラットフォームで日々のドルコスト平均化アプローチを実装する.EMAは,日々の固定金額投資を行うためにドルコスト平均化方法論に従い,リスクを軽減するために時間をかけて購入を分散させる.EMAクロスオーバーは,エントリーの特異的なトリガーとして機能する.

戦略の論理

戦略には以下の主要な特徴があります.

  1. 日々 の ドル 費用 平均

    • 固定日額投資は,市場の上昇と低下に関係なく
    • 単一の取引リスクを減らすための長期的大量投資
  2. 入力信号のEMA

    • 閉じる価格が EMA 5, 10, 20 などを上回るときに発する買い信号.
    • EMA線は短期的な引き下げを避けるためのサポートとして機能する
  3. ダイナミックストップ損失

    • 閉じる価格が20日SMAを下回る場合は,すべてのポジションを売却する.
    • これ以上の損失を回避する
  4. 取引数制限

    • ポジションのサイズを制御するために300で最大上限取引
    • 資産容量を超えた過剰投資を防ぐ

ストラテジーは,決まった金額を毎日投資し,閉じる価格に基づいて購入する株を計算する.閉じる価格が5日,10日,20日EMAなどのいずれかを越えると,購入信号が起動する.累積された取引数が300の限界に達すると,さらなる購入は起こらない.また,価格が20日SMA以下に閉じるか,事前に設定された終了日に達した場合,すべてのポジションがクリアされる.スクリプトは,視覚分析のために価格チャート上でEMAをプロットする.

利点分析

この戦略の利点は以下の通りです.

  1. リスクの多様化

    • 市場動向に関係なく,固定額の小額日々の投資
    • 追いかけるのは避けます
  2. EMA の 組み合わせ は 引き下げ を 避ける

    • EMAのクロスオーバーは,引き下げ期間の購入を防ぐ
    • 引き下げ期間中の継続的な購入はリスクを分散させる
  3. ダイナミックストップ損失制御損失

    • ストップ・ロスはタイムリーな出口を可能にします
    • 大量の損失を防ぐ
  4. 貿易制限管理 リスク

    • 過剰投資を防ぐために,最大ポジションサイズが事前に設定されています.
    • 投資を資産容量内にとどめる
  5. 直感的なEMA視覚化

    • 価格グラフに表示された EMA
    • 操作者が簡単に監視できるようにします
  6. 高度 に 調整 できる

    • 投資額,EMA期間,ストップなどに関するカスタム入力
    • リスクの優先順位に基づく調整

リスク分析

この戦略にはいくつかのリスクも伴う.

  1. システム 的 な リスク は まだ 存在 し て い ます

    • ブラック・スワン・イベントは 大きな損失をもたらす
    • 多様化によってリスクは減少するだけだが 排除されるわけではない
  2. 固定投資額

    • 固定日払い投資は価格急上昇した場合 上昇を逃す可能性があります
    • ダイナミックな金額調整が役立つかもしれません
  3. EMA は 極端 な 動き に 反応 でき ない

    • EMAは突然の出来事に対して反応が遅いし,損失を間に合うように止められない.
    • KDと組み合わせると,BOLLは極端なものを特定するのに役立ちます
  4. 貿易上限 利益の可能性

    • トレーディング・キャップの上限
    • リスクと報酬をバランスさせる必要性
  5. ストップ ロス 投資 に 注意 を 求め ます

    • 近づいてすぎると早速取り外され 緩すぎると間に合わない
    • 適切なバランスを見つけるには 広範な試験が必要でした

将来 の 改良

さらに最適化:

  1. ダイナミック・デイリー・投資額

    • 日々の投資を指標に基づいて
    • 上昇する時上昇し,低下する時減少する
  2. 追加入口信号

    • KD,BOLLなどの他の指標で EMA を補完する
    • 極端な動きの識別を改善する
  3. 指数関数移動平均値

    • EMAは突然の出来事に対してゆっくりと反応する DEMA,TEMAは役立つかもしれない
    • 新しい傾向をより早く把握する
  4. 動的位置制限

    • 戦略的収益性に基づく上限
    • 公正な評価でより高い負債を許容する
  5. 追尾停止損失

    • 現行の戦略市場は,すべてを販売する トレーリングストップは,ギャップを避けるのに役立ちます
    • 停車するリスクを減らす

結論

要するに,このEMA結合日々のDCA戦略は,長期的定期的な投資の概念を実現し,大規模な一次購入と比較して複数の小さなエントリにリスクを分散する. EMAは,短期的な引き戻しリスクを一定程度に避けるのに役立ちます.ストップロスは最大損失を制御します.それでも,ブラック・スワンリスクと固定投資サイズの制限を念頭に置く必要があります.これらの側面は,効率的で安定した量戦略を構築するためのパラメータチューニングと指標組み合わせを通じて将来の強化方向性を提供します.


/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000)

// Customizable Parameters
daily_investment = input(50000, title="Daily Investment")
start_year = input(2022, title="Start Year")
start_month = input(1, title="Start Month")
start_day = input(1, title="Start Day")
end_year = input(2023, title="End Year")
end_month = input(12, title="End Month")
end_day = input(1, title="End Day")
trade_count_limit = input(10000, title="Pyramiding Limit")
enable_sell = input(true, title="Enable Sell")

start_date = timestamp(start_year, start_month, start_day)
var int trade_count = 0

// Calculate the number of shares to buy based on the current closing price
shares_to_buy = daily_investment / close

// Check if a new day has started and after the start date
isNewDay = dayofmonth != dayofmonth[1] and time >= start_date

// Buy conditions based on EMA crossovers
ema5_cross_above = crossover(close, ema(close, 5))
ema10_cross_above = crossover(close, ema(close, 10))
ema20_cross_above = crossover(close, ema(close, 20))
ema50_cross_above = crossover(close, ema(close, 50))
ema100_cross_above = crossover(close, ema(close, 100))
ema200_cross_above = crossover(close, ema(close, 200))

if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit
    strategy.entry("Buy", strategy.long, qty=shares_to_buy)
    trade_count := trade_count + 1

// Dynamic sell conditions (optional)
sell_condition =  true

if enable_sell and sell_condition
    strategy.close_all()

// EMA Ribbon for visualization
plot(ema(close, 5), color=color.red, title="EMA 5")
plot(ema(close, 10), color=color.orange, title="EMA 10")
plot(ema(close, 20), color=color.yellow, title="EMA 20")
plot(ema(close, 50), color=color.green, title="EMA 50")
plot(ema(close, 100), color=color.blue, title="EMA 100")
plot(ema(close, 200), color=color.purple, title="EMA 200")


もっと