この戦略はStockRSI指標に基づいて開発されています.この戦略は主にStockRSI指標を使用して過買い・過売り状況を判断します.RSI指標と組み合わせて,いくつかの誤った信号をフィルタリングします.StockRSI指標が過買いエリアを示したときにショート,過売りエリアを示したときにロングで利益を上げます.
この戦略は主にStockRSI指標を適用し,市場の過剰購入および過剰販売領域を判断する.StockRSI指標はK線とD線で構成される.K線は,最近の期間におけるRSI価格範囲における現在のRSI値の位置を反映する.D線はK線の移動平均線である.K線がD線を超えると,過剰購入領域であり,ロングポジションを取ることができる.K線がD線を下回ると,過剰販売領域であり,ショートポジションを取ることができる.
戦略は,まず14期間のRSI指標の値を計算し,その後RSI指標にStockRSI指標を適用する.StockRSI指標パラメータは,長さ14で設定され,スムーズKライン期間が3で,スムーズDライン期間が3で設定される.Kラインがユーザー定義オーバーセールエリア (デフォルトは1) を越えると,ロングポジションが取られる.Kラインがユーザー定義オーバーセールエリア (デフォルトは99) 以下の位置に落ちると,ショートポジションが取られる.
さらに,ストップ・ロストとテイク・プロフィートのパラメータは戦略に設定されています.ストップ・ロスはデフォルトで10000です.テイク・プロフィートはデフォルトのトレーリングポイントが300でオフセットが0でトレーリング・ストップを使用します.
上記のリスクでは,より長いサイクルパラメータを設定したり,他の指標と組み合わせて使用することを検討したりして,シグナルをフィルタリングし,異なる市場に適応するために過剰購入および過剰販売パラメータを調整し,異なるストップ損失と利益のパラメータをテストすることができます.
この戦略は,StockRSI指標によって判断される過剰購入および過剰販売領域に基づいて取引する.単一のRSI指標と比較して,StockRSIはKDJのアイデアを組み合わせ,ターニングポイントをより正確に判断することができます.同時に,誤った信号はRSIによってフィルタリングされ,リスクはストップロストと利益を取ることで制御されます.最適化のための余地はまだ大きく,他の指標または最適化されたパラメータ設定と組み合わせることができます.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version= 2 strategy("STOCHRSI JURE", overlay=false) lengthrsi = input(10) overSold = input( 1 ) overBought = input(99) call_trail_stop = input(300) call_trail_offset = input(0) call_sl = input(10000) price = ohlc4 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) plot( k, color=blue, linewidth=1, title="K") plot( d, color=red, linewidth=1, title="D") if (crossover(k, overSold) ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") strategy.exit("BUY EXIT", "BUY", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl) if (crossunder(k, overBought) ) strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL") strategy.exit("SELL EXIT", "SELL", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl) //if ( ( crossover(k,d)) and ( (vrsi<overSold) or crossover(vrsi,overSold) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) // strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="BUY") //else // strategy.cancel(id="BUY") //if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) // strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="SELL") //else // strategy.cancel(id="SELL")