EMAタッチシグナルと組み合わせた日平均コスト戦略


作成日: 2024-01-16 15:30:17 最終変更日: 2024-01-16 15:30:17
コピー: 1 クリック数: 846
1
フォロー
1617
フォロワー

EMAタッチシグナルと組み合わせた日平均コスト戦略

概要

このPineスクリプト戦略は,TradingViewプラットフォーム上で1日の平均コスト戦略を実現し,EMA指標のタッチシグナルと組み合わせて入場点を決定する.この戦略は平均コスト投資法に従って,リスク分散のために1日固定金額で購入する.同時に,EMAのタッチシグナルによって特定の入場時間を指導する.

戦略原則

この戦略の特徴は以下の通りです.

  1. 平均日費用投資の法則

    • 市場が波動するにも関わらず 固定金額で毎日買い物をします
    • 長期分散型投資により,単一投資のリスクを低減
  2. EMA指数は入場点を決定する

    • 5日目,10日目,20日目などのEMAが終了時,買入が誘発されます.
    • EMA線はサポートとして,短期的な調整を避けるのが良い.
  3. ダイナミック・ストップ・メカニズム

    • 20日目のシンプル移動平均線を下回ると,クリアを停止する.
    • 損失の拡大を防ぐために
  4. 最大ポジション制限

    • 最大300の取引を許可し,ポジションの規模とリスクを制御します.
    • 過剰投資による資金不足を防止する

具体的には,戦略は,その日の閉店価格を計算して購入できる株式の数を計算して,毎日固定金額を投資する.その日の閉店価格に5日,10日,20日などのEMAの任意の項が突破された場合,その日の閉店価格に,購入シグナルが誘発される.累積したポジションが最大限300円に達すると,新しい購入操作は行われない.また,閉店価格が20日SMAを下回るとか,または事前に設定された退出日に達すると,ストップ損失をクリアする.この戦略は,価格グラフに異なる周期のEMA線を描画し,視覚的な分析を容易にする.

優位分析

この戦略には以下の利点があります.

  1. 分散型投資は単一投資のリスクを軽減する

    • 投資は毎日のように小さな固定金額で 変動は関係ありません
    • ラングラングが問題にならないこと
  2. EMAは,短期的な調整を回避する

    • EMA上は買取シグナルとして使用され,撤回期間の買取を避ける
    • 撤収期間中,バッチリ購入を続け,リスクを分散する.
  3. ダイナミックストップ,損失制御

    • ストップラインを設定して,タイムストップをします.
    • 大規模な損失を防ぐために
  4. 最大ポジション制限 リスク管理

    • 最大のポジションは,過剰投資を防ぐために,事前に設定できます.
    • ETPの承担能力の範囲内で投資する
  5. EMAは直感的に判断しやすい

    • 価格グラフに異なるEMA周期のラインを描画
    • 操作者の監視に便利です
  6. 高度調整可能

    • 投資額,EMA周期,ストップラインなどもカスタマイズできます.
    • 個人的なリスク偏好に合わせて調整する

リスク分析

この戦略にはいくつかのリスクがあります.

  1. システム上のリスクは避けられない

    • ブラック・スワンの事件で,大きな損失を被る可能性
    • 分散型投資はリスクを軽減しますが,完全に回避することはできません.
  2. 固定投資によるリスク

    • 価格が急上昇すると後悔するかもしれません.
    • 投資額を動的に調整する最適化
  3. EMAは極端な状況に反応できない

    • EMAは緊急事態に遅れて対応し,損失を時効的に止めることができなかった.
    • KD,BOLLなどの指標と組み合わせて 極端な状況を見極める
  4. ポジションの制限も利益の余地を制限している.

    • ポジションは上限で,無限期まで持たない.
    • リスクと利益のバランスをとる
  5. 停滞点の設定には経験と技術が必要です

    • ストップポイントを近すぎると簡単に突破され,遠すぎると間に合わない.
    • 繰り返しテストすることで バランスをとる必要があります

最適化の方向

この戦略は,さらに最適化できる余地があります.

  1. ダイナミックな調整で毎日の投入額を増加させる

    • ダイナミックで特定の指標に基づいて毎日の投入を調整できます.
    • 投資は前向きな時に増し,悲観的な時に減る
  2. 選考基準の追加

    • EMAに加えて,KD,BOLLなどの指標を導入することもできます.
    • 極端な行動に対する判断力を高めること
  3. 指数移動平均を用いて

    • 緊急事態へのEMAの対応が遅いため,DEMA,TEMAなどの対応を検討する
    • 新しいトレンドの方向性をより早く捉える
  4. 最大ポジションの動的調整

    • 戦略上の利益に応じて最大ポジションを動的に調整できます.
    • 評価が合理的な場合,適切なポジション拡大
  5. 漸進的な停止を採用

    • 既存の戦略は,直接の清算損失であり,段階的な清算を採用することができます.
    • ストップ・ダメージを”コピー”する危険を防ぐ

要約する

全体として,この日平均コスト戦略は,EMAのタッチシグナルを組み合わせて,長期にわたる分期投資のアイデアを実現している.単一の大手開設と比較して,リスクを分散させ,高点での狂喜を避ける.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")