短期的な価格変動戦略を追跡するモメンタム指標


作成日: 2023-12-25 13:09:48 最終変更日: 2023-12-25 13:09:48
コピー: 0 クリック数: 554
1
フォロー
1623
フォロワー

短期的な価格変動戦略を追跡するモメンタム指標

概要

この戦略は,短期間の価格変化を追跡し,市場傾向の方向を判断し,買取と販売の操作を行う.この戦略は,Price Volume Trend Strategyと呼ばれる.この戦略は,価格変化と取引量の変化を判断する傾向を反映している.

戦略原則

この戦略は,まず価格の動きを計算する.現在の周期の価格と前期の価格の差を計算することによって,最新の周期内の価格の絶対的変化を反映することができる.正値は価格上昇を示し,負値は価格下落を示している.それから,この差の移動平均を計算し,波処理を行い,平均移動量指標が得られる.

最新価格が平均動量より大きいときは,価格が上昇していることを示し; 最新価格が平均動量より小さいときは,価格が下落していることを示します. この指標に基づいて価格のトレンド方向を判断します. 合成取引量の拡大フィルターを組み合わせて,実際の取引では取引量の大きい信号のみを選択します.

価格の上昇と下落の傾向を判断して,それに対応した買いと売却の操作を行う.

優位分析

  • 短期的な価格変動を迅速に捉え,短線操作に適したトレンド判断戦略
  • 偽の突破を回避するために,トランザクションをフィルターする.
  • 追いつく操作のロジックを実現
  • 積極的な投資家に適した取引頻度

リスク分析

  • 市場における異常な波動に敏感であり,偽信号の危険性がある
  • 取引の頻度による滑り込みリスク
  • 中長期トレンドを見逃し,長期的な収益性を検証する

最適化の方向

  • 動量指標のパラメータを調整し,判断効果を最適化
  • 通信量フィルタリングパラメータを最適化し,信号品質を向上させる
  • 単一損失を抑えるための止損機構の増強
  • 複数の要素を組み合わせた判断で 複数の要素が動いていることを確認する

要約する

この戦略overallは,動態指標を使用して,価格の短期変動のトレンドを追跡し,迅速に購入と販売のタイミングを判断する.優点は,迅速に操作し,落を阻止する;欠点は,信号品質と長期的な収益性を考慮する.パラメータ調整,風制御機構の強化により,この戦略は,高周波戦略の重要な構成要素になり,他の低周波戦略のポートフォリオと組み合わせて使用することができる.

ストラテジーソースコード
/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © russtic

//@version=2

strategy("HA smoothed eliminator v2  ",pyramiding=1, slippage=10, default_qty_type=strategy.percent_of_equity, 
     commission_type=strategy.commission.percent, commission_value=0.075, overlay=true, 
     default_qty_value=100, initial_capital=1000)

FromMonth1 = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay1 = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear1 = input(defval=2019, title="From Year", minval=2010)
ToMonth1 = input(defval=12, title="To Month", minval=1, maxval=12)
ToDay1 = input(defval=31, title="To Day", minval=1, maxval=31)
ToYear1 = input(defval=2020, title="To Year", minval=2010)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => true
    
t1 = time(timeframe.period, "0300-1200")
t2 = time(timeframe.period, "0930-1700")
London = na(t1) ? na : green
NY = na(t2) ? na : red

bgcolor(London, title="London")
bgcolor(NY, title="New York")
///////////////////////////
// HA smoothed

len=(1 )
o=ema(open,len)
c=ema(close,len)
h=ema(high,len)
l=ema(low,len)

haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))

len2=(len)
o2=ema(haopen, len2)
c2=ema(haclose, len2)
h2=ema(hahigh, len2)
l2=ema(halow, len2)

buy= (o2<c2) 

closebuy= (o2>c2)

sell= (o2>c2)

closesell= (o2<c2)

//
/// END NEW SCRIPT 

//
//
//                  MERGE SCRIPTS
a1= o2<c2
b1=o2>c2
is_uptrend = (a1)// and (p> 0)
is_downtrend =  (b1)// and (p <0)
barcolor(b1 ? red: a1 ? lime : blue)

//end


// =========================start     PVT -GIVES EACH BAR A VALUE
facton = (true)//, title="arrow elimination (factor) on ")
Length1 = 2//input(2, title="PVT Length", minval=1)

xPrice = close//input(title="Source", type=source, defval=close)
xsma = wma(xPrice, Length1) 
nRes = xPrice - xsma  
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -1, nz(pos[1], 0))) 
forex= input(true, title = 'strength toggle ')
forexyes = (forex == true)? 10000 : (forex == false)? 1: na

plot(nRes*forexyes , color=aqua, title="strength", transp=100)
// =========================         end pvt
//
//=============================     start factor // ELIMINATES  weak signals
//                  start trend
//
factor = input(600.00, title = "strength elimination") 
factor1 = factor - (factor*2)//input(-100.00, title = "sell strength elimination ") 
facton1 = (facton == true) and is_uptrend == 1 and nRes*forexyes>factor ? 1 : (facton == true) and is_downtrend == 1 and nRes*forexyes<factor1 ? -1 : (facton == false)
// ==================== =====
// 
//===========================    end factor
nRestrend = (nRes*forexyes)
//=========================== plot arrows 
plot1 = iff(is_uptrend[1] == 1, 0 , 1)  
plot2 = iff(is_downtrend[1]  == 1, 0 , 1)
uparrowcond =  is_downtrend ? false : nz(uparrowcond[1], false) == true ? uparrowcond[1] : (facton1 and is_uptrend and nRes*forexyes>factor)
downarrowcond =  is_uptrend ? false : nz(downarrowcond[1], false) == true ? downarrowcond[1] : (facton1 and is_downtrend and nRes*forexyes<factor1)
//prevarrowstate = uparrowcond  ? 1 : downarrowcond ? -1 : nz(prevarrowstate[1], 0)


candledir = (open < close)? 1: (open>close)? -1 : na // ONLY OPENS ON SAME BAR DIRECTION AS SIGNAL



up=nz(uparrowcond[1], false) == false and ( is_uptrend and nRes*forexyes>factor) and candledir ? 1:na
dn=nz(downarrowcond[1], false) == false and ( is_downtrend and nRes*forexyes<factor1) and candledir? -1:na



sig=0
if up==1 
    sig:=1
else
    if dn==-1
        sig:=-1
    else
        sig:=sig[1]
plotarrow(sig[1]!=1 and sig==1?1:na, title="BUY ARROW", colorup=lime, maxheight=80, minheight=50, transp=0)// up arrow 
plotarrow(sig[1]!=-1 and sig==-1?-1:na, title="SELL ARROW", colordown=red, maxheight=80, minheight=50, transp=0)// down arrow

//========================= alert condition
alertcondition(sig[1]!=1 and sig==1?1:na, title="BUY eliminator", message="BUY " ) 
alertcondition(sig[1]!=-1 and sig==-1?-1:na, title="SELL eliminator",  message="SELL ") 


strategy.entry("B", true, when=(sig[1]!=1 and sig==1?1:na) and window1())
strategy.entry("S", false,when=(sig[1]!=-1 and sig==-1?-1:na) and window1())