
개요: 이중 K 사격 전략은 123 역전 전략과 마틴 프린지 K 전략의 장점을 결합한 조합 전략이다. 이 전략은 역전 전략과 순환 지표 전략의 장점을 활용하여 더 정확한 구매/판매 신호를 달성하기 위해 고안되었다.
전략적 원칙:
이중 K 화살 활 전략은 두 부분으로 구성된다:
123 역전 전략: 이 전략은 주가가 2일 연속으로 종결 가격 역전되는 특징을 기반으로, 무작위 지표와 결합하여 매매 시점을 판단한다. 종결 가격이 전날보다 높고 무작위 지표가 50보다 낮으면, 매매 단계에 있다고 여겨져, 매매 신호를 발생시킨다. 종결 가격이 전날보다 낮고 무작위 지표가 50보다 높으면, 배분 단계에 있다고 여겨져, 매매 신호를 발생시킨다.
Martin Pringle K 전략: 이 전략은 다른 주기적 수량 가격 곡선의 중첩을 이용하여, 하나의 종합순환 지표를 형성한다. 이 지표 위에 그것의 이동 평균을 통과할 때, 구매 신호를 생성한다. 현재 그것의 이동 평균을 통과할 때, 판매 신호를 생성한다.
이중 K 사격 전략은 두 전략 신호에 대한 통합 처리를 하고, 즉 두 전략이 동시에 구매/판매 신호를 발신해야만 실제 거래가 된다. 이렇게 두 전략이 각자의 판단 시점의 장점을 발휘하여 단일 전략이 잘못된 신호를 발생하지 않도록 한다.
우위 분석:
두 가지 전략적 판단을 결합하여 구매/판매 신호를 더욱 신뢰하고, 잘못된 거래를 방지한다.
123 역전 전략은 단기 역전 기회를 잡을 수 있고, 마틴 프린터 K 전략은 장기적인 경향을 판단할 수 있다. 이 둘은 단기적인 것을 고려하고 장기적인 것을 동시에 고려한다.
다주기량비율곡선을 사용하여, 대주기 시장의 리듬에 대해 예리한 판단을 한다.
무작위 지표의 매개 변수는 최적화되어 다른 상황의 주식 특성에 적응할 수 있다.
위험 분석:
통합 신호는 일부 매매점을 놓칠 수 있으며, 단기 시장을 완전히 파악할 수 없습니다.
표본 외의 상황에서는 두 전략 신호가 일치하지 않을 수 있으며, 선호하는 방향을 정확하게 확인해야 한다.
두 가지 전략의 매개 변수를 동시에 모니터링하고 최적화하는 것이 더 어렵습니다.
긴 짧은 주기 지표 매개 변수를 적절히 최적화하지 않으면 주기 전환 지점을 놓칠 수 있다.
최적화 방향:
전략 효과에 대한 다양한 변수의 영향을 테스트하고 최적의 변수 조합을 찾습니다.
손실을 막기 위해 Stop Loss Module를 추가합니다.
포지션 개시량 최적화 모듈을 추가하여 시장 상황에 따라 포지션을 조정하십시오.
기계학습과 결합하여 더 강력한 구매/판매 신호 모델을 훈련합니다.
적응형 변수 최적화 모듈을 추가하여 전략 변수가 시장의 속도를 동적으로 추적할 수 있도록 합니다.
결론:
이중 K 탄도 활 전략은 반전 전략과 순환 지표 전략의 장점을 성공적으로 결합하여 신호 품질을 보장하면서 단기 및 장기 수익 기회를 동시에 고려한다. 이 전략은 새로운 아이디어이며 추가 테스트 및 최적화를 할 가치가 있으며 안정적인 전략이 될 잠재력을 가지고 있습니다. 그러나 복잡한 다변화 시장에서 안정적인 수익을 얻기 위해 위험 제어 및 변수 최적화에 주의를 기울여야합니다.
/*backtest
start: 2023-09-17 00:00:00
end: 2023-10-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 17/02/2021
// 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
// Pring's Special K is a cyclical indicator created by Martin Pring.
// His method combines short-term, intermediate and long-term velocity
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// 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
MPSK(a, sources) =>
pos = 0.0
roc1 = (sma(roc(sources,10),10)*1)
roc2 = (sma(roc(sources,15),10)*2)
roc3 = (sma(roc(sources,20),10)*3)
roc4 = (sma(roc(sources,30),15)*4)
roc5 = (sma(roc(sources,40),50)*1)
roc6 = (sma(roc(sources,65),65)*2)
roc7 = (sma(roc(sources,75),75)*3)
roc8 = (sma(roc(sources,100),100)*4)
roc9 = (sma(roc(sources,195),130)*1)
roc10 = (sma(roc(sources,265),130)*2)
roc11 = (sma(roc(sources,390),130)*3)
roc12 = (sma(roc(sources,530),195)*4)
osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
oscsmt = sma(osc,a)
pos := iff(osc > oscsmt, 1,
iff(osc < oscsmt, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Martin Pring's Special K", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Martin Pring`s ----")
a = input(10, title = "Smooth" )
sources = input(title="Source", type=input.source, defval=close)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMPSK = MPSK(a,sources)
pos = iff(posReversal123 == 1 and posMPSK == 1 , 1,
iff(posReversal123 == -1 and posMPSK == -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 )