移動平均の戦略をフォローする傾向

作者: リン・ハーンチャオチャン開催日:2024年2月29日 (月) 14:00:35
タグ:

img

概要

この戦略は,チャネル移動平均線を計算し,価格がチャネルラインを突破して株価のトレンドに従うときにロングまたはショートポジションを確立します. これはトレンドフォロー戦略に属します.

戦略原則

この戦略は,まず,チャネルの上部レールとして20日間の高平均を計算し,チャネルの下部レールとして20日間の低平均を計算し,チャネルのミッドラインを計算する.チャネルのミッドラインは最近の平均価格傾向を表します.価格がチャネルのミッドラインを上向きに突破すると,ロングポジションが確立されます.価格がチャネルのミッドラインを下向きに突破すると,ショートポジションが確立されます.価格がチャネルの範囲の反対側に戻るまで価格トレンドをフォローして,ポジションを閉じます.

利点分析

  • 価格動向を追跡するためにチャネルを利用し,様々な市場で資金が閉じ込まれるのを避ける.
  • チャンネルレールは入口と出口を決定し,入口を制御することを容易にする.
  • チャンネル範囲はノイズをフィルタリングし 利益の確率を高めます
  • チャンネルパラメータは,戦略の敏感性を調整するために調整できます.

リスク分析

  • 中間線が大きく突破すると,中間線が引っ張られる試験が続い,その結果,中間線が閉じ込められる.
  • 振動株はこの戦略に適さないし,高周波取引につながる可能性がある.
  • 間違ったパラメータ設定も戦略のパフォーマンスに影響を与える可能性があります.

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

  • 異なるパラメータの影響をテストするためにチャネルサイクルパラメータを最適化する.
  • 単一の損失と総損失を制御するために,利益を取ることとストップ損失戦略を追加します.
  • 誤った信号を避けるため,他の指標を補助判断として組み合わせる.
  • 引き戻し試験中に閉じ込められる可能性を減らすため,各セットで位置を決めます.

概要

一般的には,この戦略は比較的シンプルで直接的なものです. 基本価格チャネルを通じて株価の傾向を判断し,次のタイプのトレンドに属します. 利点としては,操作が簡単で,価格トレンドによってもたらされる投資機会を完全に利用し,ファンドロックアップを避けることです. デメリットとしては,不適切なパラメータ設定がパフォーマンスに影響し,プルバックテストのリスクがあります. 合理的な最適化によって,戦略の安定性が向上し,実際の取引パフォーマンスが向上することができます.


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

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



もっと