ATRと資金管理に基づくSSLチャネルバックテスト戦略


作成日: 2023-11-23 10:26:58 最終変更日: 2023-11-23 10:26:58
コピー: 1 クリック数: 731
1
フォロー
1617
フォロワー

ATRと資金管理に基づくSSLチャネルバックテスト戦略

概要

この戦略は,SSL通道指標に基づく反測戦略であり,ATR停止,ATR停止,資金管理などの機能を組み合わせて,SSL通道戦略の効果をより全面的にテストすることができます.

戦略原則

SSL通路の指標

SSL通道指標は通道の中線と通道帯で構成されている.通道の中線は,上線と下線に分割された単純な移動平均であり,通常,高点の間の単純な移動平均を上線として,低点の間の単純な移動平均を下線として取る.通道帯は,上線と下線の間の領域で構成されている.

価格がチャネル上線に近づくと超買いとみなされ,価格がチャネル下線に近づくと超売りとみなされます. 価格がチャネル帯を破るときは,トレンドが変化したことを示します.

このポリシーのSSL通道指標のパラメータは次のようになります.ssl_period=16

ATR 停止 停止する

ATRは平均真波幅を指す.これは市場の波動性を評価し,ストップ・ストップ・ポジションを決定するために用いられる.

この策略はパラメータを使用しています.atr_period=14ATRの指標と組み合わせたatr_stop_factor=1.5そしてatr_target_factor=1.0ストップとストップの動的倍数として,市場の変動率に基づくストップ・ストップを実現する.

また,様々な品種に適応するために,この戦略は追加されています.two_digitパラメータ判断契約は2ビット精度の品種 ((例えば,金,円)),したがって,ストープ・ストップ・ポジションを柔軟に調整することができる.

資金管理

資金管理はパラメータによって行われます.position_size(固定ポジション)risk(リスクの%の穴) 実現use_mm=true資金管理モジュールが起動します.

資金管理の主な目的は,各開設ポジションのポジションサイズを制御することです. 固定パーセントリスクモデルを採用すると,口座権益に基づいてリスクの口を計算した後,契約数に変換し,単一損失を抑制する効果を実現します.

優位分析

  • SSLチャネルを使用してトレンドの方向を判断し,トレンド変換を捉えるのに効果があります.
  • ATRのダイナミック計算によるストップ・ストップ位置を適用し,市場の変動率に自律的に適応できる
  • 資金管理の原則を活用して,長期的にリスクをコントロールする

リスク分析

  • SSLチャネルは,トレンドの逆転を判断できるが,100%信頼できないため,誤信号が発生する可能性がある.
  • ATRは市場変動に合わせてストップ・ロストを設定し,過度に緩やかまたは過度に硬直する可能性があります.
  • 資金管理パラメータの不適切な設定は,ポジションを過大または過低効率に導きます.

これらのリスクは以下の方法で改善できます.

  1. 他の指標と組み合わせて確認し,誤信号を避ける
  2. ATR周期パラメータを適正に調整して,ストップダストストップレベルを最適なバランスにします.
  3. 異なる資金管理パラメータをテストし,最適なポジションを見つけます.

最適化の方向

この戦略は以下の点で最適化できます.

  1. SSL 経路のパラメータを最適化して,最適なパラメータの組み合わせを探します.
  2. ATRの止損ブレーキを最適化または更換し,より完ぺきにする
  3. 他のフィルタリング指標を追加し,不必要な取引を避ける
  4. ポジション制御モジュールを追加して,利益の最大化
  5. 戦略の適応性を向上させるため,異なる品種に対するパラメータの微調整
  6. 量化ツールを追加して,より全面的な反省と最適化を実現します.

システムのテストと最適化により,この戦略は信頼性と安定性の高い量化取引システムとなる.

要約する

この戦略は,SSL通道指標判断トレンド,ATR設定のストップ・ローズ・ストップ,資金管理のリスク制御の3つのメカニズムを統合している.全面的な反省によって,この戦略の効果を検証することができ,量化取引戦略の最適化のための基本的枠組みとして使用することができます.同時に,この戦略には,他のフィルタリング指標,最適化パラメータ,拡張機能などの改善可能なスペースもあります.全体的に,この戦略は,自動取引システムを構築するための堅固な基礎を築いています.

ストラテジーソースコード
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © comiclysm

//@version=4
strategy("SSL Backtester", overlay=false)

//--This strategy will simply test the effectiveness of the SSL using
//--money management and an ATR-derived stop loss

//--USER INPUTS

two_digit = input(false, "Check this for 2-digit pairs (JPY, Gold, Etc)")
ssl_period = input(16, "SSL Period")
atr_period = input(14, "ATR Period")
atr_stop_factor = input(1.5, "ATR Stop Loss Factor")
atr_target_factor = input(1.0, "ATR Target Factor")
use_mm = input(true, "Check this to use Money Management")
position_size = input(1000, "Position size (for Fixed Risk)")
risk = input(0.01, "Risk % in Decimal Form")

//--INDICATORS------------------------------------------------------------

    //--SSL
    
sma_high = sma(high, ssl_period)
sma_low = sma(low, ssl_period)
ssl_value = 0
ssl_value := close > sma_high ? 1 : close < sma_low ? -1 : ssl_value[1]
ssl_low = ssl_value < 0 ? sma_high : sma_low
ssl_high = ssl_value < 0 ? sma_low : sma_high

    //--Average True Range
    
atr = atr(atr_period)

//--TRADE LOGIC----------------------------------------------------------

signal_long = ssl_value > 0 and ssl_value[1] < 0
signal_short = ssl_value < 0 and ssl_value[1] > 0

//--RISK MANAGMENT-------------------------------------------------------
strategy.initial_capital = 50000
balance = strategy.netprofit + strategy.initial_capital
risk_pips = atr*10000*atr_stop_factor
if(two_digit)
    risk_pips := risk_pips / 100
risk_in_value = balance * risk
point_value = syminfo.pointvalue
risk_lots = risk_in_value / point_value / risk_pips
final_risk = use_mm ? risk_lots * 10000 : position_size

//--TRADE EXECUTION-----------------------------------------------------

if (signal_long)
    stop_loss = close - atr * atr_stop_factor
    target = close + atr * atr_target_factor
    strategy.entry("Long", strategy.long, final_risk)
    strategy.exit("X", "Long", stop=stop_loss, limit=target)
if (signal_short)
    stop_loss = close + atr * atr_stop_factor
    target = close - atr * atr_target_factor
    strategy.entry("Short", strategy.short, final_risk)
    strategy.exit("X", "Short", stop=stop_loss, limit=target)
    
//--PLOTTING-----------------------------------------------------------

plot(ssl_low, "SSL", color.red, linewidth=1)
plot(ssl_high, "SSL", color.lime, linewidth=1)