資源の読み込みに... 荷物...

戦略をフォローする多動平均勢力の傾向

作者: リン・ハーンチャオチャン開催日:2024年11月12日15時05分09秒
タグ:SMARSIマルチ

img

概要

この戦略は,複数の移動平均値とモメント指標に基づいたトレンドフォロー取引システムである.主に20日,50日,150日,および200日間のシンプルムービング平均値 (SMA) の間の動的関係を活用し,日々のタイムフレームで強い上昇傾向とトレンドが弱くなるときに出口ポジションを把握するために,ボリュームとRSI指標と組み合わせます.この戦略は,誤った信号を効果的にフィルタリングし,複数の技術指標の協調的な使用を通じて取引精度を向上させます.

戦略の原則

基本論理には次の主要な要素が含まれます.

  1. 移動平均システム: 20/50/150/200 日移動平均を使用してトレンド判断システムを構築し,上昇傾向の調整を必要とする.
  2. モメント確認:RSIインジケーターとその移動平均値を用いて価格モメントを判断し,RSIが55以上またはRSISMAが50以上で上昇することを要求します.
  3. ボリューム検証: 20日間のボリューム平均と最近のボリュームを比較することによって信号の有効性を確認します.
  4. トレンド持続性検証: 50 日間MA が40 取引日のうち少なくとも 25 日間上昇傾向を維持しているかどうかを確認する.
  5. ポジション確認:価格は少なくとも20取引日間,150日間MA以上にとどまらなければならない.

購入条件は次のとおりです

  • 過去10日間に4日以上上昇し,少なくとも1日高取引量
  • RSI インディケーターがモメント条件を満たす
  • 上昇傾向と継続的な上昇を示した移動平均システム
  • 価格が150日間MAを超えて安定している

販売条件には以下が含まれます.

  • 価格突破 150 日間MAを下回る
  • 連続した大量減少
  • 50日間のMAが150日間のMAを下回る
  • 増幅されたボリュームの最近の下落のキャンドル

戦略 の 利点

  1. 複数の技術指標のクロスバリダーションは誤った判断を減らす
  2. 厳格なトレンド持続性要求は短期変動をフィルタリングする
  3. 音量分析の統合は信号の信頼性を向上させる
  4. 明確なストップ・ロストと利益取得条件が リスクを効果的に制御する
  5. 中長期の傾向を把握し,取引頻度を減らすのに適しています
  6. 明確な戦略論理,理解し実行しやすい

戦略リスク

  1. 移動平均システムには遅れがあり,初期トレンド段階を逃す可能性があります
  2. 厳格な参入条件によって,いくつかの取引機会が失われる可能性があります
  3. 不安定な市場で頻繁に誤った信号を生む可能性があります
  4. 市場の逆転を特定する遅延
  5. 引き上げに耐えるために,より大きな資本規模が必要である

リスク 管理 の 提案:

  • 合理的なストップ・ロスのポジションを設定する
  • 保守的なマネー管理
  • 傾向確認指標を追加することを検討する
  • 市場環境に基づいてパラメータを調整する

戦略の最適化方向

  1. アダプティブパラメータを追加する
  • 市場変動に基づいて MA 期間を動的に調整する
  • RSI 限界設定を最適化する
  1. ストップ・ロスのメカニズムを改善する
  • トレイリングストップを追加する
  • 時間に基づく停止を設定する
  1. 市場環境分析を導入する
  • トレンド強度指標を追加する
  • 変動指標を考慮する
  1. 取引サイズを最適化
  • ダイナミック位置管理の設計
  • 信号強度に基づいて調整する

概要

この戦略は,複数の技術指標の協調的な使用を通じて強力なトレンド機会を効果的に把握する厳格に設計されたトレンドフォロー戦略である.この戦略の主な利点は,包括的な信号確認メカニズムと厳格なリスク管理システムにある.一定の遅れがある一方で,合理的なパラメータ最適化とリスク管理を通じて,戦略は長期間の運用で安定したパフォーマンスを維持することができる.投資家は,市場環境の適応性,合理的な位置制御,およびライブ取引で戦略を適用する際に実際の状況に基づいて標的の最適化を行うことをお勧めする.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Micho's 150 (1D Time Frame Only)", overlay=true)

