
ミツバチトレンドATR横断ブレイク戦略は,ATR指標とブリン帯による取引信号生成による中短線ブレイク型の戦略である.これは,株価が一定の幅の上下ATRチャネル内のトレンドの変化を主に監視し,下下走行または上上走行時にトレンドフィルターと組み合わせて取引決定を行う.
この戦略は主に3つの部分から構成されています.
ATRチャネル:ATR指数によって株価の変動範囲を計算し,その範囲の上下でチャネルを形成する.チャネル幅はATRのlookback周期とATRdivisor因子によって制御される.
ミツバチ線:株価の中央線を基準線とする. 中央線は,昨日の高低収穫の平均値として計算される.
トレンドフィルター: 偏差動向指標による価格トレンドを計算し,PriceSig ‘>’:PriceSig[3] 価格が上昇する時[3] 時刻は下向きに傾向する。
特定の取引シグナル生成の論理は次のとおりです.
複数の信号: pricesig > pricesig[3] 価格が下落する時に多めにやる
空頭信号: pricesig < pricesig について[3] 値上がり時に空白する
他の場合は取引なし.
この戦略は,取引リスクを制御するために,同時にもストップ・ストップ・ロスの条件を設定する.
蜂のトレンドATRを突破する戦略は以下の利点があります.
ATR指標は市場変動を動的に捉えるため,株価の変動範囲を計算します.
株価を横軸に評価し,通路を突破する取引ポイントを設定し,上下を追うのを避ける.
偏差値指数からトレンドを判断し,逆行を避けるため,勝率を上げる.
ストップ・ロスの条件を設定し,単位のリスクを制御する.
戦略パラメータは,通路幅,ATR周期などの要因の最適化戦略を柔軟に設定して調整できます.
この戦略にはリスクもあります.
中短線取引は波動的で,リスクが比較的高く,慎重に資金管理する必要があります.
株価が急激に波動すると,ATRチャネル範囲の計算は不正確になり,取引ミスに繋がる可能性があります.
偏差運動指数は,トレンド判断に誤りがあり,取引信号の正確さに影響する可能性があります.
上記のリスクに対して,ATR通道パラメータを適切に調整し,トレンドフィルタリング信号周期を増やすなどによって最適化および改善することができる.
この戦略は以下の点で最適化できます.
ATRチャネルの幅を調整し,パラメータatrDivisorを低くまたは高くし,チャネルの範囲を圧縮または拡大する.
ATR lookback周期のパラメータを調整し,チャネルの最近の波動に対する感受性を変更する.
トレンド信号周期パラメータを調整し,多空のトレンド判断の正確性を改善する.
他の指標に多要素検証を加え,取引信号の質を向上させる.
ストップ・ストップ・損失アルゴリズムを最適化し,リスク管理を改善する.
ミツバチのトレンドATR突破策は,株式価格の変動範囲分析とトレンド判断指標を統合して,市場のホットポイントを捉えながら取引リスクを制御する,柔軟性があり,適応性の高い量化策である.この戦略は,パラメータ調整とシグナル最適化によって継続的に改善され,広範囲の使用見通しがある.
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)
// === STRATEGY RELATED INPUTS AND LOGIC ===
PivottimeFrame = input(title="Pivot Timeframe", defval="D")
ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D")
len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13)
myatr = atr(len)
dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1])
atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2)
pivot0 = (high[1] + low[1] + close[1]) / 3
pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0)
upperband1 = (dailyatr / atrdiv) + pivot
lowerband1 = pivot - (dailyatr / atrdiv)
middleband = pivot
// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM = loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 = DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)
// === RISK MANAGEMENT INPUTS ===
inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong)
strategy.close(id = "Long", when = exitLong)
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)
// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)
// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)