
この戦略は,波動率を追跡する二方向の取引戦略である.これは,平均実際の波動率ATR指標を使用して,ストープを設定し,価格がストープを突破した方向に基づいてトレンドの方向を判断する.トレンドの方向が変化したとき,逆転してポジションを開く.
この戦略は,3日ATRの変動率を計算する.ATRの値は,ストップポイントとして係数で掛ける.価格がストップポイントより高いときは,上昇傾向として判断し,価格がダウンしてストップポイントを破るときは,平仓する.価格がストップポイントより低いときは,空気傾向として判断し,価格が上昇してストップポイントを破るときは平仓する.トレンドが変化したとき,反転してポジションを開く.トレンドが変わらないときにストップポイントは,トレンドが変わるときに再設定され,トレンドが変わるときに再設定されます.
リスクに応じて,ATR係数を適切に増やし,ストップダメージブーフゾーンを増やし,取引頻度を制御し,最小のストップポジションを設定することができます.
この戦略は,全体として,安定した双方向のストップ・ロスを追跡する戦略である.ATR指標によって,動的にストップ・ロスを設定し,撤回リスクを制御する.双方向の取引は,収益の機会を増加させる.さらに最適化することで,戦略をより安定的に信頼し,トレンドを追跡する能力を高めることができる.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("BCH Swinger v1", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
/////////////////////////////////////////////////////////////
//START - SET DATE RANGE
// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay = input(defval = 1, title = "From Day", minval = 1)
FromYear = input(defval = 2017, title = "From Year")
ToMonth = input(defval = 10, title = "To Month", minval = 1)
ToDay = input(defval = 01, title = "To Day", minval = 1)
ToYear = input(defval = 2020, title = "To Year")
startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true
/////////////////////////////////////////////////////////////
//END - SET DATE RANGE
/////////////////////////////////////////////////////////////
//START - INDICATORS
length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)
/////////////////////////////////////////////////////////////
//END - INDICATORS
/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange
strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)
/////////////////////////////////////////////////////////////
//END - TRADING RULES