ランダムフィッシャー変換 一時停止 逆STOCH指標 定量戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-02 11:14:12
タグ:

img

概要

この戦略の基本理念は,ランダム・フィッシャー・トランスフォームと一時停止逆STOCH指標を組み合わせて購入・売却の決定を行うことです.この戦略は,中期取引に適しており,安定した市場条件で適正な収益を生むことができます.

戦略原則

この戦略は,まず標準STOCH指標を計算し,INVLineを取得するためにフィッシャー変換を実行する.INVLineが下限 dlを超えると,購入信号が生成される.INVLineが上限 ulを下回ると,販売信号が生成される.同時に,この戦略は,利益をロックし損失を削減するためのトライリングストップメカニズムも設定する.

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

  1. STOCH インディケーターを計算する: 標準式を使用して,ストックの速度のSTOCH値を計算する
  2. フィッシャー変換: INVLine を得るために STOCH 値でフィッシャー変換を実行する
  3. INVLineが dlを超えると買い,ulを下回ると売る.
  4. トレイリングストップ: タイムリーストップ損失を保つための一時的なストップ追跡メカニズムを有効にする.

利点分析

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

  1. フィッシャー変換は,STOCH指標の感度を効果的に向上させ,傾向逆転の機会を早期に検出することができます.
  2. 暫定的な遅延停止メカニズムは,リスクを効果的に制御し,利益を固定することができます
  3. 中期取引,特に現在人気のある高周波定量取引に適しています.
  4. 安定した市場環境で,安定した収益率で良い業績を上げています

リスク分析

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

  1. STOCH インディケーターは誤った信号を生成しやすいので,不必要な取引が起こる可能性があります.
  2. 誤った信号が増える
  3. 変動する市場では 損失を止めるのは簡単で 持続的な利益を得ることができません
  4. アルファを得るには比較的短い保有期間が必要である.長期保有は適していない.

これらのリスクを軽減するために,次の側面を最適化することを検討してください.

  1. 曲線を滑らかにし,ノイズを減らすためにSTOCHパラメータを調整
  2. 誤った取引の確率を減らすために,値ラインのポジションを最適化する
  3. 振動市場での取引を避けるためにフィルター条件を追加する
  4. 保持時間の長さを操作サイクルにマッチするように調整

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

この戦略を最適化するための主な方向は以下の通りである.

  1. フィッシャー変換のパラメータを INVLine曲線に最適化
  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)


もっと