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


作成日: 2024-02-02 11:41:34 最終変更日: 2024-02-02 11:41:34
コピー: 0 クリック数: 632
1
フォロー
1617
フォロワー

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

概要

この戦略は,5日目指数移動平均 ((EMA) と20日目簡易移動平均 ((SMA) の交差を計算して取引シグナルを生成する. 5日目EMA上で20日目SMAを突破すると,看板を取って多項に入ります. 価格の変化が5%または-5%に達すると,平仓を外します. この戦略は,取引量指数 ((TII) を補助判断指標として併用します.

戦略原則

双指数移動平均線は,広く使用される技術指標である。5日間のEMAは近期価格変化の傾向を表し,20日間のSMAは中期価格の動きを表している。短期平均線上を穿越すると,価格の動きが下向きから転がり,入場を余裕とする.逆に,短期平均線下を穿越すると,価格が下向きから転がり,出場を考慮する。

この戦略は5日EMAと20日SMAを取引信号として設定する. 5日EMAが20日SMAを突破する時に長所シグナルを生成する. 持仓価格の変化が5%または-5%に達すると,利益またはストップ・ローズとして処理する. さらに,TII指標を組み合わせて,補助判断基準として扱う.

詳細は以下の通りです.

  1. 5日EMA,20日SMA,TIIを計算する
  2. 5日EMAで20日SMAを突破し,TIIが前回より正で大きいとき,買入シグナルを生成する
  3. 長いポジションに
  4. 価格の変化が5%または-5%に達すると,平仓を終了します.

戦略的優位性

この戦略は,移動平均の黄金のクロス取引シグナルを利用し,以下の利点があります.

  1. 戦略信号はシンプルで明快で実行しやすい.
  2. 移動平均は主流でよく使われる技術指標であり,金十字は従来よりも信頼性の高い取引信号である.
  3. TII指標と組み合わせると,部分的な不確実性信号をフィルターして,戦略の勝利率を高めることができる.
  4. ストップ・ロスとストップ・ストップの基準を設定することで,単一取引のリスクを効果的に制御できます.

全体として,この戦略は,規則が明確で,理解しやすく,実行可能で,移動平均の交差などの成熟した技術指標を利用し,リスク管理の措置はより包括的で,初心者向けに適した量化取引戦略です.

戦略リスク

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

  1. 移動平均の交差信号には一定の遅延がある.
  2. TII指数は,市内の整合に問題がある.
  3. 固定的な止損防止基準は 恣意的すぎるかもしれない.

これらのリスクは以下の方法で改善できます.

  1. 移動平均のパラメータを最適化し,信号の遅延を減らす.
  2. 信号の信頼性を高めるための補助的な指標を追加する.
  3. ダイナミック・ストップ・ダメージ・ストップの基準を設定する.

この戦略をさらに改善する余地があります.

戦略最適化の方向性

この戦略は以下の点で最適化できます.

  1. 移動平均のパラメータを最適化する.より短時間またはより長時間のEMAとSMAのパラメータの組み合わせをテストして,よりよいパラメータのペアを見つける.

  2. 他の指標のフィルタを追加する.MACD,KDJなどの指標の補助判断は部分的な誤信号を回避する.

  3. 機械学習アルゴリズムを適用する. 統計的方法またはニューラルネットワークを使用して,歴史データをモデル化し,より優良なパラメータを自動的に探す.

  4. ダイナミックなストップ・ストップを設定する.市場の波動度や個々の株の特性に応じてストップ・ストップ幅を調整することで,リスクをよりよくコントロールできる.

  5. 外国為替,デジタル通貨などの他の品種にも同じ戦略のルールが適用されます.

戦略の安定性や収益性を大幅に向上させることができる.

要約する

この戦略は,全体として,理解し,実行しやすい二重移動平均クロス戦略である.移動平均信号の優位性を利用し,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")