単点移動平均のブレイク戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-02 11:19:19
タグ:

img

概要

シングルポイント移動平均ブレイクアウト戦略は,チャンデ・モメンタム・オシレーターに基づいた定量的な取引戦略である.価格のモメンタム変化を計算することによって,市場が統合段階にあるときを検出する.チャンデ・モメンタム線が購入線の上を横切るか,販売線以下に落ちると,それに従ってロングまたはショート取引が実行される.

戦略の論理

戦略はまず価格動向の変化を計算しますmommプラスモメントに分割します.m1そして負の勢いm2振り返る期間における正と負の動向をsm1そしてsm2最後にチャンド・モメントオシレーターchandeMOこの指標はゼロ線周りに振動する.ゼロ以上の値が強い上向きモメンタムを示し,ゼロ以下の値が強い下向きモメンタムを示します.

チェンデ・モメンタム線が低水準から購入線を越えると,価格はダウントレンドから突破し,上昇トレンドを開始する準備ができていることを示します. 戦略は長いものになります. ラインがより高いレベルから販売ラインを下回ると,ショートポジションが開始されます.

利点分析

  • この戦略は,下落傾向から統合傾向へ上昇傾向への転換点を特定し,低価格での入場と高価格での出口を可能にします.
  • チャンデ・モメンタム・オシレーターは 価格変動の大きさと速度の両方を考慮し,トレンド検出に非常に効果的です.
  • 戦略の論理はシンプルで 実行も簡単です

リスク分析

  • チャンデ・モメントオシレーターは入力パラメータに敏感である.異なるパラメータ調整により,非常に異なる取引信号と結果が生じる.
  • 静的な買い物・売り物ライン設定も 過剰な誤った信号をもたらす可能性があります
  • ストップロスの欠如は,失敗する取引が大きな損失を蓄積させる可能性があります.

改善する方法には,ダイナミックな買い/売線,他の指標でシグナルをフィルタリング,リスク制御のためのストップロスの実施が含まれます.

オプティマイゼーションの方向性

  • 最適値を見つけるために異なるパラメータ設定をテストする
  • ダイナミックな買い物・販売ラインを採用する
  • 他の指標で追加のフィルターを追加する
  • 損失を削減するためにストップ・ロスの論理を組み込む

結論

シングルポイント移動平均ブレイクアウト戦略は,チャンデモメントオシレーターを使用してダウントレンドから統合へアップトレンドへのトレンドターニングポイントを特定し,低買い高売り取引を可能にします. シンプルで直感的なにもかかわらず,パラメータチューニング,シグナルフィルタリング,リスク管理の改善はパフォーマンスをさらに向上させることができます. 全体的に,定量的なトレーダーはトレンド逆転を決定するための効果的なツールとして機能します.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2)
length = input(9, minval=1)
src = input(close, "Price", type = input.source)
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, length)
sm2 = sum(m2, length)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)
hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
buyline= input(-80)
sellline= input(80)
hline(buyline, color=color.gray)
hline(sellline, color=color.gray)

if testPeriod()
    if crossover(chandeMO, buyline)
        strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss 
        
    if crossunder(chandeMO, sellline)
        strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss

//      remember to alert as    {{strategy.order.alert_message}}

もっと