複数の指標を組み合わせた定量取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-24 15:10:41
タグ:

img

概要

この戦略は,株式価格の3つの技術指標,RSI,StochRSI,ボリンジャー帯を使用し,取引時間と方向条件を組み合わせて,定量的な取引戦略のための買い売りシグナルを決定します.

原則

RSIインジケーターが下の領域より低く,StockRSI K線がD線以上を横切ると,それは購入信号とみなされます.同時に,株価がボリンジャーバンドの下線よりも安く,またはボリンジャーバンドの下線を下線を横切ると,購入のベースとしても使用されます.

RSIインジケーターが上限を超え,StockRSI K線がD線以下を横切ると,セールシグナルとみなされる.同時に,株価がボリンジャーバンド上限よりも高くなったり,ボリンジャーバンド上限を突破した場合も,セールベースとして使用される.

RSIインジケーターは,株価が過買いか過売れているかを判断し,StockRSIは株価の勢いを判断し,ボリンジャーバンドは株価が高水準で安く動いているかどうかを判断します.複数のインジケーターが組み合わせて購入と販売を決定します.

利点分析

これは,指標の幅広いカバーと包括的な判断基盤を持つ多指標組み合わせ戦略である.シグナルを判断する前に,現在の株価または指標とその値の間の交差が必要であり,これは誤ったシグナルに一定のフィルタリング効果を持っています.

特定の期間中により大きなリスクを避けるために,注文を出す前に時間条件の制限が追加されます.

複数の指標の判断を組み合わせることで,戦略の有効性を高めるために,より多くのタイプの傾向をマッチすることができます.

リスク分析

戦略は主に3種類の指標に依存する.指標が間違った信号を出せば,戦略は損失を引き起こす.指標は互いに検証すべきであり,特定の指標に完全に依存することはできません.例えば,特定の時間帯のRSI振動は,誤った信号を発行する可能性を増やす.

戦略に追加された時間判断条件も有利な市場条件を欠く可能性があります.

資源の選択が不適切である場合,例えば過大化効果のある資源の場合,これらの指標の有効性は大幅に低下します.これらの指標に対する資源の適用性は検討されるべきです.

最適化

  1. 損失を制限するために最大引き上げなどのリスク管理措置を強化する.

  2. 選択した株により良く合うように指標のパラメータを調整します.例えば,価格変化をより早く検出するためにRSIパラメータを加速します.

  3. フィルタリングメカニズムを増やし,株価がボリンジャー帯の真ん中にあるときに取引を停止し,市場変動を避ける.

  4. 株の選択は,重大な金融詐欺を伴う株を避けるために基本要素を指す.大資本株を選択するために,業界および市場価値判断も加えることができます.

概要

これは典型的な多変数技術指標戦略で,指標のバランスのとれた組み合わせと広範なカバーがあります.同時に,注文条件は厳格で,利益を達成するために株を効果的に選択することができ,引き下げは一定の範囲内で制御されます.指標とパラメータの最適化により,市場によりうまく適応できます.同時に,戦略の安定性と信頼性をさらに向上させるためにリスクを最小限に抑えるリスク管理メカニズムを増やすことができます.


/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("RSI+STOCHRSI+BB Strategy", overlay=true)
lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 70 )
price = close
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

bblength = input(50)
bbupmult =input(1.5,title="Multiplier for BB Upper Band")
bblowmult = input(1.5,title="Multiplier for BB Lower Band")

basis =  sma(close,bblength)

devup = bbupmult * stdev(close, bblength)
devlow = bblowmult * stdev(close, bblength)

upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)


yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  ( crossover(k,d)) and ( crossover(vrsi,overSold) or vrsi<overSold)  and (  (price<lower) or crossover(price,lower) ) ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and  ( (price>upper) or crossunder(price,upper) )) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

もっと