
この策略は,価格突破の方向と強さを判断するために吊灯指標を使用し,購入と販売のシグナルを生成します.
この戦略は吊灯指数に基づいている.吊灯指数は,価格の最高値,最低値,および平均実際の波動幅度に基づいてストップ・ローンを設定する.具体的には,この戦略は22日の平均実際の波動幅を計算し,係数 ((デフォルト3)) で掛けます.それから,この数値に基づいて長線ストップ・ローンを設定し,短線ストップ・ローンを設定します.戦略は,多頭位を取ったとき,価格が長線ストップ・ローンを破ると,売り込みシグナルを生じます.空頭位を取ったとき,価格が短線ストップ・ローンを破ると,買取りシグナルを生じます.
この戦略は,単に買入操作を行うのみである.具体的には,価格が最後の長線ストップラインを突破したときに買入シグナルを生成する.そして,価格が短い長線ストップラインを突破したときに売りシグナルを生成し,平仓する.
リスク対策:
この策略は,吊灯指標のダイナミックなストップ・ペア・ラインを活用して価格逆転の機会を識別する.これは,価格が長ストップ・ペア・ラインを上方突破したときにのみ購入し,価格が短ストップ・ペア・ラインを下方突破したときに販売する.この策略は,リスクを効果的に制御する,しかし,ストップ・ペアとストップ・ペアが設定されていない.我々は,他の指標のフィルターとストップ・ペアを設定することで,この策略を最適化して,より堅牢にすることができます.
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit Strategy", overlay=true)
length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
var color longColor = color.green
var color shortColor = color.red
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))
changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')
// Define initial capital
initial_capital =25
// Trigger buy order and close buy order on sell signal
if buySignal
strategy.entry("Buy", strategy.long, qty = initial_capital / close)
if sellSignal
strategy.close("Buy")