二重指数関数移動平均量取引戦略

作者: リン・ハーンチャオチャン, 日付: 2024-02-02 11:41:34
タグ:

img

概要

この戦略は,5日指数移動平均線 (EMA) と20日シンプル移動平均線 (SMA) のクロスオーバーを計算することによって取引信号を生成する. 5日 EMA が20日 SMA を越えて,5日 EMA が20日 SMA を越えて,価格変動が5%または -5%に達するとポジションを閉じる.また,トレーディングインデックスインデックス (TII) を補助指標として組み込む.

戦略原則

ダブル指数関数移動平均は広く使用される技術指標である. 5 日間のEMAは最近の価格動向を表し, 20 日間のSMAは中期価格動向を示している. 短期間のMAが長期間のMAを超えると,上向きのブレイクと上昇傾向を示し,ロングに行くのに良いタイミングを示している.逆に,下向きのクロスオーバーは潜在的な価格逆転を意味し,ポジションを退場することを検討すべきである.

この戦略は,5日間のEMAと20日間のSMAを取引信号として設定する. 5日間のEMAが20日間のSMAを横切ると長くなって,価格変動が5%または -5%に達するとポジションを閉じる.また,TIIがポジティブで上昇しているかどうかを確認し,信号の信頼性を確認する.

詳細な手順は次のとおりです

  1. 5 日間 EMA,20 日間 SMA,TII を計算する
  2. TII がプラスで上昇している間に 5 日間の EMA が 20 日間の SMA を越えるときに購入信号を生成する.
  3. ロングポジションを入力
  4. 価格変動が5%または -5%に達すると閉じる

利点

この戦略は2つのMAs間の黄金クロスオーバーを利用し,以下のメリットを持っています:

  1. 明確でシンプルな取引シグナルで 簡単に実行できます
  2. MAは主流で一般的な技術指標で,ゴールデンクロス信号は古典的で信頼性があります
  3. TIIを組み込むことで 不確実な信号をフィルタリングして 勝利率を上げることができます
  4. 既定のストップ・ロスト/テイク・プロフィート基準は,取引リスクごとに効果的に制御します.

一般的には,この戦略にはシンプルなルールがあり,MAクロスオーバーのような成熟した技術指標を使用し,比較的包括的なリスク管理測定法があります. 量的な取引分野での学習と使用は初心者にとって適しています.

リスク

この戦略には依然としてリスクがあります

  1. MAクロスオーバー信号が遅れる
  2. TII指標は,レンジ・バインド市場ではうまく機能していない.
  3. 固定ストップ・ロース/テイク・プロフィート基準は任意である可能性があります.

改善策は以下の通りです.

  1. MAパラメータを最適化して遅延を減らす
  2. 信号の信頼性を高めるために他の補助指標を追加します.
  3. ダイナミックなストップ・ロスト/テイク・プロフィート基準を設定する.

ですから,さらに最適化できる余地があります

オプティマイゼーションの方向性

この戦略は,次の側面から改善できます.

  1. 最適なペアを見つけるために,短/長 EMA と SMA の組み合わせをテストすることによって,MA パラメータを最適化します.

  2. MACD,KDJなどの他の指標を追加して 誤った信号をフィルターします

  3. 機械学習アルゴリズムを用い 歴史的なデータモデリングと統計を用いて より良いパラメータを見つけます

  4. 市場変動と楽器の特徴に基づいて動的ストップ・ロース/テイク・プロフィートを設定し,リスクをより適切に制御する.

  5. 外国為替や暗号通貨などの他の商品にも 拡大します

上記の改善により,この戦略の安定性と収益性が大幅に向上できます.

結論

結論として,これは理解し,実装しやすい二重MAクロスオーバー戦略です.MA信号を利用し,TIIを使用してエラーをフィルタリングします.ストップ損失/取利益でリスクを制御します.この戦略は初心者にとって学習に適しており,最適化にも大きな余地があります.パラメータチューニング,信号フィルタリング,ダイナミックストップ損失のさらなる改善により,実践的で強力な取引戦略に変えることができます.


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

//@version=5
strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true)

// Define the moving averages
ema5 = ta.ema(close, 5)
sma20 = ta.sma(close, 20)
smaVolume10 = ta.sma(volume, 50)

majorLength = input(60, title="Major Length")
minorLength = input(30, title="Minor Length")
src = input(close, title="Source")

smaValue = ta.sma(src, majorLength)

positiveSum = 0.0
negativeSum = 0.0

for i = 0 to minorLength - 1
    price = na(src[i]) ? 0 : src[i]
    avg = na(smaValue[i]) ? 0 : smaValue[i]
    positiveSum := positiveSum + (price > avg ? price - avg : 0)
    negativeSum := negativeSum + (price > avg ? 0 : avg - price)

tii = 100 * positiveSum / (positiveSum + negativeSum)

// Buy condition: 5 EMA crosses above 20 SMA
buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1]

//and volume > smaVolume10 //

// Track entry price
var entryPrice = 0.0
if (buyCondition)
    entryPrice := close

// Calculate percentage change from entry price
priceChange = close / entryPrice - 1

// Plotting the moving averages on the chart
plot(ema5, color=color.blue, title="5 EMA")
plot(sma20, color=color.red, title="20 SMA")

// Highlighting buy signals and exit signals on the chart
// plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy")

// Strategy entry and exit
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Exit conditions
if (strategy.opentrades > 0)
    if (priceChange >= 0.05 or priceChange <= -0.05)
        strategy.close("Buy")


もっと