RSI インジケーター バカ取引戦略


作成日: 2024-01-29 11:42:46 最終変更日: 2024-01-29 11:42:46
コピー: 0 クリック数: 732
1
フォロー
1617
フォロワー

RSI インジケーター バカ取引戦略

概要

RSI指数吸盤取引戦略は,RSIとCCIの技術指標を統合した固定格子取引方法である.この戦略は,RSIとCCIの指標の値に基づいて入場タイミングを判断し,固定利益率と固定格子数を使用して,停止命令と加仓命令を設定する.また,戦略は,突破性価格変化に対するフードバック機構も統合している.

戦略原則

入学条件

5分と30分RSIが設定の値を下回り,1時間CCIが設定値を下回ると,多行シグナルが生じます.このとき,現在のクローズ価格を入場価格として記録し,口座権益と格子数に基づいて最初のポジション単位を計算します.

利息停止条件

入場価格を基準として,設定された目標収益率に従って収益価格を計算し,その価格レベルにストップ・オーダーを設定する.

押注条件

最初の単元を除いて,残りの固定ポジションの加仓単元は,入場信号後に1つずつ放出され,設定された格子数に達するまで放出される.

カバーメカニズム

入場価格より価格が上昇し,設定されたヘッジ・ブレイク・パーセンテージを超えた場合,保有するすべてのポジションに対してヘッジ・プリアージングを行う.

逆転する仕組み

入場価格に比べて価格が設定された逆転値パーセントを超えて下落した場合,未交付の注文をキャンセルし,新しい入場機会を待つ.

優位分析

  • RSIとCCIを組み合わせると,利得の確率が上がります.
  • 固定格子で目標収益を設定し,収益の確実性を高める
  • 価格の急激な波動のリスクを防ぐための統合されたヘッジメカニズム
  • 損失を軽減する反転メカニズムへの参加

リスク分析

  • 指示器が誤信号を発する確率
  • 価格の急激な波動により,
  • 逆転後,再回線を入れられませんでした.

これらのリスクは,指数パラメータの調整,対照幅の拡大,反転幅の減少によって軽減することができます.

最適化の方向

  • テストできる指標の組み合わせはもっとたくさんあります
  • 適応性抑制のメカニズムを研究する
  • ポジションを最適化できる

要約する

RSI指数吸盤トレード戦略は,指数で入場タイミングを判断し,固定格子ストップと加仓を使用して安定した利益をロックします. 同時に,戦略には,大幅な変動と逆転後の再入場メカニズムが備わっています. この複数のメカニズムを統合した戦略は,取引リスクを軽減し,利益率を高めるために使用できます.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Custom RSI/CCI Strategy with Fixed Grid", shorttitle="INVESTCOIN_RSI_CCI_Fixed_Grid", overlay=true)

// Input parameters
input_rsi_5min_value = 55
input_rsi_30min_value = 65
input_cci_1hr_value = 85
input_profit_target_percent = 0.6 // Target profit in percentage
input_grid_size = 15 // Number of orders in grid
input_hedging_percent = 20 // Percentage price change for hedging
input_first_order_offset = 0.2 // Offset for the first order in percentage
input_reversal_percent = 0.4 // Percentage price change for reversal

// Calculating the RSI and CCI values
rsi_5min = ta.rsi(close, 5)
rsi_30min = ta.rsi(close, 30)
cci_1hr = ta.cci(close, 60)

// Define strategy conditions based on the provided screenshot
long_condition = (rsi_5min < input_rsi_5min_value) and (rsi_30min < input_rsi_30min_value) and (cci_1hr < input_cci_1hr_value)

// Plot signals
plotshape(series=long_condition, title="Long Entry Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// Initialize a variable to store the entry price
var float entry_price = na

// Initialize a variable to store the profit target
var float profit_target = na

// Hedge condition based on price change percentage
var float hedge_price = na

// Initialize a variable to count the total number of orders
var int total_orders = 0

// Calculate the initial order size based on account equity and grid size
var float initial_order_size = 1 / input_grid_size / 100

// Entry orders with fixed size
if (long_condition and total_orders < 9000)
    // Place first order with an offset
    if total_orders == 0
        strategy.order("First Long", strategy.long, qty=initial_order_size, limit=close * (1 - input_first_order_offset / 100))
    total_orders := total_orders + 1
    
    // Place remaining grid orders
    for i = 1 to input_grid_size - 1
        if (total_orders >= 9000)
            break // Stop if max orders reached
        strategy.entry("Long_" + str.tostring(i), strategy.long, qty=initial_order_size)
        total_orders := total_orders + 1

// Calculate the profit target in currency
if (long_condition)
    entry_price := close // Store the entry price when the condition is true

if (not na(entry_price))
    profit_target := entry_price * input_profit_target_percent / 100 // Calculate the profit target

// Setting up the profit target
if (not na(profit_target))
    strategy.exit("Take Profit", "Long", limit=entry_price + profit_target)

// Hedge by closing all positions if the price increases by the hedging percentage
if (strategy.position_size > 0)
    hedge_price := close * (1 + input_hedging_percent / 100)

if (not na(hedge_price) and close >= hedge_price)
    strategy.close_all(comment="Hedging")


// Reversal condition based on the price change percentage
var float reversal_price = na

if (strategy.position_size > 0 and total_orders > 1) // Check if at least one grid order has been placed
    reversal_price := entry_price * (1 - input_reversal_percent / 100)

// Cancel trades and wait for a new entry point if the price reverses by the specified percentage
if (not na(reversal_price) and close <= reversal_price)
    strategy.cancel_all()
    total_orders := 0 // Reset the total orders count after cancellation