この戦略は,複数のタイムフレームを使用する取引戦略である.主にトレンド方向を決定するために長期的タイムフレーム,モメンタム方向を決定するために中期的タイムフレーム,特定のエントリーポイントを特定するために短期的タイムフレームを使用する.全体的なアイデアは,トレンド,モメンタム,エントリータイミングをベースに3つの異なる時間帯で決定を下すことである.
この戦略は主に以下の方法で実施されます.
異なるタイムフレームを定義する
長期的傾向を決定する
中期モメントを決定する
入り口を特定する
出口地点
概要すると この戦略は タイムフレームの情報を完全に活用し 異なる次元から 傾向とタイミングを判断し 誤ったブレイクを効果的にフィルタリングし 傾向に沿って高い確率のエントリーポイントを選択できます
この戦略の利点は以下の通りです.
複数のタイムフレームの設計は科学的で細かいもので,より正確な市場動向判断が可能で,短期的な市場騒音に惑わされない.
トレンド,モメンタム,エントリータイミングを考慮した包括的な条件は,多くの誤った信号をフィルタリングするのに役立ちます.
ストックを使って 中期モメンタムを判断するのは 非常に正確で 市場の真の逆転を把握するのに役立ちます
厳格な参入基準により 価格上昇による誤った突破は ほとんど避けられます
定義されたストップ・ロスの出口ポイントは,それぞれの取引のリスクを効果的に制御します.
特定の市場条件に縛られずに様々な市場環境に適用できる.
固定ストップ損失率,ダイナミックポジションサイズなどなど,資本管理を最適化できる余地があります.
この戦略には注意すべきリスクもあります.
変動市場では,複数のストップ・ロスのヒットがある可能性があります.
トレンドの変化は間に合わずに不正な取引につながる可能性があります.
ストックに頼るだけでは 判断力に限界があります
厳格な参入基準は,いくつかの傾向を見逃す可能性があります.
利益の可能性は比較的限られており 巨大な傾向を捉えることはできません
リスクを軽減する方法:
誤差を減らすために細かな調整パラメータ.
トレンドインジケーターを追加して 組み合わせた判断をします
MACDのようなインディケーターを追加します
ストップ・ロスを最適化して,トレーリング・ストップなどを使う.
ストップ・ロストとポジションサイズを,主要なトレンドの変化時に即座に調整する.
戦略を最適化する方法:
MA 期間,ストック設定などのパラメータの最適化により信号の精度が向上します
MACDやボリンジャー帯などの指標を追加して判断を深める
入場基準を最適化し 受け入れられるリスクレベルでの取引を 許可する
後ろのストップ損失またはATRベースのストップを使用します.
主要なトレンドの変化時にポジションサイズを積極的に調整する.
マシン学習を利用して パラメータとルールを自動最適化します
基本を考慮し 重要なデータリリースを使って 信号をさらに確認します
外国為替や金属などの 異なる商品の有効性をテストします
概要すると,この複数のタイムフレームのトレンド戦略の核心構想は,長期,中期,短期的次元に基づいて決定を下すことである.利点は厳格な条件と制御可能なリスクにあるが,パラメータとルールは特定の市場のために最適化する必要がある.今後,この戦略はより多くの指標を組み込み,ストップを最適化,機械学習を追加などによりさらに強化することができる.
/*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)