双方向の逆転戦略

作者: リン・ハーンチャオチャン開催日:2023年11月2日 16時47分08秒
タグ:

img

概要

双方向逆転戦略は,前日の取引範囲に基づいてストップ・ロスの購入注文を設定する単純なビットコイン取引戦略である.この戦略の主な考え方は,当日の開店価格が前日の閉店価格よりも高くなった場合,最高値に近いストップ・ロスの購入を設定すること.開店価格が前日の閉店価格よりも低い場合,低値に近いストップ・ロスの購入を設定することです.

戦略の論理

ストラテジーは,先日の取引範囲を最初に計算し,これは上位価格マイナス最低価格です.当日の開業後,価格は前日の閉店価格よりも高く,または低く,判断します.高ければ,ストップ・ロスの購入価格は開店価格プラス前日の0.6倍の範囲に設定されます.低ければ,ストップ・ロスの購入価格は開店価格プラス前日の1.8倍の範囲に設定されます.ストラテジーは,ストップ・ロスがトリガーされたときにロングポジションを開き,当日の終了前にポジションを閉じます.

具体的には,この戦略には2つの入国規則が含まれています.

  1. 現在の日のオープニング価格が前日の終了価格より高く (longCond1が満たされ) バックテスト時間枠 (window() 内に満たされれば,オープニング価格プラス前日の0.6倍の範囲 (strategy.long1) でストップロスを設定します.

  2. 現在の日のオープニング価格が前日の終了価格より低い場合 (longCond2が満たされ),バックテストウィンドウ内で,オープニング価格プラス前日の範囲の1.8倍 (strategy.long2) でストップロスを設定します.

上記のストップ・ロスのいずれかがトリガーされたときにロング・ポジションを開き,strategy.close_all(を使って日末までにポジションを閉じます.

利点分析

双方向逆転戦略には以下の利点があります.

  1. 戦略は上下両方を考慮し,両方向の逆転突破を捉える.

  2. ストップ・ロスの制御可能なリスク 既定のストップ・ロスは,取引毎の最大損失を有効に制限します

  3. 日々すべてのポジションを閉鎖することで,一夜間のリスクを回避する.毎日の終わり前に閉じることで,一夜間の大きな価格変動のリスクを排除する.

  4. 短期取引では取引頻度が高く,1日だけポジションを保持すると取引頻度が高くなります.

  5. シンプルで明快な論理で 分かりやすく実行できます

リスク分析

しかし,この戦略には注意すべきリスクもあります.

  1. 不適切なストップ損失距離は,ストップ損失がヒットすることにつながります.ストップ損失があまりにも緊迫している場合は,極端な市場条件で早急に停止することができます.

  2. 取引頻度が高い場合,大きな取引コストが発生する可能性があります. 日々のポジションの開設と閉店は,相当な手数料を蓄積することができます.

  3. ストップ損失は,ウィップソー条件でより頻繁に発生する傾向があります.

  4. 傾向の動きを乗り切れない.この戦略は逆転に適しており,傾向の継続から利益を得ることができない.

増進 の 機会

戦略を強化するいくつかの方法:

  1. ストップ・ロスの距離を最適化する.最適なストップ・ロスのポイントを見つけるために異なるストップレベルをテストする.また,市場の変動に基づいて動的ストップを検討する.

  2. トレンドフィルターを追加します.エントリー前に,逆トレンド取引を避けるために,より大きなタイムフレームのトレンドを確認します.

  3. 入力ルールを改善し,入力の精度を高めるため,音量やモメント指標を追加することを検討します.

  4. ポジションマネジメントを導入する. 収益性の高いトレンドに乗るために,トレンドの後ろのストップやトレンドの後ろの出口をテストする.

  5. 異なる製品をテストする.この戦略は高い変動性のある製品でよりうまく機能するかもしれない.

  6. 機械学習技術を利用し ML アルゴリズムを使って ストップやエントリなどのパラメータを最適化します

結論

双方向逆転戦略は,非常にシンプルで実用的な短期戦略の概念である.上下両方向の動きにおいて逆転機会を効果的に把握することができる.しかし,ストップ損失距離やエントリールールのようなリスクは,リスクを軽減し,強度を向上させるために最適化する必要がある.重要な改良により,戦略は非常に有用な短期取引ツールになることができる.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Simple strat", shorttitle="Simple Strat", overlay=true)

// X001TK R1 strategy
//
// 
// This strategy combines the special approach in previous daily range trading
//
// This strategy goes long on stop buy order which is calculated as previous day range
// multiplied by special number.
//
// This pure strategy does not have any
// stop loss or take profit money management logic.
//
// Exit rule is simple. We close the position on market close or next day open
//
// 
// 
//
// Input
length = input(10, minval=1)
stopLossPercent=input(1.1,"Stop Loss Percent")
profitPercent=input(9,"Profit Percent")


// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2029, title = "To Year", minval = 2017)
ses_cls = input(defval=true, title="End of Session Close Out?")


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


// === STRATEGY ===
// conditions
longCond1 = close>close[1]
longCond2 = close<close[1]


strategy.entry("long1", strategy.long, when=longCond1==true and window()==true, stop=close+(high - low)*0.6)
strategy.entry("long2", strategy.long, when=longCond2==true and window()==true, stop=close+(high - low)*1.8)
strategy.close_all(when=ses_cls)

// === /STRATEGY ===

もっと