資源の読み込みに... 荷物...

賢明な時間に基づく長短回転バランスのとれた取引戦略

作者: リン・ハーンチャオチャン,日付: 2024年11月12日 16:33:43
タグ:ATRSMARSIBBマルチ

img

概要

この戦略は,特定の期間内に長短回転取引を通じて収益を生むことを目指す,時間期間に基づくインテリジェントな回転戦略である.この戦略は,リスク制御機能を組み込むと同時に,市場状況に応じて自動に取引方向を調整できる柔軟なポジション管理メカニズムを使用している.双方向取引とオプションのスウィング取引モードをサポートし,強力な適応性を示している.

戦略原則

この戦略は主に時間間隔とポジションの状態を通じて取引を制御する.まず,inActivePeriod ((() 関数は,取引が最後の500バーの有効取引間隔内にあるかどうかを決定する.有効間隔内に,戦略はポジションの状態 (positionHeld),保持時間 (barsHeld),一時停止時間 (barsPaused) などの変数に基づいて取引行動を決定する.スウィング取引モードが有効になったとき,戦略は長方向と短方向の間に迅速に回転する.無効になった場合,ポジションは3期後に閉鎖され,新しい取引機会を待つ.

戦略 の 利点

  1. 高柔軟性: 純長,純短,または双方向取引モードをサポート
  2. 管理されたリスク: 長期的ポジションリスクを回避するために,ポジション保有時間を期間ごとに制限する
  3. 適性: 市場状況に基づいて取引方向を自動的に調整する
  4. シンプルな操作: 明確な取引論理,理解し実行しやすい
  5. 高い資本効率: 頻繁な転用により資本利用を改善する
  6. 調整可能なパラメータ: 重要なパラメータは,実際のニーズに応じて柔軟に調整できます.

戦略リスク

  1. 頻繁な取引は高額な手数料に繋がる
  2. 振動する市場で頻繁に誤った信号を生む可能性があります
  3. 固定保有期間が重要な市場機会を逃す可能性があります
  4. 市場動向は考慮されていないが,主要動向に対して取引される可能性がある.
  5. ストップ・ロスのメカニズムの欠如は,極端な市場状況で重大な損失を引き起こす可能性があります.

戦略の最適化方向

  1. 保持期間を動的に調整するために波動性指標 (ATRなど) を導入する
  2. トレンド判断指標を追加し,取引方向の精度を向上させる
  3. リスク管理の強化のために,ストップ・ロスト・メカニズムと,利益を引き出すメカニズムを含める.
  4. 不利な取引期間を避けるために,エントリータイミングを最適化
  5. ポジションのサイズを最適化するためにマネーマネジメントシステムを導入する
  6. 取引の正確性を向上させる市場情勢指標を追加

概要

この戦略は,時間周期制御と長短回転によって市場収益を達成し,強い柔軟性と適応性を実証する.特定のリスクが存在するが,合理的な最適化およびリスク管理措置によって戦略の安定性と収益性が著しく向上することができる.主な利点は,シンプルで効果的な取引論理にあり,さらなる最適化と拡大のための基礎戦略として適している.


/*backtest
start: 2024-10-12 00:00:00
end: 2024-11-11 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Tickerly Test Strategy", overlay=true)

// Inputs
longEnabled = input.bool(true, "Enable Long Trades")
shortEnabled = input.bool(true, "Enable Short Trades")
swingEnabled = input.bool(false, "Enable Swing Trading")

// Variables
var positionHeld = 0
var barsHeld = 0
var barsPaused = 0
var lastAction = "none"

// Function to determine if we're in the last 500 bars
inActivePeriod() => 
    barIndex = bar_index
    lastBarIndex = last_bar_index
    barIndex >= (lastBarIndex - 499)

// Main strategy logic
if inActivePeriod()
    if swingEnabled
        if positionHeld == 0 and barstate.isconfirmed
            if lastAction != "long"
                strategy.entry("Long", strategy.long)
                positionHeld := 1
                barsHeld := 0
                lastAction := "long"
            else
                strategy.entry("Short", strategy.short)
                positionHeld := -1
                barsHeld := 0
                lastAction := "short"
        
        if positionHeld != 0
            barsHeld += 1
            if barsHeld >= 2
                if positionHeld == 1
                    strategy.entry("Short", strategy.short)
                    positionHeld := -1
                    barsHeld := 0
                    lastAction := "short"
                else
                    strategy.entry("Long", strategy.long)
                    positionHeld := 1
                    barsHeld := 0
                    lastAction := "long"
    else
        if positionHeld == 0 and barsPaused >= 1 and barstate.isconfirmed
            if longEnabled and shortEnabled
                if lastAction != "long"
                    strategy.entry("Long", strategy.long)
                    positionHeld := 1
                    barsHeld := 0
                    barsPaused := 0
                    lastAction := "long"
                else
                    strategy.entry("Short", strategy.short)
                    positionHeld := -1
                    barsHeld := 0
                    barsPaused := 0
                    lastAction := "short"
            else if longEnabled
                strategy.entry("Long", strategy.long)
                positionHeld := 1
                barsHeld := 0
                barsPaused := 0
                lastAction := "long"
            else if shortEnabled
                strategy.entry("Short", strategy.short)
                positionHeld := -1
                barsHeld := 0
                barsPaused := 0
                lastAction := "short"
        
        if positionHeld != 0
            barsHeld += 1
            if barsHeld >= 3
                strategy.close_all()
                positionHeld := 0
                barsHeld := 0
                barsPaused := 0  // Reset pause counter when exiting a position
        else
            barsPaused += 1

// Plotting active period for visual confirmation
plot(inActivePeriod() ? 1 : 0, "Active Period", color=color.new(color.blue, 80), style=plot.style_areabr)

関連性

もっと