
この戦略は,SSL通道指標に基づく反測戦略であり,ATR停止,ATR停止,資金管理などの機能を組み合わせて,SSL通道戦略の効果をより全面的にテストすることができます.
SSL通道指標は通道の中線と通道帯で構成されている.通道の中線は,上線と下線に分割された単純な移動平均であり,通常,高点の間の単純な移動平均を上線として,低点の間の単純な移動平均を下線として取る.通道帯は,上線と下線の間の領域で構成されている.
価格がチャネル上線に近づくと超買いとみなされ,価格がチャネル下線に近づくと超売りとみなされます. 価格がチャネル帯を破るときは,トレンドが変化したことを示します.
このポリシーのSSL通道指標のパラメータは次のようになります.ssl_period=16。
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設定のストップ・ローズ・ストップ,資金管理のリスク制御の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)