フィッシャーマンインジケータートレーリングストップロス戦略


作成日: 2024-02-02 14:57:33 最終変更日: 2024-02-02 14:57:33
コピー: 0 クリック数: 717
1
フォロー
1617
フォロワー

フィッシャーマンインジケータートレーリングストップロス戦略

概要

漁師指数移動ストップ戦略は,漁師指数と移動ストップメカニズムを融合した量的な取引戦略である.漁師指数を使用して買入と売却の信号を生成し,利益をロックするためにトラッキングストップを設定し,利益を保護しながらより大きな利益を得るために.

戦略原則

  1. 日付の範囲を入力し,回測またはディスクの期間を制限します.
  2. 釣り人の指標のパラメータを入力する,デフォルトは2サイクル
  3. 入力ストップ損失比率,デフォルト5%ストップ,2%ストップ損失
  4. 漁師指数の計算主線と信号線
  5. メインラインで信号線を横切ると購入信号が生成される.
  6. ストップトラッキングを設定し,長期ポジションに入ってから価格が2%下がった時にストップします.
  7. 価格上昇が5%を超えると止まる

優位分析

  1. 漁師の指数はトレンドを判断し,購入シグナルも正確
  2. ストップ・トラッキングメカニズムは,設定されたストップ・ポイントを超えて利益のほとんどをロックし,同時に回避します.
  3. 異なる市場環境に対応するカスタマイズ可能なパラメータ
  4. シンプルで使いやすく,理解しやすい

リスク分析

  1. パラメータの設定が不適切である場合,過激な取引が起こり,慎重にテストする必要があります.
  2. ストップポイントが大きすぎると,Outiliersが予想以上の損失を被る可能性があります.
  3. ストップポイントが小さすぎると,利益が早めに切られ,収益性が損なわれます.
  4. 適切なパラメータは,異なる品種によって決定されるべきである

ストップ・ストップの比率を調整し,異なるパラメータの組み合わせをテストすることでパラメータを最適化できます. 他の指標と組み合わせたフィルター信号; ポジション管理ルールを設定して単一のリスクを制御します.

最適化の方向

  1. 漁師指標のパラメータを最適化し,異なるパラメータが戦略に与える影響をテストする
  2. MACD,KDなどの他の指標と組み合わせたフィルタリング信号,信号品質の向上
  3. ブリン・バンドの突破など,開設前の条件判断を増やす.
  4. ポジション管理モジュールを追加し,単一ポジションによるリスクを制御する
  5. モバイルストップを最適化する方法,例えば,滑らかなモバイルストップ,Chandelier Exitなど

要約する

漁師指数移動止損戦略は,トレンド判断と止損管理を統合し,パラメータの最適化,指標の組み合わせ,止損方法の改善により,ほとんどの品種に適応し,許容範囲を超えた損失を防ぐ前提でより良い利益を得ることを探索し,実践する価値があります.

ストラテジーソースコード
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)