RSI-VWAP 短期的な量子戦略

作者: リン・ハーンチャオチャン開催日:2024年1月19日 (月) 14:21:15
タグ:

img

概要

この戦略は"RSI-VWAP短期戦略"と呼ばれる.RSI指標とボリューム重量平均価格 (VWAP) を技術指標として使用し,長期および短期信号を生成し,それによって購入および販売の決定を下す.この戦略は,短期市場における過剰購入および過剰販売現象を把握し,過剰収益を達成することを目的としています.

戦略原則

  1. RSI インディケーターを使用して,市場が過買いまたは過売れているかどうかを判断します.80以上のRSI値は過買いエリアを示し,20以下の値は過売エリアを示します.
  2. RSI インディケーターは,閉盘価格の代わりにVWAPをソースデータとして使用します.VWAPは,その日の平均取引価格をよりよく反映します.
  3. RSIがoversoldエリアから20を超えると買い信号が生成される.oversoldエリアから80を超えると売り信号が生成される.
  4. この戦略は 長期に限らず 短期に限らず 過剰売買で購入し 過剰購入で販売するだけです

利点分析

  1. RSIのデータソースとしてVWAPを使用すると,RSIインジケーターは市場をより正確に判断し,偽のブレイクによって誤導されないようにします.
  2. 長期取引をするだけで 取引頻度が減り 長期的に安定した収益が得られるのです
  3. RSIパラメータは17で 短期取引に適しています
  4. 低周波取引方法は,取引が少なくなり,取引コストが減り,収益率が高くなるのを助けます.

リスク分析

  1. 量子戦略のバックテストでは過適性リスクがあり,実際の結果はバックテストとは異なる可能性があります.
  2. ダウントレンドの機会を掴むことができず 単にロングで走るだけです
  3. 過剰購入と過剰販売の基準はすべての製品に適合しない可能性があるため,パラメータは異なる製品に対して調整する必要があります.
  4. どんな技術指標も 誤った信号を生む可能性があり 損失は完全に避けられません

過剰購入と過剰販売の基準を適切に緩和し,他の指標を組み合わせて信号を確認し,パラメータ範囲を調整することでリスクを軽減できます.

オプティマイゼーションの方向性

  1. 戦略のパフォーマンスに対する異なるパラメータの影響をテストし,RSI長度と過買い/過売値値を最適化します.
  2. ストップ・ロスの戦略を追加して,ストップ・ロスの移動,タイム・ストップ・ロスの移動などによって,いくつかの利益をロックし,引き下げを減らす.
  3. 信号の精度を高めるために他の指標を組み合わせて信号をフィルターする.
  4. 戦略が異なる製品により適するように,異なる製品の特徴に応じて独立したパラメータ範囲を設定します.

結論

VWAPは,RSIの判断をより正確にして,長期間のみ取引頻度を減少させる.戦略の考え方は明確で,理解し実行しやすく,量子トレーディング初心者にも適しています.しかし,単一の指標戦略は完璧とは限らないので,より良い実績のために常に最適化する必要があります.


/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
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/
// © Xaviz

//#####©ÉÉÉɶN###############################################
//####*..´´´´´´,,,»ëN########################################
//###ë..´´´´´´,,,,,,''%©#####################################
//###'´´´´´´,,,,,,,'''''?¶###################################
//##o´´´´´´,,,,,,,''''''''*©#################################
//##'´´´´´,,,,,,,'''''''^^^~±################################
//#±´´´´´,,,,,,,''''''''^í/;~*©####æ%;í»~~~~;==I±N###########
//#»´´´´,,,,,,'''''''''^;////;»¶X/í~~/~~~;=~~~~~~~~*¶########
//#'´´´,,,,,,''''''''^^;////;%I^~/~~/~~~=~~~;=?;~~~~;?ë######
//©´´,,,,,,,''''''''^^~/////X~/~~/~~/~~»í~~=~~~~~~~~~~^;É####
//¶´,,,,,,,''''''''^^^;///;%;~/~~;í~~»~í?~?~~~?I/~~~~?*=íÑ###
//N,,,,,,,'''''''^^^^^///;;o/~~;;~~;£=»í»;IX/=~~~~~~^^^^'*æ##
//#í,,,,,''''''''^^^^^;;;;;o~»~~~~íX//~/»~;í?IíI»~~^/*?'''=N#
//#%,,,'''''''''^^^^^^í;;;;£;~~~//»I»/£X/X/»í*&~~~^^^^'^*~'É#
//#©,,''''''''^^^^^^^^~;;;;&/~/////*X;í;o*í»~=*?*===^'''''*£#
//##&''''''''^^^^^^^^^^~;;;;X=í~~~»;;;/~;í»~»±;^^^^^';=''''É#
//##N^''''''^^^^^^^^^^~~~;;;;/£;~~/»~~»~~///o~~^^^^''''?^',æ#
//###Ñ''''^^^^^^^^^^^~~~~~;;;;;í*X*í»;~~IX?~~^^^^/?'''''=,=##
//####X'''^^^^^^^^^^~~~~~~~~;;íííííí~~í*=~~~~Ií^'''=''''^»©##
//#####£^^^^^^^^^^^~~~~~~~~~~~íííííí~~~~~*~^^^;/''''='',,N###
//######æ~^^^^^^^^~~~~~~~~~~~~~~íííí~~~~~^*^^^'=''''?',,§####
//########&^^^^^^~~~~~~~~~~~~~~~~~~~~~~~^^=^^''=''''?,íN#####
//#########N?^^~~~~~~~~~~~~~~~~~~~~~~~~^^^=^''^?''';í@#######
//###########N*~~~~~~~~~~~~~~~~~~~~~~~^^^*'''^='''/É#########
//##############@;~~~~~~~~~~~~~~~~~~~^^~='''~?'';É###########
//#################É=~~~~~~~~~~~~~~^^^*~'''*~?§##############
//#####################N§£I/~~~~~~»*?~»o§æN##################

//@version=4
strategy("RSI-VWAP INDICATOR", overlay=false)

// ================================================================================================================================================================================
// RSI VWAP INDICATOR
// ================================================================================================================================================================================

// Initial inputs
Act_RSI_VWAP = input(true, "RSI VOLUME WEIGHTED AVERAGE PRICE")
RSI_VWAP_length = input(17, "RSI-VWAP LENGTH")
RSI_VWAP_overSold = input(19, "RSI-VWAP OVERSOLD", type=input.float)
RSI_VWAP_overBought = input(80, "RSI-VWAP OVERBOUGHT", type=input.float)

// RSI with VWAP as source
RSI_VWAP = rsi(vwap(close), RSI_VWAP_length)

// Plotting, overlay=false
r=plot(RSI_VWAP, color = RSI_VWAP > RSI_VWAP_overBought ? color.red : RSI_VWAP < RSI_VWAP_overSold ? color.lime : color.blue, title="rsi", linewidth=2, style=plot.style_line)
h1=plot(RSI_VWAP_overBought, color = color.gray, style=plot.style_stepline)
h2=plot(RSI_VWAP_overSold, color = color.gray, style=plot.style_stepline)
fill(r,h1, color = RSI_VWAP > RSI_VWAP_overBought ? color.red : na, transp = 60)
fill(r,h2, color = RSI_VWAP < RSI_VWAP_overSold ? color.lime : na, transp = 60)

// Long only Backtest
strategy.entry("Long", strategy.long, when = (crossover(RSI_VWAP, RSI_VWAP_overSold)))
strategy.close("Long", when = (crossunder(RSI_VWAP, RSI_VWAP_overBought)))

もっと