移動平均値に基づくモメントキャプチャ戦略

作者: リン・ハーンチャオチャン開催日:2023年11月1日 15:55:51
タグ:

img

概要

この戦略は,トレンド逆転を検知するためにハイキン・アシと組み合わせて,主要取引信号として移動平均を使用し,短期的な価格の勢いを把握することを目的としています.これは,非遅延信号を生成するために再塗装機能を削除することによって,グスタヴォ・ブラマオのハイキン・アシMA戦略から最適化されています.

戦略の論理

  1. ハイキン・アシ閉値 nAMAn を価格ベースラインとして計算する.

  2. nAMAnに基づいて,高速移動平均fmaと遅い移動平均smaを計算する.

  3. FMAがSMAを超えると買い信号を生成し, FMAがSMAを下回ると売り信号を生成する.

  4. この戦略では,リペインティングは削除され,リアルタイム取引信号を生成し,バックテストバイアスを回避します.

利点分析

  1. ハイキン・アシは傾向の逆転点を より正確に決定するのに役立ちます

  2. MAクロスオーバーは 誤った信号を効果的にフィルタリングします

  3. シグナル生成の遅延がなくして 信頼性の高いライブパフォーマンスを保証します

  4. 柔軟なパラメータ調節 異なる製品に適応可能

  5. シンプルで明快な論理で 分かりやすく実行できます

  6. 手動取引のリスクを最小限にするために完全に自動化できます

リスク分析

  1. 価格の変動で 市場が悪調だ

  2. 偽信号を生成する傾向がある

  3. 不適切なMFAパラメータは,トレンドが欠落したり,引き上げが増加したりする可能性があります.

  4. 取引コストは,ライブ取引における純利益に影響を与える.

  5. 単一の取引損失を制御するために必要な厳格なストップ損失.

  6. メカニカルな取引戦略には引き上げリスクがあり,適切な資本管理が必要です.

リスク管理ソリューション:

  1. 波動性フィルターを追加して,範囲限定市場を避ける.

  2. シグナル品質を保証するためにフィルターを追加します.

  3. 徹底的なテストを通して MA パラメータを最適化します

  4. 取引頻度を調整してコストを削減する.

  5. 適切なストップロスを設定して 単一の取引で損失を制御します

  6. ポジションのサイズを制御するために資本管理を最適化します

改善の方向性

  1. MAパラメータを最適化して信号品質を向上させる

  2. トレンドフィルターを追加して,ウィップソー市場を回避します.

  3. トレンドを確認するために,ボリューム指標を組み込む.

  4. ダイナミックなストップ・ロストと利益採取を実装し,利益を最適化します.

  5. 資本管理モジュールを統合して ポジションのサイズを制御する

  6. アルゴリズム取引モジュールを追加して 完全に自動化します

概要

この戦略は,ハイキン・アシとMAクロスオーバーテクニックを統合し,シンプルで実践的な短期トレンドフォロー戦略を作成する.信頼性の高いリアルタイム取引信号を生成し,ライブ取引で良いパフォーマンスを示します.パラメータ,リスク管理,アルゴリズム取引モジュールのさらなる最適化は,信頼性の高い完全に自動化された戦略に変えることができます.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Heikin/Kaufman by Gustavo v5
// strategy('Heikin Ashi EMA v5 no repaint ', shorttitle='Heikin Ashi EMA v5 no repaint', overlay=true, max_bars_back=500, default_qty_value=1000, initial_capital=100000, currency=currency.EUR)


// Settings - H/K
res1 = input.timeframe(title='Heikin Ashi EMA Time Frame', defval='D')
test = input(0, 'Heikin Ashi EMA Shift')
sloma = input(20, 'Slow EMA Period')
nAMA = hlc3

//Kaufman MA
Length = input.int(5, minval=1)
xPrice = input(hlc3)
xvnoise = math.abs(xPrice - xPrice[1])
Fastend = input.float(2.5, step=.5)
Slowend = input(20)
nfastend = 2 / (Fastend + 1)
nslowend = 2 / (Slowend + 1)
nsignal = math.abs(xPrice - xPrice[Length])
nnoise = math.sum(xvnoise, Length)
nefratio = nnoise != 0 ? nsignal / nnoise : 0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMAn = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

//Heikin Ashi Open/Close Price
ha_t = ticker.heikinashi(syminfo.tickerid)
ha_close = request.security(ha_t, timeframe.period, nAMAn)
mha_close = request.security(ha_t, res1, hlc3)

//Moving Average
fma = ta.ema(mha_close[test], 1)
sma = ta.ema(ha_close, sloma)
plot(fma, title='MA', color=color.new(color.black, 0), linewidth=2, style=plot.style_line)
plot(sma, title='SMA', color=color.new(color.red, 0), linewidth=2, style=plot.style_line)

//Strategy
golong = ta.crossover(fma, sma)
goshort = ta.crossunder(fma, sma)

strategy.entry('Buy', strategy.long, when=golong)
strategy.entry('Sell', strategy.short,when=goshort)



もっと