このパインスクリプト戦略は,EMAのタッチ信号を組み込み,TradingViewプラットフォームで日々のドルコスト平均化アプローチを実装する.EMAは,日々の固定金額投資を行うためにドルコスト平均化方法論に従い,リスクを軽減するために時間をかけて購入を分散させる.EMAクロスオーバーは,エントリーの特異的なトリガーとして機能する.
戦略には以下の主要な特徴があります.
日々 の ドル 費用 平均
入力信号のEMA
ダイナミックストップ損失
取引数制限
ストラテジーは,決まった金額を毎日投資し,閉じる価格に基づいて購入する株を計算する.閉じる価格が5日,10日,20日EMAなどのいずれかを越えると,購入信号が起動する.累積された取引数が300の限界に達すると,さらなる購入は起こらない.また,価格が20日SMA以下に閉じるか,事前に設定された終了日に達した場合,すべてのポジションがクリアされる.スクリプトは,視覚分析のために価格チャート上でEMAをプロットする.
この戦略の利点は以下の通りです.
リスクの多様化
EMA の 組み合わせ は 引き下げ を 避ける
ダイナミックストップ損失制御損失
貿易制限管理 リスク
直感的なEMA視覚化
高度 に 調整 できる
この戦略にはいくつかのリスクも伴う.
システム 的 な リスク は まだ 存在 し て い ます
固定投資額
EMA は 極端 な 動き に 反応 でき ない
貿易上限 利益の可能性
ストップ ロス 投資 に 注意 を 求め ます
さらに最適化:
ダイナミック・デイリー・投資額
追加入口信号
指数関数移動平均値
動的位置制限
追尾停止損失
要するに,この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")