
이 전략은 역동적인 트렌드 캡처 전략과 동적 스톱 전략을 결합한 이중 전략으로, 역동적인 트렌드 캡처하는 동시에 동적 스톱을 설정하여 위험을 제어하는 것을 목표로 합니다.
이 전략은 무작위적인 지표 K값과 D값을 기반으로 한다. 가격이 2일 연속으로 하락하면서 K값이 D값보다 상승할 때 구매 신호를 생성한다. 가격이 2일 연속으로 상승하면서 K값이 D값보다 하락할 때 판매 신호를 생성한다. 이렇게 가격 반전의 추세를 잡을 수 있다.
이 전략은 가격의 변동성과 편향을 바탕으로 동적 스톱로드를 설정한다. 이는 최근 기간 동안의 가격 고점과 낮점의 변동 상황을 계산하고, 편향과 결합하여 현재 상승 채널 또는 하향 채널에 있다고 판단하여 동적으로 스톱로드를 설정한다. 이것은 시장 환경에 따라 스톱로드를 조정할 수 있다.
두 가지 전략이 결합되어 역전 신호를 잡는 동시에 동적 스톱로스를 설정하여 위험을 제어한다.
최적화 변수, 엄격한 손실, 유동성이 좋은 품종을 선택하여 위험을 제어 할 수 있습니다.
포괄적 인 최적화를 통해, 전략은 위험을 통제하는 전제 하에서 역동 경향을 최대한 포착 할 수 있습니다.
이 전략은 역전 추세를 포착하고 동적 손실을 방지하는 이중 전략을 결합하여 가격 역전점을 포착하고 동적 손실을 제어하는 위험을 설정할 수 있습니다. 비교적 안정적인 단선 거래 전략입니다. 지속적인 모니터링을 최적화하면 이 전략은 안정적인 수익을 얻을 수 있습니다.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 07/12/2020
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The Kase Dev Stops system finds the optimal statistical balance between letting profits run,
// while cutting losses. Kase DevStop seeks an ideal stop level by accounting for volatility (risk),
// the variance in volatility (the change in volatility from bar to bar), and volatility skew
// (the propensity for volatility to occasionally spike incorrectly).
// Kase Dev Stops are set at points at which there is an increasing probability of reversal against
// the trend being statistically significant based on the log normal shape of the range curve.
// Setting stops will help you take as much risk as necessary to stay in a good position, but not more.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
KaseDevStops(Length, Level) =>
pos = 0.0
RWH = (high - low[Length]) / (atr(Length) * sqrt(Length))
RWL = (high[Length] - low) / (atr(Length) * sqrt(Length))
Pk = wma((RWH-RWL),3)
AVTR = sma(highest(high,2) - lowest(low,2), 20)
SD = stdev(highest(high,2) - lowest(low,2),20)
Val4 = iff(Pk>0, highest(high-AVTR-3*SD,20), lowest(low+AVTR+3*SD,20))
Val3 = iff(Pk>0, highest(high-AVTR-2*SD,20), lowest(low+AVTR+2*SD,20))
Val2 = iff(Pk>0, highest(high-AVTR-SD,20), lowest(low+AVTR+SD,20))
Val1 = iff(Pk>0, highest(high-AVTR,20), lowest(low+AVTR,20))
ResPrice = iff(Level == 4, Val4,
iff(Level == 3, Val3,
iff(Level == 2, Val2,
iff(Level == 1, Val1, Val4))))
pos := iff(close < ResPrice , -1, 1)
pos
strategy(title="Combo Backtest 123 Reversal & Kase Dev Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthKDS = input(30, minval=2, maxval = 100)
LevelKDS = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKaseDevStops = KaseDevStops(LengthKDS, LevelKDS)
pos = iff(posReversal123 == 1 and posKaseDevStops == 1 , 1,
iff(posReversal123 == -1 and posKaseDevStops == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )