離散移動平均に基づくトレンドブレイクアウト戦略


作成日: 2023-10-23 15:38:37 最終変更日: 2023-10-23 15:38:37
コピー: 0 クリック数: 795
1
フォロー
1617
フォロワー

離散移動平均に基づくトレンドブレイクアウト戦略

概要

この戦略は,価格が平滑な移動平均と相対的に偏っている程度を計算することによって,市場の傾向とトレンドの逆転の機会を判断する.これは,トレンド追跡戦略の一種であり,主な考えは平滑な移動平均を破るときに買ったり売ったりすることである.

戦略原則

  1. 価格の3期加重移動平均FPriceを計算し,平滑移動平均として使う.

  2. FPriceの過去17日間の標準差stdevと17日間の簡易移動平均ema2を計算する.

  3. 平均値から価格の偏差を計算する.

  4. Rate1<-1で上昇し始めると,下行平均を突破し,買取シグナルを生成する.

  5. Rate1>1で下落すると,上位平均を突破し,セールシグナルを生成する.

  6. シグナルに応じて開いたり平らになったりします.

この戦略は,価格が平均から1つの標準差を超えると取引シグナルを生成する.それは,短期市場のノイズを排除し,中長期のトレンド転換点を捉えるのに適しています.

優位分析

  1. ダイナミックな参照区間を使用し,市場の変動に自動的に適応します.

  2. スムーズな移動平均は,短期的なノイズを効果的にフィルターします.

  3. 標準差の範囲は,合理的な突破値を設定し,頻繁な取引を避ける.

  4. 価格が平均線に向かって動いている動きをフィルターとして使用し,偽突破を避ける.

  5. 戦略の論理はシンプルで明快で,理解し,実行しやすい.

  6. 市場のパラメータに応じて調整可能で,異なる取引品種に適用されます.

  7. 戦略の効果を高めるために,他の指標の組み合わせで使用できます.

リスク分析

  1. 市場が長期にわたって低波動状態にあるとき,取引の機会は少なくなることがあります.

  2. 標準差のパラメータが大きすぎたり小さすぎたりすると,良いチャンスを逃したり,偽信号が多すぎたりする.

  3. 価格が激しく波動すると,標準差は失効し,誤った信号を生じます.

  4. トレンド転換の前期には,偽の突破信号がより多く発生する可能性があります.

  5. 平均線システムは短期的な調整に敏感で,ショートラインの機会を逃す可能性があります.

  6. 特定の市場環境に適したパラメータとフィルタリング条件を合理的にカスタマイズする必要があります.

最適化の方向

  1. 移動平均の種類と日数を最適化して,品種特性に合わせる.

  2. 標準差倍数パラメータを調整し,最適な参照取引区間を探します.

  3. 価格動量指標などのフィルタリング条件を増加させ,偽突破信号を減少させる.

  4. 波動率指標と組み合わせて,市場の変動に応じて動的にパラメータを調整する.

  5. 勝利率を上げるために,他の類似の突破策の組み合わせと組み合わせる.

  6. トレンド転換の前期において,ポジション管理リスクの軽減を検討する.

  7. ストップ・ロスの戦略を導入し,単一損失をコントロールする.

要約する

この戦略は,全体的な考え方が明確で,価格トレンドの逆転点を効果的に識別することができ,パラメータの最適化と組み合わせにより,異なる市場環境に適用できます.しかし,リスク管理に注意し,激しい変動の際に誤ったシグナルを生じないようにする必要があります.最適化が適切であれば,それはシンプルで実用的なトレンド追跡戦略です.

ストラテジーソースコード
/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Mustafaozver

//@version=4
strategy("Escaping of Rate from Avarage By Mustafa OZVER", "EoRfA", overlay=false)
//strategy("Escaping of Rate from Avarage By Mustafa OZVER", "EoRfA", overlay=false)

src = input(ohlc4,"Source")
FPrice = wma(src,3)
len = input(17,"Length")

stdev = stdev(FPrice,len)
ema2 = ema(FPrice,len)

Rate1 = (FPrice - ema2) / stdev
//bgcolor(color=((stdev/ema)>0.0015)?color.green:#00000000,transp=80)

colorG = color.lime
colorR = color.red

hline(0,linestyle=hline.style_solid,editable=false)
hline1=hline(1,linestyle=hline.style_dotted,editable=false)
hlinen1=hline(-1,linestyle=hline.style_dotted,editable=false)
fill(hline1,hlinen1,color=color.silver,transp=85,editable=true)

//plot(Rate,color=(Rate>0?colorG:colorR),transp=75,style=plot.style_area,editable=false)

plot(Rate1,title="ESC1",color=(Rate1>0?colorG:colorR),style=plot.style_line,linewidth=1,editable=true)

BUYSIGNAL = Rate1 < -1 and change(Rate1) > 0
SELLSIGNAL = Rate1 > 1 and change(Rate1) < 0

if (BUYSIGNAL)
    strategy.order("LONG1",true)
    //strategy.close("SHORT1")

if (SELLSIGNAL)
   // strategy.order("SHORT1",false)
    strategy.close("LONG1")