RSI戦略で動いた合理的なトレーディングロボット

作者: リン・ハーンチャオチャン,日付: 2024-02-19 14:43:34
タグ:

img

概要

この取引戦略は,自動化された取引決定を可能にする3つの堅牢な技術指標 - 相対強度指数 (RSI),ボリンジャー帯,サポート/レジスタンスレベルを組み込みます.ロボットが手動介入なしで,支配的な市場状況に基づいて潜在的なエントリーと出口点を知的に特定することができます.

戦略の論理

この取引ロボットの基本的な論理は RSI,ボリンジャーバンド,サポート/レジスタンス分析に基づいています

まず,RSIは進行傾向の強さを測定します.RSIが70を超えると過買い市場を示し,RSIが30を超えると過売り市場を示します.

第2に,ボリンジャー帯は市場の変動範囲を定義する.上部と下部帯は市場の通常の変動範囲をカバーする.上部帯に触ると,下向きの逆転が起こりうる比較的高いゾーンを示唆する.同様に,下部帯に触ると,上向きの反転が予想される比較的低いゾーンを示唆する.

最後に,サポートとレジスタンスレベルはボリンジャーバンドから導き出せます.サポートは下のバンドの周りに位置し,レジスタンスは上部バンドの周りに浮いています.これは上向きトレンドがレジスタンス周りの販売圧力に遭遇し,潜在的なダウンにつながる可能性があることを意味します.逆に,下向きトレンドはサポート周りの購入需要を満たし,技術的なリバウンドを誘発します.

これらの指標を統合することで,エントリーロジックは,価格がサポートと一致する下帯 (oversoldゾーン) に触ると長引く.価格が上帯 (oversoldゾーン) を突破して高値がレジスタンスを超えると短引く.出口ロジックは移動平均の方向の変化によって支配される.

主要 な 益

  1. 複数の指標を組み合わせることで強力な信号信頼性

  2. 手動による干渉なしに完全に自動実行

  3. 移動中の即時更新のためのリアルタイムアラート

  4. 取引レベルを視覚化するための直感的なチャート注釈

  5. 計測器と時間枠の間で最適化するためのカスタマイズ可能なパラメータ

リスク管理

  1. ストップ・ロスは例外的な変動によって発生する可能性があります.合理的なストップ・ロスは最大損失を制限するのに役立ちます.

  2. 適正でないパラメータ調節は,過剰取引または信号品質の低下につながる可能性があります.最適な設定のために,バックテスト結果に基づいてパラメータを微調整する必要があります.

  3. システムの故障は,信号切断や実行遅延を引き起こす可能性があります. 柔軟な接続とコンピューティングインフラストラクチャは重要です.

増進 の 機会

  1. ストップ・ロスのロジックを組み込み,下向きのリスクをさらに制限する.

  2. より賢明なリスク管理のために,口座資本に基づいてポジションのサイズを決める規則を導入する.

  3. 予測能力を向上させるために モデルを歴史的なデータで訓練することで 機械学習を活用する

  4. 各製品に適した最適なパラメータセットを明らかにするために,さまざまな製品でパラメータ最適化を行います.

結論

この戦略は強い適応性と汎用性を示しています.市場状況を評価するために複数の指標を監視することで,自動実行のためのトレンド逆転レベルを信頼的に特定することができます.アルゴリズムの継続的な改善は,アルファを一貫して生成するために戦略パフォーマンスを向上させます.定量的な取引に適した優れたアルゴ取引ソリューションです.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI, Bollinger Bands, and Support/Resistance Trading Bot", overlay=true)

// Define RSI parameters
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="Overbought Level")
rsiOversold = input(30, title="Oversold Level")

// Define Bollinger Bands parameters
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2, title="Bollinger Bands Multiplier")

// Calculate RSI
rsiValue = rsi(close, rsiLength)

// Calculate Bollinger Bands
basis = sma(close, bbLength)
upperBand = basis + bbMultiplier * stdev(close, bbLength)
lowerBand = basis - bbMultiplier * stdev(close, bbLength)

// Calculate Support and Resistance based on Bollinger Bands
support = basis - bbMultiplier * stdev(close, bbLength)
resistance = basis + bbMultiplier * stdev(close, bbLength)

// Strategy logic
rsiCondition = rsiValue > rsiOverbought or rsiValue < rsiOversold
touchingUpperBand = close >= upperBand
touchingLowerBand = close <= lowerBand

// Entry conditions
longCondition = touchingLowerBand and low <= support
shortCondition = touchingUpperBand and high >= resistance

// Exit conditions
longExitCondition = crossover(close, basis)
shortExitCondition = crossunder(close, basis)

// Automatic close if moving in opposite direction
if (strategy.position_size > 0 and shortCondition)
    strategy.close("Long")

if (strategy.position_size < 0 and longCondition)
    strategy.close("Short")

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot entry and exit arrows
plotarrow(series=longCondition ? 1 : na, colorup=color.new(color.green, 0), offset=-1, minheight=5)
plotarrow(series=shortCondition ? 1 : na, colordown=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=longExitCondition ? -1 : na, colorup=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=shortExitCondition ? -1 : na, colordown=color.new(color.green, 0), offset=-1, minheight=5)

// Plot Bollinger Bands on chart
plot(upperBand, title="Upper Band", color=color.red)
plot(lowerBand, title="Lower Band", color=color.green)

// Highlight areas where price touches Bollinger Bands
bgcolor(touchingUpperBand ? color.new(color.red, 90) : na)
bgcolor(touchingLowerBand ? color.new(color.green, 90) : na)

// Plot Support and Resistance
plot(support, title="Support", color=color.blue)
plot(resistance, title="Resistance", color=color.purple)

// Plot RSI on chart
hline(rsiOverbought, "Overbought Level", color=color.red)
hline(rsiOversold, "Oversold Level", color=color.green)
plot(rsiValue, title="RSI", color=color.blue)


もっと