この戦略は,ビットコインの真の強度指数 (TSI) を計算し,ビットコインのアルゴリズム取引を実施するために,RSI指標によってフィルタリングされたロング/ショートポジションを入力することによってビットコイン市場のトレンドを特定する.これは,ビットコインのティックデータをプログラム的に取引したい投資家に適しています.
この戦略の核は,真の強度指数 (TSI) である.TSIは,価格変動の絶対幅と方向を2倍に均等化し,それによって価格上昇と下落の絶対強度を特定することによって測定する.具体的な計算は以下のとおりである:
TSIが信号線 tsi2を横切ると長信号が生成される. TSIが tsi2を下回ると短信号が生成される.また,戦略は TSI信号をRSIでフィルタリングする.RSIが50を超えると長信号と,RSIが50を下回ると短信号のみを取ることで,いくつかの誤った信号を避ける.
この戦略の利点は以下の通りです.
この戦略のリスクは以下のとおりです.
RSIのフィルタールールを緩和し,EMA期間を短縮することで,遅延エミッションとフィルター効果を減らすことができます.適切なストップロスの戦略を使用して,取引リスクを厳格に制御する必要があります.
戦略は以下の側面で最適化できます.
最適な組み合わせを見つけるために TSI と RSI パラメータを最適化します. 長/短 EMA 期間, RSI パラメーター等を調整します.
マルチファクターモデルを構築するためにより多くの技術指標を導入します.MA,KDなどを追加して各指標の利点を得ることができます.
低トレンドで長,上昇トレンドで短を避けるためにエントリールールを最適化します.より長い時間枠のトレンドに基づいて方向性を判断します.
ストップ・ロスのストラテジーを最適化します. トレイリング・ストップ・ロス,タイム・ベース・ストップ・ロス,ブレイクアウト・ストップ・ロスなど.
退場規則を最適化して,早過ぎたり遅すぎたりする退場を避ける.不安定性指標は適切な退出点を決定するのに役立ちます.
最適な商品に 焦点を当てます
この戦略は,ビットコインの短期トレンドをTrue Strength Indexで識別し,アルゴリズム的なビットコイン取引のためのRSIでシグナルをフィルターする.トレンドを敏感に捉え,ノイズをフィルターする利点もありますが,いくつかの遅れの問題と取引リスクもあります.多面的な最適化は,信頼できるビットコイン取引の専門家アドバイザーを開発するために戦略のパフォーマンスをさらに改善することができます.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // strategy("True Strength Indicator BTCUSD 15p", shorttitle="TSI BTCUSD 15p",initial_capital=1000, commission_value=0.15, commission_type =strategy.commission.percent, default_qty_value=100 , overlay = false, pyramiding=10, default_qty_type=strategy.percent_of_equity) //BASED ON True Strength Indicator MTF resCustom = input(title="Timeframe", defval="15" ) long = input(title="Long Length", defval=25) short = input(title="Short Length", defval=13) signal = input(title="Signal Length", defval=13) price = request.security(syminfo.tickerid,resCustom,close) double_smooth(src, long, short) => fist_smooth = ta.ema(src, long) ta.ema(fist_smooth, short) pc = ta.change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) tsi2=ta.ema(tsi_value, signal) plot(tsi_value, color=color.lime,linewidth=2) plot(tsi2, color=color.red,linewidth=2) rsiserie = ta.rsi(price,7) cciserie = ta.cci(price,14) stochserie = ta.stoch(price,14,3,3) plot(rsiserie,color=color.purple) hline(30, title="Zero") hline(50, title="Zero",linestyle=hline.style_solid, linewidth=2) hline(70, title="Zero") buy = ta.crossover(tsi_value, tsi2) //and rsiserie[1]<25 //and cciserie<-100 and stochserie<20 sell = ta.crossunder(tsi_value, tsi2) //and rsiserie[1]>85 //and cciserie>100 and stochserie>80 alertcondition(buy, title='TSI system', message='Buy signal at!' ) alertcondition(sell, title='TSI system', message='Sell signal at!' ) strategy.entry("BUY", strategy.long, 1, when = buy) strategy.entry("SELL", strategy.short, 1, when = sell ) greentsi =tsi_value redtsi = tsi2 bgcolor( greentsi>redtsi and rsiserie > 50 ? color.lime : na, transp=90) bgcolor( greentsi<redtsi and rsiserie < 50 ? color.red : na, transp=90) yellow1= redtsi > greentsi and rsiserie > 50 yellow2 = redtsi < greentsi and rsiserie < 50 bgcolor( yellow1 ? yellow : na, transp=80) bgcolor( yellow2 ? yellow : na, transp=50) bgcolor( yellow1 and yellow1[1] ? yellow : na, transp=70) bgcolor( yellow2 and yellow2[2] ? yellow : na, transp=70) bgcolor( rsiserie > 70 ? color.lime : na, transp=60) bgcolor( rsiserie < 30 ? color.red : na, transp=60)