
이 전략은 부린 띠의 상하 궤도에 기초하여, 가격이 부린 띠를 돌파할 때 더 많이 하고, 궤도를 돌파할 때 공백을 하는 경향이 있다.
이 전략은 브린 대역의 중간 궤도, 상단 궤도, 하단 궤도를 사용하여 극한 가격 범위를 판단한다. 중간 궤도는 지난 25 주기의 종결 가격의 간단한 이동 평균이며, 상단 궤도선은 각각 중간 궤도선에서 다음 표준 차이의 거리이다. 가격이 상단 궤도선 아래에서 또는 하단 궤도선에서 통과 할 때, 가격이 돌파가 발생하여 비정상적인 가격 행동에 속하며, 거래 결정을 내릴 수 있습니다.
가격이 하향선보다 낮으면 더 많이 사; 가격이 상향선보다 높으면 더 많이 팔라. 더 많이 할 때, 스톱 손실 라인을 입시 가격 곱하기 스톱 손실 인자로 설정하고, 스톱 손실 라인을 입시 가격 곱하기 스톱 인자로 설정한다.
이 전략에는 24시간 동안 한 번만 신호를 보낼 수 있는 보조 규칙도 추가되어 불필요한 거래가 없도록 하고 있다.
위험 관리 조치:
이 전략은 전체적으로 간단한 트렌드 추적 전략으로, 브린 띠를 사용하여 가격 비정상성을 판단하고 트렌드를 추적합니다. 파라미터 최적화, 위험 제어 및 신호 필터링 측면에서 최적화 할 여지가 있습니다. 그러나 핵심 아이디어는 간단하고 명확하며 전략 학습에 적합합니다.
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)
var lastSellHour = 0
var disableAdditionalBuysThisDay = false
if(time > lastSellHour + 1000 * 60 * 60 * 6)
disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
disableAdditionalBuysThisDay := true
lastSellHour := time
source = close
//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)
plot(upper, color=color.white)
plot(lower, color=color.white)
strategy.initial_capital = 50000
if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)
if(strategy.position_size > 0)
strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
strategy.close("Long", when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")