改善された渦輪指標に基づく定量的な取引戦略

作者: リン・ハーンチャオチャン開催日:2023年11月14日 14:40:54
タグ:

img

概要

この戦略は,ヴォルテックスインジケーター戦略のアップグレード版である.オリジナルのヴォルテックスインジケーターをベースに,値に基づく取引のトリガー,EMAとのヴォルテックスラインのスムーズ化,ストップ・ロストとテイク・プロフィートの追加,ロング・オンリー,ショート・オンリー,またはロング/ショート戦略の実装など,いくつかの新しい機能を組み込む.量的な取引で改良されたヴォルテックスインジケーターを適用したい投資家に適している.

原則

この戦略のコアインジケーターは,改良されたヴォルテックスインジケーターである.伝統的なヴォルテックスインジケーターは,価格変動の絶対和を計算することによって,正線と負線を形成する.正線が負線を越えると,購入信号を送信する.負線が正線を下回ると,売却信号を送信する.

この戦略は,従来の渦輪指標に以下のアップグレードを行います.

  1. 線交差のみに頼るのではなく,値の概念を導入する.ポジティブとネガティブな線間の差が事前に設定された値を超えるとのみ取引が開始される.これは,小さく,無意味な交差をフィルタリングするのに役立ちます.

  2. 渦線はEMAで滑らかして 曲線の振動を軽減します

  3. ストップ・ロストとテイク・プロフィートの機能が追加され,リスク管理の改善のために損失/利益比を事前に設定できます.

  4. トレーダーは,異なるニーズに合わせて,ロングのみ,ショートのみ,またはロング/ショート戦略を選択できます.

これらの改善により,戦略は傾向をより信頼的に検出し,バックテストでうまく機能します.

利点分析

  1. 改良された渦輪指標は,無効な信号をフィルタリングし,偽ブレーキを回避します. EMAのスムーズ化はまた,ノイズを減らすのに役立ちます.

  2. シンプルなクロスではなく 信号のスローヒールを用いることで 傾向の逆転点を より信頼的に検出できます

  3. ストップ・ロース/テイク・プロフィートの機能は,合理的な取引原則に沿って,各取引のリスクを制御するために,利益/損失比を事前に設定することができます.

  4. ロングのみ,ショートのみ,またはロング/ショートを選択することで,異なる市場段階に適応し,異なるトレーダーのニーズに合わせて柔軟性を確保できます.

  5. この戦略には,よく設計されたパラメータと,良いバックテスト結果があり,実用的な価値を与えます.

リスク分析

  1. この戦略は主にトレンド市場で機能します.レンジバインド市場ではパフォーマンスが低下する可能性があります.

  2. 渦線は価格変動に敏感で 不適切な設定は過剰取引を引き起こす可能性があります

  3. トレッシュレールを設定しすぎると,取引が失敗する可能性があります. 設定しすぎると,誤った信号が生じる可能性があります. 最適レベルを見つけるには広範なテストが必要です.

  4. ブラック・スワン・イベント中にストップ・ロスは取られる.トレーダーはこのリスクに注意する必要がある.

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

  1. 信号の確認とより包括的な判断のために他の指標と組み合わせることを検討します.

  2. パラメータの感度をテストし 設定を最適化します

  3. 主なトレンドに沿ってストップを調整するための適応型ストップ損失技術を研究します.

  4. パラメータを自動最適化するために機械学習を導入します

  5. この戦略に基づくインデクセージ方法を探求し,能力を拡大する.

結論

この戦略は,従来のヴォルテックスインジケーターに比べて複数の改良を行い,比較的成熟し信頼性の高い定量的な取引システムを形成する.トレンドフィルタリングとリスク制御を組み合わせ,分散した取引からの過剰なリスクを回避し,指標そのもののトレンドキャプチャ能力を利用する.さらなるパラメータ最適化と組み合わせ技術により,戦略はより安定して応答性が向上する.全体として,ヴォルテックスインジケーター戦略のアップグレードされたバージョンとして実用的な価値を持っています.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


もっと