
삼龙 시스템은 확장된 가격량 트렌드 지표, 동천 통지 지표, 그리고 평행선 SAR 지표를 결합한 복합 기술 거래 전략이다. 이 전략은 시장 트렌드 방향과 잠재적인 매매 신호를 식별하기 위해 세 가지 지표의 상호 보완적 이점을 이용한다.
이 전략은 먼저 확장된 가격량 경향 지표와 돈치안 채널을 사용하여 시장 경향 방향을 판단한다. 확장된 가격량 경향 지표가 기저선 위에 있고 가격이 돈치안 채널의 상향 궤도에 있을 때 상승 추세에 있음을 나타냅니다. 반대로 확장된 가격량 경향 지표가 기저선 아래에 있고 가격이 돈치안 채널의 하향 궤도에 있을 때 하향 추세에 있음을 나타냅니다.
시장의 추세 방향을 확인한 후, 이 전략은 특정 구매 및 판매 시점을 식별하기 위해 패러블 라인 SAR 지표를 도입합니다. 패러블 라인 SAR 지표 아래에 가격이 통과하면 구매 신호를 생성하고 패러블 라인 SAR 지표 위에 가격이 통과하면 판매 신호를 생성합니다.
신호를 더 검증하기 위해, 이 전략은 또한 여러 시간 주기에 걸쳐 트렌드 방향을 확인하고, 시장의 급격한 변동성 동안 진입하는 것을 피한다. 또한, 이 전략은 수익을 잠금하고 위험을 제어하기 위해 여러 개의 중지 수준을 설정한다.
삼락 시스템의 가장 큰 장점은 지표 포괄이 상호 보완적으로 강한 세 가지 다른 유형의 지표를 사용하여 시장의 흐름을 더 포괄적으로 정확하게 판단 할 수 있다는 것입니다. 구체적으로, 주요 장점은 다음과 같습니다:
지표의 유기적 결합을 통해 각 지표의 장점을 충분히 활용할 수 있으며, 삼성전자 시스템은 중·장선 동향을 정확하게 판단하고, 매매점을 더 정확하게 식별하여 우수한 위험-수익률을 얻을 수 있습니다.
삼龙 시스템은 지표 포지션 전략으로, 전체적인 위험은 조절할 수 있지만, 여전히 주의해야 할 위험은 있습니다:
위와 같은 위험에 대해, 우리는 지표의 매개 변수 설정을 적절하게 조정하고, 다른 지표에 대한 판단을 보조하여, 단일 지표의 실패 가능성을 줄이는 것을 권장합니다. 또한, 합리적인 중지 손실과 위치 관리는 전략의 전반적인 위험 관리에 중요합니다.
삼龙 시스템에는 더 많은 최적화가 가능합니다:
알고리즘화된 매개 변수 최적화, 다중 지표 조합 판단 및 행동 정량 분석을 통해 삼龙 시스템의 수익률과 안정성을 더욱 향상시킬 수 있습니다. 우리는 지속적으로 업계 최첨단 기술에 주목하고 지속적으로 개선 전략 시스템을 최적화 할 것입니다.
삼龙 시스템은 기술 지표 포지션 전략으로, 가격량 트렌드 지표, 唐通道 지표 및 낙선선 SAR 지표의 3자 장점을 상호 보완하여 시장 움직임을 판단하고 매수점을 찾아내는 것이다. 이 전략은 정확한 판단, 위험 제어, 반복 검증, 중장기 투자자에게 적합한 효과적인 전략 시스템이다.
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="TRIPLE DRAGON SYSTEM", overlay=true,default_qty_type = strategy.percent_of_equity,default_qty_value=100,initial_capital=1000,pyramiding=0,commission_value=0.01)
/////////////// DRAG-ON ///// EMA'S ///////////////
emar = ta.ema(close,5)
plot(emar, color=color.blue, title="S-Fast EMA")
//EMAlengthTRF = input.int(200, minval=1,title = "EMA Filter")
//ematrf = ta.ema(close,EMAlengthTRF)
//plot(ematrf, "EMA-TREND FILTER", color=color.red,linewidth = 4)
/////////////// 1-DRAG-ON /////EXTENDED PRICE VOLUME TREND ///////////////
lenght = input(200,"EPVT - Trend Lenght")
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
runtime.error("No volume is provided by the data vendor.")
src = close
vt = ta.cum(ta.change(src)/src[1]*volume)
upx = ta.highest(vt,lenght)
downx = ta.lowest(vt,lenght)
basex = (upx +downx)/2
VTX = vt - basex
/////////////// 2-DRAG-ON ///// DON TREND ///////////////
length = input.int(200, minval=1, title = "Donchian Lenght")
lower = ta.lowest(length)
upper = ta.highest(length)
basis = math.avg(upper, lower)
updiff = upper - close
downdiff = lower - close
dontrend = -(updiff + downdiff)
xupx = ta.highest(dontrend,length) >0 ? ta.highest(dontrend,length) : 0
xdownx = ta.lowest(dontrend,length) < 0 ?ta.lowest(dontrend,length) :0
xxbasisxx = math.avg(xdownx, xupx)
inversedragup = xupx[1]
inversedragdown = xdownx[1]
inversedragon = (inversedragup+inversedragdown)/2
/////////////// 3-DRAG-ON ///// SUPER SAR-X ///////////////
start = input(0.02)
increment = input(0.02)
maximum = input(0.8)
entry_bars = input(1, title='Entry on Nth trend bar')
atr = ta.atr(14)
atr := na(atr) ? ta.tr : atr
psar = 0.0 // PSAR
af = 0.0 // Acceleration Factor
trend_dir = 0 // Current direction of PSAR
ep = 0.0 // Extreme point
trend_bars = 0
sar_long_to_short = trend_dir[1] == 1 and close <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1] // PSAR switches from short to long
trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long
// Calculate trend direction
trend_dir := barstate.isfirst[1] and close[1] > open[1] ? 1 : barstate.isfirst[1] and close[1] <= open[1] ? -1 : sar_long_to_short ? -1 : sar_short_to_long ? 1 : nz(trend_dir[1])
trend_bars := sar_long_to_short ? -1 : sar_short_to_long ? 1 : trend_dir == 1 ? nz(trend_bars[1]) + 1 : trend_dir == -1 ? nz(trend_bars[1]) - 1 : nz(trend_bars[1])
// Calculate Acceleration Factor
af := trend_change ? start : trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] ? math.min(maximum, af[1] + increment) : af[1]
// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high : trend_change and trend_dir == -1 ? low : trend_dir == 1 ? math.max(ep[1], high) : math.min(ep[1], low)
// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] : barstate.isfirst[1] and close[1] <= open[1] ? high[1] : trend_change ? ep[1] : trend_dir == 1 ? psar[1] + af * atr : psar[1] - af * atr
//////////////// MELODY ///////////////////
VTY = ta.valuewhen(ta.cross(VTX,0),close,0)
//plot(VTY, color=color.black, title="Extended-PVT")
//DONTRENDX = ta.valuewhen(ta.cross(dontrend,0),close,0)
//plot(DONTRENDX, color=color.red, title="DONCHIAN TREND")
SSARX = ta.valuewhen(ta.cross(psar,close),close,0)
//plot(SSARX, color=color.black, title="SSAR-X")
MAXDRAG = math.max(SSARX,VTY)
//plot(MAXDRAG, color=color.black, title="MAX DRAG")
MINDRAG = math.min(SSARX,VTY)
//plot(MINDRAG, color=color.black, title="MIN DRAG")
BASEDRAG = math.avg(MAXDRAG,MINDRAG)
//plot(BASEDRAG, color=color.red, title="BASE DRAG")
/////BUY AND SELL LOGIC ///////////
DRAGONBUY = (ta.crossover(close,MAXDRAG) or ta.crossover(close,MINDRAG) )
DRAGONBUYSTOP = (ta.crossunder(close,MAXDRAG) or ta.crossunder(close,MINDRAG))
DRAGONBUYPLOT = ta.valuewhen(DRAGONBUY==true,close,0)
plot(DRAGONBUYPLOT, color=color.red, title="BUY LINE")
DRAGONSELL = (ta.crossunder(close,MAXDRAG) or ta.crossunder(close,MINDRAG) )
DRAGONSELLSTOP = (ta.crossover(close,MAXDRAG) or ta.crossover(close,MINDRAG))
DRAGONSELLPLOT = ta.valuewhen(DRAGONSELL==true,close,0)
plot(DRAGONSELLPLOT, color=color.red, title="SELL LINE")
/////TAKE PROFIT LOGIC ///////////
tp1 = input.int(5, minval=1,title = "TP-1")
tp2 = input.int(10, minval=1,title = "TP-2")
tp3 = input.int(15, minval=1,title = "TP-3")
TPTAKA1B = DRAGONBUYPLOT*(1+tp1/100)
//plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1)
TPTAKA2B = DRAGONBUYPLOT*(1+tp2/100)
//plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1)
TPTAKA3B = DRAGONBUYPLOT*(1+tp3/100)
//plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1)
TPTAKA1S = DRAGONSELLPLOT*(1-tp1/100)
//plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1)
TPTAKA2S = DRAGONSELLPLOT*(1-tp2/100)
//plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1)
TPTAKA3S = DRAGONSELLPLOT*(1-tp3/100)
//plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1)
BUYTP = ta.crossunder(emar,TPTAKA1B) or ta.crossunder(emar,TPTAKA2B) or ta.crossunder(emar,TPTAKA3B)
SELLTP = ta.crossover(emar,TPTAKA1B) or ta.crossover(emar,TPTAKA2B) or ta.crossover(emar,TPTAKA3B)
/////STRATEGY ///////////
// Enter condition
longCondition = DRAGONBUY==true
if longCondition
strategy.entry('Long', strategy.long, comment = "ENTER-LONG")
// Exit condition
strategy.close('Long', when=DRAGONBUYSTOP, comment = "EXIT-LONG")
// Enter condition
ShortCondition = DRAGONSELL
if ShortCondition
strategy.entry('Short', strategy.short, comment = "ENTER-SHORT")
// Exit condition
strategy.close('Short', when=DRAGONSELLSTOP, comment = "EXIT-SHORT")
///// END OF STRATEGY ///////////