移動平均パーセント反転戦略


作成日: 2023-09-14 14:53:53 最終変更日: 2023-09-14 14:53:53
コピー: 0 クリック数: 605
1
フォロー
1617
フォロワー

戦略原則

移動平均率逆転策は,価格と移動平均のパーセント差を計算することによって,買い買いのタイミングを判断する.価格と移動平均の差が一定パーセントに達したときに取引シグナルを生成する.

この戦略の交易論理は,以下のようなものです.

  1. 価格と長さNの移動平均の差を計算する
  2. 差を価格で割った割合に変換します.
  3. %差がデフォルトの上限 (例えば5%) よりも大きい場合,空白
  4. %差がデフォルトの下限より小さい場合 (例えば-3%) より多く行う
  5. 選択可能な反転信号,つまり,多回転を空回転,空回転を多回転

Nが14で,上限は5%で,下限は-3%と設定すると:

  • 価格が14日移動平均より5%高いとき,空白
  • 価格が14日移動平均より3%低いとき,さらに多くをします.

N,上下限パラメータを調整することで,戦略の感度を制御できます.

戦略的優位性

  • 価格の絶対値の影響を受けないように,パーセントの形式を使用します.
  • 市場パラメータに応じて調整し,異なる周期に適用できます
  • BREAK戦略は,トレンドの転換を早期に捉えるのに役立ちます.

戦略リスク

  • %差はトレンドの方向を決定できない
  • フィルタリングが必要で誤った信号が発せられる
  • 移動平均は遅れており,変化を把握することができません.

要約する

移動平均の百分策は,価格と移動平均の百分差を計算して買賣点を判断し,BREAK策を採用し,トレンドの転換点を捉えることを目的としている.パラメータを調整することで,異なる市場環境に適応することができる.しかし,ある程度の遅滞と誤報のリスクがあり,最適化フィルタリングが必要である.

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/07/2018
// Percent difference between price and MA
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Percent difference between price and MA Backtest")
Length = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
xSMA = sma(close, Length)
nRes = abs(close - xSMA) * 100 / close
pos = iff(nRes < BuyZone, 1,
       iff(nRes > SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(nRes, color=blue, title="PD MA")