
この戦略は,価格の動きと取引量に基づいた取引システムで,強度の上昇後に微小な回調の機会を特定することに焦点を当てている.この戦略は,大幅な上昇の緑の線後の短期的な回調を監視して,価格が反転シグナルが発生したときに取引を開始する.このシステムは,取引量の制限,ATRの変動率,回調幅を含む複数のフィルタリング条件を採用し,取引の正確性を向上させる.
戦略の核心的な論理は,市場動力の継続の原理に基づいている.主に以下の重要な要素が含まれている.
これは,合理的に設計されたトレンド追跡戦略であり,厳格な条件選択とリスク管理により,市場内の優れた取引機会を捕捉することができる.戦略の成功の鍵は,パラメータの最適化と市場環境の適応性調整にあります. 实体取引の前に十分な反射検証を行い,特定の取引品種の特徴に応じてパラメータの調整を行うことが推奨されています.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
//@version=6
strategy(title="Micropullback Detector w/ Stop Buy & Exits", shorttitle="MicroPB Det+Exits", overlay=true)
// USER INPUTS
volLookback = input.int(20, "Volume SMA Period", minval=1)
volMultiplier = input.float(1.5, "Volume Multiplier for High Volume", minval=1.0)
largeCandleATR = input.float(0.5, "Fraction of ATR to define 'Large Candle'", minval=0.1)
maxRedPullback = input.int(3, "Max Consecutive Red Candles in Pullback")
maxRetracementPc = input.float(50, "Max Retracement % for pullback", minval=1.0, maxval=100.0)
// CALCULATIONS
fastAtr = ta.atr(14)
avgVolume = ta.sma(volume, volLookback)
isLargeGreenCandle = (close > open) and ((close - open) > fastAtr * largeCandleATR) and (volume > avgVolume * volMultiplier) and (volume > 200000)
// HELPER FLAGS
isGreen = close >= open
isRed = close < open
// STATE VARIABLES
var int state = 0
var float waveStartPrice = na
var float waveHighestPrice = na
var float largestGreenVol = na
var int consecutiveRedPulls = 0
var bool triggerSignal = false
var float wavePullbackLow = na
if barstate.isnew
triggerSignal:=false
if state==0
wavePullbackLow:=na
if isLargeGreenCandle
state:=1
waveStartPrice:=open
waveHighestPrice:=high
largestGreenVol:=volume
consecutiveRedPulls:=0
else if state==1
if isGreen
waveHighestPrice:=math.max(waveHighestPrice,high)
if volume>largestGreenVol
largestGreenVol:=volume
else
state:=2
consecutiveRedPulls:=1
wavePullbackLow:=low
else if state==2
if isRed
if volume>largestGreenVol
state:=0
consecutiveRedPulls+=1
if consecutiveRedPulls>=maxRedPullback+1
state:=0
retracementLevel=waveStartPrice+(maxRetracementPc/100.0)*(waveHighestPrice-waveStartPrice)
wavePullbackLow:=math.min(wavePullbackLow,low)
if close<retracementLevel
state:=0
else
consecutiveRedPulls:=0
if high>high[1]
triggerSignal:=true
state:=3
else if state==3
state:=0
// Plot shapes for signals (last 1440 bars ~ 1 day at 1-min TF)
plotshape(isLargeGreenCandle, title="Large Green Candle", style=shape.diamond, location=location.belowbar, color=color.new(color.blue, 0), offset=0, size=size.small, show_last=1440)
plotshape(triggerSignal, title="MicroPB Entry", style=shape.arrowdown, location=location.abovebar, color=color.new(color.green, 0), offset=0, size=size.large, show_last=1440)
// ENTRY & EXITS
if triggerSignal
// Stop Buy above the previous bar's high
entryPrice = high[1]
strategy.order("MicroPullback Long", strategy.long, limit=entryPrice, oca_name="MicroPullback")
// Stoploss slightly below pullback low
stopPrice = wavePullbackLow - 2*syminfo.mintick
// Risk & take-profit calculations
risk = entryPrice - stopPrice
tpPrice = entryPrice + 2 * risk
// Exit: stop or TP
strategy.exit("SL+TP", "MicroPullback Long", stop=stopPrice, limit=tpPrice, qty_percent=100)
// ALERT
alertcondition(triggerSignal, title="MicroPullback LONG", message="Micropullback Long Signal Detected!")