강점 K라인 돌파전략


생성 날짜: 2023-10-07 15:59:26 마지막으로 수정됨: 2023-10-07 15:59:26
복사: 0 클릭수: 632
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

힘도 K선 돌파 전략은 힘도 K선 형태와 힘도 지표를 활용하여 주식 매매를 실현하는 수량 거래 전략이다. 이 전략은 여러 가지 기술 지표와 함께 주가 추세와 힘도 신호를 식별하고, 돌파점에서 포지션을 구축하고, 스톱스트로프를 설정하여 거래 위험을 효과적으로 제어한다.

전략 원칙

K선 돌파 전략은 다음과 같은 몇 가지 요인에 기초하고 있습니다.

  1. 상품 통로 지수 ((CCI) 를 사용하여 주가가 과매매 영역에 있는지 판단하십시오. CCI가 100을 넘으면 과매매 신호로 간주하고, CCI가 100을 넘으면 과매매 신호로 간주합니다.

  2. K선 형태를 판단하고, 돌파 신호를 식별한다. 종결 가격이 개시 가격보다 높은 빨간 K선으로 판단하면 상승 추세이며, 종결 가격이 개시 가격보다 낮은 녹색 K선으로 판단하면 하락 추세이다.

  3. 합성 거래량 지표는 거래량이 커질 경우에만 구매 및 판매 신호를 발송하는 것을 고려한다.

  4. 상승 추세가 확인되고 CCI 지표가 과매매를 표시할 때, 매매를 한다. 하향 추세가 확인되고 CCI 지표가 과매매를 표시할 때, 매매를 한다.

  5. 스톱로스 스톱포트를 설정한다. 구매 후 하향 위험을 제어하기 위해 일정 비율의 스톱포트를 설정하고, 수익을 잠금하기 위해 일정 비율의 스톱포트를 설정한다.

구체적으로, 이 전략은 CCI 지표를 사용하여 과매매를 판단하고, K선 형태를 판단하고, 트렌드 방향을 판단하고, Volume 지표 판단력을 발휘한다. 조건이 있을 때, longing ((구매를 개시) 또는 shorting ((매매를 개시) 의 작업을 수행한다. 손실을 중지하는 스톱을 통해 위험을 제어하고 수익을 잠금한다.

우위 분석

K선 돌파 전략은 다음과 같은 장점이 있다:

  1. 여러 지표가 결합되어 의사결정을 하기 때문에 거래 신호가 더 신뢰할 수 있다. CCI 지표는 매매 지점을 결정하고, K 선은 트렌드 방향을 판단하고, 볼륨은 시장의 힘을 반영한다.

  2. K선 형태를 사용하여 트렌드 방향을 판단할 수 있으며, 가격 반전의 기회를 더 정확하게 잡을 수 있다. 예를 들어 빨간 K선과 CCI 과매매를 결합하면 구매할 수 있다.

  3. 스톱로스 스톱 메커니즘을 설정하면 위험을 효과적으로 제어하고 손실이 확대되는 것을 막을 수 있으며 수익을 잠금 할 수 있습니다.

  4. 거래량이 커질 때만 거래 신호를 고려하여 가짜 신호를 필터링 할 수 있습니다.

  5. 전략은 명확하고 이해하기 쉽고, 변수 설정은 유연하며, 다른 주식과 시장 환경에 맞게 최적화할 수 있다.

  6. 전략의 안정성과 수익률을 높이기 위해 전략에 확장 최적화를 할 수 있습니다. 예를 들어, 더 많은 요소를 추가하거나 기계 학습 등이 가능합니다.

위험 분석

K선 돌파 전략에는 다음과 같은 위험도 있습니다.

  1. CCI 지표에서 발신된 구매/판매 신호는 지연될 수 있으며, 이로 인해 최적의 입시 지점을 놓칠 수 있다. CCI의 매개 변수를 적절히 최적화하여 민감성을 높일 수 있다.

  2. K선형 판단에 의한 가짜 돌파 신호는 불필요한 손실을 초래할 수 있다. 확인을 위해 더 많은 지표를 추가하거나, 스톱 손실 비율을 조정할 수 있다.

  3. 거래량이 증가하는 것은 시장 조작을 반영할 수도 있고, 가격과 거래량의 관계에 주의를 기울여야 함으로써 함정에 빠지는 것을 방지할 수 있다.

  4. 정적의 정지폭 설정은 조기 정지하거나 더 큰 상황을 놓칠 수 있다. 동적으로 정지폭 비율을 조정하는 것을 고려할 수 있다.

  5. 개별 주식 설정의 매개 변수는 반드시 다른 주식에도 적용되지 않으며, 다른 주식의 특성에 따라 테스트 최적화가 필요합니다.

  6. 장기적인 재검토 데이터는 반드시 실盘의 성능을 나타내지는 않으며, 실盘에서는 조작 위험에 주의를 기울여야 한다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화를 고려할 수 있습니다.

  1. CCI 매개 변수를 최적화하여 CCI 지표의 구매/판매 지점에 대한 판단 민감도를 높인다.

  2. 매커드, 볼린저 밴드 등과 같은 보조 지표를 추가하여 거래 신호의 정확성을 높였습니다.

  3. 기계 학습 알고리즘에 참여하여, 구매 및 판매 지점을 예측하기 위해 역사적인 데이터 훈련을 사용합니다.

  4. 동적 스톱 스톱 방식을 적용하여 시장의 변동에 따라 스톱 스톱 스톱 비율을 조정합니다.

  5. 거래량을 확대하는 판단 논리를 최적화하고, 양값의 오차를 방지한다.

  6. 다른 주식 특성 및 시장 환경에 따라, 최적화 파라미터 설정, 전략 안정성을 향상

  7. 트렌드 추적 메커니즘을 추가하여 다양한 단계의 전략을 최적화합니다.

  8. 정책 구조를 개선하고, 모듈화된 관리를 도입하고, 코드의 유연성과 확장성을 향상시킨다.

요약하다

강도 K선 돌파 전략은 전체적으로 비교적 간단하고 명확한 단선 거래 전략이다. 그것은 여러 가지 일반적인 기술 지표의 장점을 결합하고, 판단 논리가 명확하고 이해하기 쉽고, 손해 막을 통해 위험을 제어한다. 이 전략은 단선 가격 반전점을 포착하고, 중기 트렌드를 추적하기 위해 자신의 필요에 따라 유연하게 최적화 할 수 있다. 그러나 지표 지연 및 가짜 돌파의 위험을 예방하는 데 주의를 기울여야 한다. 체계적인 최적화와 엄격한 자금 관리가 있다면 이 전략은 양적 거래의 기본 전략 중 하나가 될 수 있다.

전략 소스 코드
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]War Machine PAT Intra", overlay=true, calc_on_every_tick = false)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01    

trendFactor = input(title="Trend Factor(Lower means trending)", type=input.integer, minval=1, step=1, defval=50)

oversold = input(title="Oversold", type=input.integer, minval=1, step=1, defval=25)

overbought = input(title="Overbought", type=input.integer, minval=1, step=1, defval=75)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


// ********** Supporting functions - End **********


// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
//Vol Confirmation
vol = volume > volume[1]

//Engulfing candle confirm
bullishEC = close > open[1] and close[1] < open[1]
bearishEC = close < open[1] and close[1] > open[1]

//Candles colors
greenCandle = (close > open)
redCandle = (close < open)

length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
upper = sum(volume * (change(src) <= 0 ? 0 : src), length)
lower = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(upper, lower) =>
    100.0 - (100.0 / (1.0 + upper / lower))
mf = _rsi(upper, lower)
ci = 100 * log10(sum(atr(1), length) / (highest(length) - lowest(length))) / log10(length)

//tradeSignal = ((rsiOS or rsiOS[1]) and bullishEC) or ((rsiOB or rsiOB[1]) and bearishEC)




//Final Long/Short Condition
longCondition =  redCandle and mf < oversold and ci <trendFactor and vol
shortCondition = greenCandle and mf >overbought and ci <trendFactor and vol
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********