確率的フィッシャー変換が一時的に反転を停止 STOCH インジケーター定量戦略


作成日: 2024-01-02 11:14:12 最終変更日: 2024-01-02 11:14:12
コピー: 0 クリック数: 656
1
フォロー
1621
フォロワー

確率的フィッシャー変換が一時的に反転を停止 STOCH インジケーター定量戦略

概要

この戦略の核心思想は,ランダムなフィッシャー変換と一時停止反転STOCH指標を組み合わせて,買入決定を行うことである. この戦略は,中短期間の操作に適しており,安定した状況で良い収益を得ることができる.

戦略原則

この戦略は,まず標準のSTOCH指標を計算し,その後,それをフィッシャー変換してINVLineを得る.INVLine上の下行値線DLを横切ると,買入シグナルを生成し,INVLine下の上行値線ULを横切ると,売り出しシグナルを生成する.同時に,この戦略は,利益をロックし,損失を減らすために,追跡ストップメカニズムを設定する.

具体的には,この戦略の核心的な論理は,

  1. STOCH指標を計算する:標準公式を使用して,ストックの急速なSTOCH値を計算する
  2. フィッシャー変換:STOCH値をフィッシャー変換して,INVLineを取得
  3. 取引シグナルを生成:INVLine上ではdl線を横切って購入し,ul線を横切って販売する
  4. 追跡停止: 追跡を一時停止するメカニズムを有効にすることで,損失を一時停止できます.

優位分析

この戦略の利点は以下の通りです

  1. フィッシャー変換はSTOCH指標の感度を高め,トレンドの逆転の機会を早期に発見します.
  2. 追跡停止メカニズムは,リスクを効果的に管理し,利益をロックします.
  3. 中短期の操作に適し,特に最近より流行している急速な量化取引
  4. 安定した状況下では好調で,収益は安定している.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. STOCH指数は誤信号を発生し,不必要な取引を誘発する可能性があります.
  2. ファイシャーの変形はSTOCH指数のノイズを大きくし,より多くの偽信号をもたらす.
  3. 危機的状況で脱落し,継続的な利益を得られない
  4. アルファを入手するには,より短い期間が必要で,長期間保有は不適当です.

これらのリスクを低減するために,以下のような要素を最適化することを検討できます.

  1. STOCHパラメータを調整し,曲線を平らにし,ノイズを減らす
  2. 値線の位置を最適化して,誤取引の確率を減らす
  3. フィルタリング条件を増やして,震動時の取引を避ける
  4. ポジションの長さを操作周期に合わせて調整する

最適化の方向

この戦略は以下の方向から最適化できます.

  1. INVLine曲線を平らにするFisher変換のパラメータ
  2. STOCH指標の長さを最適化する
  3. 値線のパラメータを最適化し,誤取引の確率を低減する
  4. 価格確認を増加させ,不必要な追跡停止を回避する
  5. 国内突破フィルターを増やして,波動市場の偽信号を減らす.
  6. トレンド指数で逆転を避ける

要約する

この戦略は,ランダムなフィッシャー変換とSTOCH指標を総合的に使用し,簡単な実用的なショートライン量化戦略を実現する.その優点は,動作頻度が高いことであり,最近の比較的に人気の高い高周波量化取引に適していることにある.同時に,この戦略には,パラメータとフィルタリング条件を最適化してリスクを低減し,安定性を向上させる必要のある一般的な技術指標戦略リスクもある.全体的に,この戦略は,簡単な量化取引のための良い考え方を提供し,さらなる研究に値する.

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

//@version=3
strategy("IFT Stochastic + Trailing Stop", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//INPUTS
stochlength=input(19, "STOCH Length")
wmalength=input(4, title="Smooth")
ul = input(0.64,step=0.01, title="UP line")
dl = input(-0.62,step=0.01, title="DOWN line")
uts = input(true, title="Use trailing stop")
tsi = input(title="trailing stop actiation pips",defval=245)                                                                       
tso = input(title="trailing stop offset pips",defval=20)

//CALCULATIONS
v1=0.1*(stoch(close, high, low, stochlength)-50)
v2=wma(v1, wmalength)
INVLine=(exp(2*v2)-1)/(exp(2*v2)+1)

//CONDITIONS
sell = crossunder(INVLine,ul)? 1 : 0
buy = crossover(INVLine,dl)? 1 : 0

//PLOTS
plot(INVLine, color=aqua, linewidth=1, title="STOCH")
hline(ul, color=red)
hline(dl, color=green)
bgcolor(sell==1? red : na, transp=30, title = "sell signal")
bgcolor(buy==1? lime : na, transp=30, title = "buy signal")
plotchar(buy==1, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(sell==1, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)

//STRATEGY
strategy.entry("BUY", strategy.long, when = buy==1)
strategy.entry("SELL", strategy.short, when = sell==1)

if  (uts)
    strategy.entry("BUY", strategy.long, when = buy)
    strategy.entry("SELL", strategy.short, when = sell)
    strategy.exit("Close BUY with TS","BUY", trail_points = tsi, trail_offset = tso)
    strategy.exit("Close SELL with TS","SELL", trail_points = tsi, trail_offset = tso)