KST 지표와 EMA 지표를 기반으로 한 거래 전략


생성 날짜: 2023-11-07 16:36:21 마지막으로 수정됨: 2023-11-07 16:36:21
복사: 0 클릭수: 397
1
집중하다
1166
수행원

KST 지표와 EMA 지표를 기반으로 한 거래 전략

개요

이 전략의 핵심 아이디어는 KST 지표와 EMA 평균선을 결합하여 트렌드를 판단하고 추적하는 것입니다. KST 지표가 금색이 나타나 0보다 낮으면 구매하고, 사다리점이 나타나 0보다 높으면 판매합니다. 또한 EMA 평균선을 지원 저항으로 결합하여 종결 가격이 EMA 평균선을 돌파 할 때만 거래 신호를 냅니다. 이 전략은 간단하고 실용적이며 자동으로 트렌드를 추적 할 수 있으며 중장기 포지션에 적합합니다.

전략 원칙

  1. KST 지수를 계산: 각각 10일, 15일, 20일, 30일 ROC 지수를 계산하고, 그 각각에 무게를 더한 곱셈을 하여, 마지막으로 9일 SMA를 매끄럽게 하여 KST 지수를 얻는다.

  2. EMA 평균선을 계산한다: 계산 길이는 50의 EMA 평균선이다.

  3. 구매 신호를 생성한다: KST 지표의 빠른 선에서 느린 선을 통과하고 0보다 낮아지고, 마감 가격이 EMA 평균선보다 높을 때 구매 신호를 생성한다.

  4. 판매 신호를 생성한다: KST 지표의 빠른 선 아래에서 느린 선을 통과하고 0보다 높을 때 판매 신호를 생성한다.

  5. 모바일 스톱을 설정: 추적 스톱은 계정 가치의 1%로 설정되어 자동 스톱을 구현한다.

전략적 이점

  1. KST 지표는 트렌드 변화를 식별할 수 있고, EMA 평선은 트렌드 방향을 확인할 수 있으며, 둘을 결합하면 ENTRY 시간을 정확하게 판단할 수 있다.

  2. KST 지표의 방향을 판단하기 위해 0축과 교차하는 빠른 느린 교차를 사용하십시오.

  3. EMA 평행선은 지원 저항으로, 추가로 가짜 신호를 필터링하고, EMA를 돌파했을 때만 진입한다.

  4. 자동으로 스톱로스를 추적하여 위험을 통제하고 수익을 창출합니다.

  5. 정책의 매개 변수가 적고, 실행 및 최적화가 쉽다.

전략적 위험

  1. KST 지표는 트렌드 변화에 대한 판단이 지연되어 일부 기회를 놓칠 수 있다. 계산주기를 단축하거나 가중치를 최적화할 수 있다.

  2. EMA 평균선은 지연성이 있으며, 트렌드 전환점에서는 유효하지 않을 수 있다. 다른 지표 또는 다중 평균선 조합을 시도할 수 있다.

  3. 손해 중지 설정이 지나치게 느슨하면 손실이 확대될 수 있고, 지나치게 긴축하면 하룻밤 사이에 큰 변동으로 손해 중지될 수 있다. 균형점을 찾기 위해 주의깊은 테스트가 필요하다.

  4. 전략적 신호가 자주 발생하고 거래 비용이 높을 수 있다. 적절한 입시 조건의 완화를 통해 거래 횟수를 줄일 수 있다.

전략 최적화 방향

  1. KST 지표의 계산 주기 변수를 최적화하여 특정 품종에 더 민감한 변수 조합을 찾습니다.

  2. 다른 평선 지표 또는 조합을 테스트해 보세요. MA, WMA 등과 같이 KST와 함께 어떤 것이 더 잘 작동하는지 보세요.

  3. 변동률 또는 ATR 동력에 따라 중지 손실을 조정하십시오.

  4. 거래량이 급격히 증가하는 것과 같은 필터링 조건을 추가하여 피하는 것입니다.

  5. RSI, MACD 등과 다른 지표들과 결합하여 전략을 더 포괄적으로 고려하십시오.

  6. 다양한 품종의 매개 변수의 효과를 테스트하고, 다양한 품종에 맞는 최적화 계획을 수립한다.

요약하다

이 전략의 전체적인 아이디어는 명확하고, 신뢰할 수 있으며, 쉽게 구현할 수 있으며, KST 지표를 통해 트렌드 전환을 판단하고, EMA 평선을 추가로 필터링하고, 손실 제어 위험을 차단하고, 중장선 트렌드를 자동으로 추적할 수 있습니다. 파라미터를 선택하여 합리적으로, 최적화 할 수있는 공간이 넓고, 사용자는 필요에 따라 파라미터를 조정할 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")
roclen3 = input(20, minval=1, title = "ROC Length #3")
roclen4 = input(30, minval=1, title = "ROC Length #4")
smalen1 = input(10, minval=1, title = "SMA Length #1")
smalen2 = input(10, minval=1, title = "SMA Length #2")
smalen3 = input(10, minval=1, title = "SMA Length #3")
smalen4 = input(15, minval=1, title = "SMA Length #4")
siglen = input(9, minval=1, title = "Signal Line Length")
smaroc(roclen, smalen) => sma(roc(close, roclen), smalen)
kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4)
sig = sma(kst, siglen)
plot(kst, color=color.green, title="KST")
plot(sig, color=color.red, title="Signal")
hline(0, title="Zero")

len = input(50, minval=1, title="Length EMA")
src = input(close, title="Source EMA")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
fastEMA = ema(src, len)

delta = kst - sig

buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA
sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA

longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

// STEP 2:
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if (strategy.position_size < 0)
    stopValue = close * (1 + shortTrailPerc)
    min(stopValue, shortStopPrice[1])
else
    999999

// Submit entry orders
if (buySignal)
    strategy.entry(id="EL", long=true)

if (sellSignal)
    strategy.entry(id="ES", long=false)

// STEP 3:
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="XL TRL STP", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="XS TRL STP", stop=shortStopPrice)



alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy')

alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')