// Define the length for the SMAs and RSI
sma20Length = 20
sma50Length = 50
sma150Length = 150
sma200Length = 200
volumeMaLength = 20
rsiLength = 14
rsiSmaLength = 14
smaCheckLength = 40  // Check the last month of trading days (~20 days)
requiredRisingDays = 25  // Require SMA to rise in at least 16 of the past 20 days
sma150AboveSma200CheckDays = 1  // Require SMA150 > SMA200 for the last 10 days

// Calculate the SMAs for price
sma20 = ta.sma(close, sma20Length)
sma50 = ta.sma(close, sma50Length)
sma150 = ta.sma(close, sma150Length)
sma200 = ta.sma(close, sma200Length)

// Calculate the 20-period moving average of volume
volumeMA20 = ta.sma(volume, volumeMaLength)

// Calculate the 14-period RSI
rsi = ta.rsi(close, rsiLength)

// Calculate the 14-period SMA of RSI
rsiSMA = ta.sma(rsi, rsiSmaLength)

// Check if most of the last 5 days are buyer days (close > open)
buyerDays = 0
for i = 0 to 9
    if close[i] > open[i]
        buyerDays := buyerDays + 1

// Check if at least 1 day has volume higher than the 20-period volume MA
highVolumeDays = 0
for i = 0 to 9
    if close[i] > open[i] and volume[i] > volumeMA20
        highVolumeDays := highVolumeDays + 1

// Define the new RSI condition
rsiCondition = (rsi >= 55) or (rsiSMA > 50 and rsi > rsi[1])

// Check if the 50-day SMA has been rising on at least 16 of the last 20 trading days
risingDays = 0
for i = 1 to smaCheckLength
    if sma50[i] > sma50[i + 1]
        risingDays := risingDays + 1

// Check if the SMA has risen on at least 16 of the last 20 days
sma50Rising = risingDays >= requiredRisingDays

// Check if the price has been above the SMA150 for the last 20 trading days
priceAboveSma150 = true
for i = 1 to smaCheckLength
    if close[i] < sma150[i]
        priceAboveSma150 := false

// Check if the SMA150 has been above the SMA200 for the last 10 days
sma150AboveSma200 = true
for i = 1 to sma150AboveSma200CheckDays
    if sma150[i] < sma200[i]
        sma150AboveSma200 := false

// Define the conditions for the 150-day and 200-day SMAs being rising
sma150Rising = sma150 > sma150[1]
sma200Rising = sma200 > sma200[1]

// Check if most of the last 5 days are seller days (close < open)
sellerDays = 0
for i = 0 to 9
    if close[i] < open[i]
        sellerDays := sellerDays + 1

// Check if at least 1 day has seller volume higher than the 20-period volume MA
highSellerVolumeDays = 0
for i = 0 to 9
    if close[i] < open[i] and volume[i] > volumeMA20
        highSellerVolumeDays := highSellerVolumeDays + 1

// Check in the last N days the price below 150
priceBelowSma150 = true
for i = 0 to 0
    if close[i] > sma150[i]
        priceBelowSma150 := false

// Restrict the strategy to 1D time frame
if timeframe.isdaily
    // Buy condition:
    // - Most of the last 5 days are buyer days (buyerDays > 2)
    // - At least 1 of those days has high buyer volume (highVolumeDays >= 1)
    // - RSI SMA (14-period) between 45 and 50 with RSI >= 55, or RSI SMA > 50 and RSI rising
    // - 50-day SMA > 150-day SMA and 150-day SMA > 200-day SMA
    // - 50-day SMA has been rising on at least 16 of the last 20 trading days
    // - The price hasn't been below the 150-day SMA in the last 20 days
    // - 150-day SMA has been above the 200-day SMA for the last 10 days
    // - 150-day and 200-day SMAs are rising
    buyCondition = (close > sma150 and buyerDays > 4 and highVolumeDays >= 1 and rsiCondition  and sma50 > sma150 and sma50Rising and sma150Rising and sma200Rising and priceAboveSma150)

    // Sell condition:
    // - Price crossing below SMA 150
    // - Seller volume (current volume > volume MA 20)
    // - 150-day SMA crosses below 200-day SMA
    // - Most of the last 5 days are seller days (sellerDays > 2) and at least 1 day of higher seller volume (highSellerVolumeDays >= 1)
    sellCondition = (priceBelowSma150 and (sma50 < sma150 or (sellerDays >5 and highSellerVolumeDays >= 5)))

    // Execute buy when all conditions are met
    if (buyCondition)
        strategy.entry("Buy", strategy.long)

    // Execute sell when all conditions are met
    if (sellCondition)
        strategy.close("Buy")


関連性

もっと