底部漁業戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-18 15:44:10
タグ:

img

概要

ボトムフィッシング戦略は,典型的な低値購入と高値販売戦略である.RSIインジケーターを使用して過売り点を特定し,価格が一定程度低下すると購入信号を発行し,より低い価格でトークンを蓄積する.価格がリバウンドすると,RSI出口限界を設定することで利益を得ます.この戦略は中長期保有に適しています.不安定な市場で偽ブレイクを効果的にフィルタリングし,保有料金のコストベースを最適化することができます.

戦略の論理

この戦略は,主にRSIインジケーターに頼り,過剰販売状態を特定する.RSIインジケーターの通常の範囲は0から100である.RSIインジケーターが設定されたエントリースリージルの35を下回ると,購入信号が発行される.RSIインジケーターが設定された出口スリージルの65を下回ると,販売信号が発行される.これは,低価格購入と高価格販売を実装するために,トレンド逆転点にタイムリーエントリーと出口を可能にします.

さらに,RSIインジケーターと組み合わせた条件を形成するために,戦略には100期間の単純な移動平均値も導入されています.RSIが過売領域に入るとき,価格が移動平均値を下回るときにのみ,購入信号が起動します.これは誤ったブレイクアウトを一定程度フィルタリングし,不必要な取引を減らすのに役立ちます.

戦略 の 利点

  • RSI を使って,逆転点への入力を有効に識別し,より良いコストベースを得ます.

  • 移動平均値と組み合わせて,ピークで購入するのを避けることで,誤った信号をフィルタリング

  • 中期から長期にわたる保有に適しており,潜在的上昇傾向を検出できる

リスク と 解決策

  • ある程度の遅れがあり, 迅速な逆転の機会を逃している可能性があります

    • インディケーターの反応を速めるために,RSIの計算期間を適切に短縮する
  • 変動市場では,より多くのブレイク・イブンまたは負ける閉店が起こる可能性があります.

    • 移動平均を調整するまたは移動平均を削除する
    • RSI 入口と出口パラメータを適切にリラックスする

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

  • 異なるコインとタイムフレームでテストパラメータの最適化

  • MACD,ボリンジャー帯など他の指標を組み合わせてみてください

  • RSI パラメータまたは移動平均 パラメータを動的に調整する

  • ポジションサイズ戦略を最適化

概要

ボトムフィッシング戦略は,全体的に堅牢で実用的な低価格購入と高価格販売戦略である.RSIと移動平均値との二重フィルタリングによって,誤った信号を効果的に抑制し,最適化されたパラメータで低コストベースを得ることができます.同時に,指標パラメータを適切に最適化し,ポジション戦略を調整することで,資本利用効率が向上する可能性があります.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 1m
basePeriod: 1m
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/
// © Coinrule

//@version=4
strategy(shorttitle='Optimized RSI Strategy',title='Optimized RSI Strategy - Buy The Dips (by Coinrule)', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"



// RSI inputs and calculations
lengthRSI = (14)
RSI = rsi(close, lengthRSI)

RSI_entry = input(35, title = 'RSI Entry', minval=1)
RSI_exit = input(65, title = 'RSI Close', minval=1)

//Calculate Moving Averages
movingaverage_signal = sma(close, input(100))

//Entry 
strategy.entry(id="long", long = true, when = RSI< RSI_entry and close < movingaverage_signal and window())

//Exit
//RSI
strategy.close("long", when = RSI > RSI_exit and window())

plot (movingaverage_signal)


もっと