トレンドフォローの売買戦略


作成日: 2023-10-17 12:59:59 最終変更日: 2023-10-17 12:59:59
コピー: 0 クリック数: 628
1
フォロー
1617
フォロワー

トレンドフォローの売買戦略

概要

トレンドフォローの買取り戦略は,シンプルなトレンドフォローの日内取引戦略である.この戦略の基本的な考えは,移動平均に基づいてトレンドの方向を判断し,トレンドの揺れで買取りと売却することである.

戦略原則

この戦略は,SMAを使ってトレンドの方向を判断する.上昇傾向では,K線が低点になったとき (反転),戦略は,前K線の最高点を突破したときに多めに行う.下降傾向では,K線が高点になったとき (反転),戦略は前K線の最低点を突破したときに空にする.

この戦略はまた,Blanchflowerの意氏指数%Kと%Dを使用してトレンド判断を行う.%Kが%Dを突破すると平仓で反方向取引を行う.さらに,戦略はMACDとSignal曲線をフィルタリング条件として使用し,MACDとSignalがトレンド方向に適合する場合にのみ取引を行う.

この策略は,空きだけ,空きだけ,または同時に空きだけを行うことができる. 開始日については,測定開始の月と年を設定することができます. 移動平均周期,K周期,D周期,MACDパラメータなどのすべてのパラメータは,カスタマイズすることができます.

優位分析

  • 移動平均を用いてトレンドの方向を判断することで,波動を効率的にフィルターし,誤った取引を避ける.
  • ブランチフラワー指標の適用は,トレンドの逆転を早期に判断し,リスクを制御します.
  • MACDとSignalのフィルタリングにより,トレンド方向に合わないノイズ取引が減少
  • 価格行動に合わせてカスタマイズ可能なパラメータ
  • 市場環境に柔軟に適応する.

リスク分析

この戦略には以下のリスクがあります.

  • 移動平均を大きく破ると大きな損失が生じるリスク.移動平均の周期を適切に拡大してリスクを減らすことができます.
  • 振動的なトレンドで取引が頻繁になるのは,オーバートレードにつながる。%Kサイクルを増加させ,取引の頻度を低下させることができる。
  • MACDとSignalのパラメータを正しく設定しない場合,フィルタリングは無効になります.特定の品種に応じてパラメータを最適化する必要があります.
  • 双方向取引では余空のポジションが蓄積され,大きな損失が発生している.ポジションの規模は制限されるべきである.

最適化の方向

この戦略は以下の点で最適化できます.

  • 移動平均の周期を最適化し,トレンド判断を維持しながら,できるだけ振動をフィルターします.
  • %K,%Dのパラメータを最適化し,キャプチャトレンドの逆転を維持しながらウィップソーを減らす
  • MACDパラメータを最適化して,そのフィルタリング効果を良くしてノイズ取引を減らす
  • ポジション管理の強化,固定数量開設,浮動ポジションなど
  • 移動ストップ,時間ストップ,ATRストップなどの追加ストップ戦略

要約する

トレンド追跡戦略は,トレンドの方向を移動平均で判断し,指数フィルターを使用してトレンドの取引機会をロックする.この戦略は,パラメータ最適化によって良い効果を得ることができますが,最適化過度のリスクを軽減し,安定性を高めるためにCombineコードのパッケージングが必要です.さらに,リスクを制御するために適切な最適化は重要です.全体的に,この戦略は,一日間の取引戦略として,より実用的です.

ストラテジーソースコード
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)

// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)

//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal

if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)//	if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
    if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
		strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
    if (k < k[1])
		strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")

if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
    if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
		strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
    if (k > k[1])
		strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)