動的移動平均値に基づく戦略をフォローする傾向

作者: リン・ハーンチャオチャン,日付: 2024-01-02 10:44:53
タグ:

img

概要

この戦略は,動向平均指標をベースに,リアルタイムで価格動向を追跡し,動向平均が突破されたときに取引信号を生成する.この戦略の利点は,シンプルなパラメータ設定,明確な信号ルール,中長期保有に適している.

戦略の論理

この戦略は,ALMA,EMA,SMAなど動的な移動平均指標を利用する. 原則は,価格が移動平均値を超えるとロングで,その下を突破するとショートである.つまり,移動平均値は価格トレンドのバロメーターとして機能し,トレンド逆転が発生すると信号が生成される.

ストラテジーは,低価格と高価格によって形成された移動平均値を使用する.低価格MAはロング信号の信号ラインとして機能し,高価格MAはショートラインとして機能する.閉値が低価格MAを超えるとロングする.閉値が高価格MAを下回るとショートする.

価格傾向をMAで判断し,ブレイクアウト原理と組み合わせてシグナルを生成することで,シンプルで実践的なトレンドフォロー戦略が形成されます.

利点

  • 操作が簡単で MA インジケーター付きのシンプルなパラメータ設定
  • 偽信号のない明確な信号規則
  • 市場変化に適応するための柔軟なMAタイプ
  • 調整可能なMA期間が異なるトレンドサイクルに適している
  • 複数のタイムフレームの信号検証は信頼性を向上させる

リスク と 解決策

  • MAの遅れは,いくつかの機会を逃す可能性があります
    • マージュメント期間を短縮するか,EMAを使用するか
  • 短期間の大きなスウィングリスク
    • 柔軟性のためにストップ損失を拡大
  • 長期保有リスク 利益を間に合わない
    • 他の指標を組み合わせ,高値を追いかけて低値を殺すのを避ける

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

  • 標識の特徴に基づいて,承認証の種類とパラメータを調整する
  • 戦略を改善するために補助指標を追加
  • ストップ・ロスのメカニズムと 利益のメカニズムを追加する
  • タイムフレーム間の信号信頼性を評価する
  • より良いパラメータを見つけるために機械学習を利用する

結論

この戦略は,MAでトレンド方向を判断し,ブレイクアウト原則に基づいてシグナルを生成する.使いやすくて,中長期保有に適している.パラメータは市場の変化に適応するために調整することもできる.短期変動と長期保有からのリスクは,ストップ・ロスト/利益採取で管理する必要がある.より多くの指標を組み込み,機械学習を通じて最適なパラメータを見つけることによって改善の余地がある.


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

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

もっと