複数のタイムフレームのトレンド戦略

作者: リン・ハーンチャオチャン,日付: 2023-10-23 16:56:52
タグ:

img

概要

この戦略は,複数のタイムフレームを使用する取引戦略である.主にトレンド方向を決定するために長期的タイムフレーム,モメンタム方向を決定するために中期的タイムフレーム,特定のエントリーポイントを特定するために短期的タイムフレームを使用する.全体的なアイデアは,トレンド,モメンタム,エントリータイミングをベースに3つの異なる時間帯で決定を下すことである.

原則

この戦略は主に以下の方法で実施されます.

  1. 異なるタイムフレームを定義する

    • 長期 (毎日): 総動向を決定する
    • 中間期 (4時間):モメント方向を決定する
    • 短期 (カスタム): 入口先を特定する
  2. 長期的傾向を決定する

    • 長期トレンド方向を決定するためにSMAを使用する
    • 閉じる値がSMA以上であれば,上昇傾向として定義する.
    • ダウントレンドとして定義する.
  3. 中期モメントを決定する

    • ストックKとD線を使う
    • 線上運動量として定義します.
    • ダウンモメントとして定義します.
  4. 入り口を特定する

    • ロング エントリー:長期上向き,中期上向き,短期MA 金十字
    • 短期入場:長期下落傾向,中期下落ストック,短期MAデッドクロス
  5. 出口地点

    • 長期出口:中期ストックK線がD線を下回る
    • ショートアウト:中期ストックK線がD線を越える

概要すると この戦略は タイムフレームの情報を完全に活用し 異なる次元から 傾向とタイミングを判断し 誤ったブレイクを効果的にフィルタリングし 傾向に沿って高い確率のエントリーポイントを選択できます

利点

この戦略の利点は以下の通りです.

  1. 複数のタイムフレームの設計は科学的で細かいもので,より正確な市場動向判断が可能で,短期的な市場騒音に惑わされない.

  2. トレンド,モメンタム,エントリータイミングを考慮した包括的な条件は,多くの誤った信号をフィルタリングするのに役立ちます.

  3. ストックを使って 中期モメンタムを判断するのは 非常に正確で 市場の真の逆転を把握するのに役立ちます

  4. 厳格な参入基準により 価格上昇による誤った突破は ほとんど避けられます

  5. 定義されたストップ・ロスの出口ポイントは,それぞれの取引のリスクを効果的に制御します.

  6. 特定の市場条件に縛られずに様々な市場環境に適用できる.

  7. 固定ストップ損失率,ダイナミックポジションサイズなどなど,資本管理を最適化できる余地があります.

リスク

この戦略には注意すべきリスクもあります.

  1. 変動市場では,複数のストップ・ロスのヒットがある可能性があります.

  2. トレンドの変化は間に合わずに不正な取引につながる可能性があります.

  3. ストックに頼るだけでは 判断力に限界があります

  4. 厳格な参入基準は,いくつかの傾向を見逃す可能性があります.

  5. 利益の可能性は比較的限られており 巨大な傾向を捉えることはできません

リスクを軽減する方法:

  1. 誤差を減らすために細かな調整パラメータ.

  2. トレンドインジケーターを追加して 組み合わせた判断をします

  3. MACDのようなインディケーターを追加します

  4. ストップ・ロスを最適化して,トレーリング・ストップなどを使う.

  5. ストップ・ロストとポジションサイズを,主要なトレンドの変化時に即座に調整する.

最適化

戦略を最適化する方法:

  1. MA 期間,ストック設定などのパラメータの最適化により信号の精度が向上します

  2. MACDやボリンジャー帯などの指標を追加して判断を深める

  3. 入場基準を最適化し 受け入れられるリスクレベルでの取引を 許可する

  4. 後ろのストップ損失またはATRベースのストップを使用します.

  5. 主要なトレンドの変化時にポジションサイズを積極的に調整する.

  6. マシン学習を利用して パラメータとルールを自動最適化します

  7. 基本を考慮し 重要なデータリリースを使って 信号をさらに確認します

  8. 外国為替や金属などの 異なる商品の有効性をテストします

結論

概要すると,この複数のタイムフレームのトレンド戦略の核心構想は,長期,中期,短期的次元に基づいて決定を下すことである.利点は厳格な条件と制御可能なリスクにあるが,パラメータとルールは特定の市場のために最適化する必要がある.今後,この戦略はより多くの指標を組み込み,ストップを最適化,機械学習を追加などによりさらに強化することができる.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-10-22 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TUX MTF", overlay=true)

// MULTIPLE TIME FRAME STRATEGY
// LONG TERM --- TREND
// MED TERM --- MOMENTUM
// SHORT TERM --- ENTRY

// ENTRY POSITION TIMEFRAME
entry_position = input(title="Entry timeframe (minutes)",  defval=5, minval=1, maxval=1440)
med_term = entry_position * 4
long_term = med_term * 4

// GLOBAL VARIABLES
ma_trend = input(title="Moving Average Period (Trend)",  defval=50, minval=5, maxval=200)

// RSI
length = input(title="Stoch Length",  defval=18, minval=5, maxval=200)
OverBought = input(title="Stoch OB",  defval=80, minval=60, maxval=100)
OverSold = input(title="Stoch OS",  defval=20, minval=5, maxval=40)
smoothK = input(title="Stoch SmoothK",  defval=14, minval=1, maxval=40)
smoothD = input(title="Stoch SmoothD",  defval=14, minval=1, maxval=40)
maSm = input(title="Moving Avg SM",  defval=7, minval=5, maxval=50)
maMed = input(title="Moving Avg MD",  defval=21, minval=13, maxval=200)

// LONG TERM TREND
long_term_trend = request.security(syminfo.ticker, tostring(long_term), sma(close,ma_trend)) > request.security(syminfo.ticker, tostring(long_term), close)
plot(request.security(syminfo.ticker, tostring(long_term), sma(close,ma_trend)), title="Long Term MA", linewidth=2)
// FALSE = BEAR
// TRUE = BULL

// MED TERM MOMENTUM

k = request.security(syminfo.ticker, tostring(med_term), sma(stoch(close, high, low, length), smoothK))
d = request.security(syminfo.ticker, tostring(med_term), sma(k, smoothD))

os = k >= OverBought or d >= OverBought
ob = k <= OverSold or d <= OverSold


// SHORT TERM MA X OVER
bull_entry = long_term_trend == false and os == false and ob == false and k > d and request.security(syminfo.ticker, tostring(entry_position), crossover(sma(close, maSm), sma(close, maMed)))
bear_entry = long_term_trend == true and os == false and ob == false and k < d and request.security(syminfo.ticker, tostring(entry_position), crossunder(sma(close, maSm), sma(close, maMed)))



bull_exit = crossunder(k,d)
bear_exit = crossover(k,d)



if (bull_entry)
    strategy.entry("Long", strategy.long)
    

if (bear_entry)
    strategy.entry("Short", strategy.short)
  
strategy.close("Long", when = bull_exit == true)
strategy.close("Short", when = bear_exit == true)

    
    

    




もっと