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

増量入国戦略による平均逆転

作者: リン・ハーンチャオチャン,日付: 2024-01-29 15:47:24
タグ:

img

概要

HedgerLabsが設計したインクリメンタルエントリーによる平均逆転戦略は,金融市場における平均逆転技術に焦点を当てた高度な取引戦略スクリプトです.移動平均値に対する価格動向に基づくインクリメンタルエントリーを重視した体系的なアプローチを好むトレーダー向けに設計されています.

戦略の論理

この戦略の中心は,すべてのエントリーと出口が回るシンプル・ムービング・アベア (SMA) です.トレーダーは,異なる取引スタイルとタイムフレームに合わせてMA長さをカスタマイズすることができます.

この戦略には,インクリメンタルエントリーシステムがユニークである.価格が指定されたパーセントでMAから逸脱すると最初のポジションを開始する.価格がMAからさらに移動するにつれて,トレーダーによって定義されるインクリメンタルステップで次のエントリが行われる.これは,変動の増加を資本することを目的としている.

この戦略は,市場状況の変化に適応するために,価格がMAを下回り,価格がMA上回りするとロングを入力して,ポジションを賢く管理します.

エクシートは,価格がMAに触れたときに決定され,最適化された結果のために潜在的な逆転点でポジションを閉じるのが目標です.

Calc_on_every_tick が有効になっている場合,戦略は迅速な反応を保証するために市場を継続的に評価します.

利点分析

漸進的な入力を伴う平均逆転戦略は,次の主要な利点があります.

  1. 感情的干渉を減らすために高度に体系化されています
  2. 高波動期に増額入場により利益が増える
  3. 設定可能なパラメータ,例えばMA期間は,異なるインstrumentに適しています.
  4. インテリジェント ポジション管理 自動 ロング/ショート 調整
  5. ポジションを閉じるための最適な出口ターゲティングの逆転

リスク分析

考慮すべきリスクは以下のとおりです.

  1. テクニカルインジケーターの信頼性による失敗
  2. トレンドレスで引き上げが長引く
  3. MAの設定が悪ければ頻繁に停止する
  4. 追加入場から大きなポジションサイズ

エグジットは最適化され,トレンドフィルターが追加され,上記のリスクを軽減するためにポジションサイズが削減できます.

増進 の 機会

戦略は以下によって強化される:

  1. 不利な取引を避けるためにトレンドフィルターを追加する
  2. 流動性による入国増加を最適化
  3. 利潤を固定するために後続停止を組み込むこと
  4. 異なる移動平均値で実験する
  5. 偽信号を減らすためにフィルターを使用する

結論

インクリメンタルエントリーによる平均逆転戦略は,体系化されたインクリメンタルポジションサイジングアプローチを用いた平均逆転技術に焦点を当てています.カスタマイズ可能な設定により,さまざまな取引手段に適応できます.市場範囲で良好なパフォーマンスを発揮し,短期的な体系的なトレーダーに適しています.


/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)

// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)

// Calculating Moving Average
ma = ta.sma(close, maLength)

// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)

var float lastBuyPrice = na
var float lastSellPrice = na

// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
    diff = math.abs(price1 - price2) / price2 * 100
    diff

// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
    pricePercentDiff(price, ma) >= initialPercent

// Enhanced Entry Logic for Buy and Sell
if (low < ma)
    if (na(lastBuyPrice))
        if (initialEntryCondition(low, ma, initialPercent))
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low
    else
        if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low

if (high > ma)
    if (na(lastSellPrice))
        if (initialEntryCondition(high, ma, initialPercent))
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high
    else
        if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high

// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
    strategy.close("Buy")
    lastBuyPrice := na

if (close <= ma and strategy.position_size < 0)
    strategy.close("Sell")
    lastSellPrice := na

// Reset last order price when position is closed
if (strategy.position_size == 0)
    lastBuyPrice := na
    lastSellPrice := na


もっと