평형 크기의 클라우드 그래프 트렌드 추적 전략

저자:차오장, 날짜: 2024-02-01 11:34:23
태그:

均衡尺云图趋势跟踪策略

전략 이름: 평형 클라우드 차트 트렌드 추적 전략

두 번째, 전략 개요

이 전략은 평형 크라우드 그래프 지표에서 제공되는 여러 신호를 사용하여 중장기 추세를 포착하고, 격변을 필터링하고, 강한 추세를 추적하는 것을 목표로 한 순차적인 추세 추적 전략을 설계했습니다.

세 번째, 전략적 원칙

이 전략은 평형 클라우드 차트 지표의 전환선, 기준선, 그리고 지연선과 같은 주요 신호를 사용합니다. 장기적인 트렌드 판단의 경우, 앞 클라우드와 후계 클라우드의 상하위 변화 관계에 초점을 맞추어 트렌드를 판단합니다. 구체적인 입출시 선택의 경우, 전환선과 기준선의 교차와 가격과 클라우드 차트 관계에 대한 변화와 같은 변화가 주요 근거입니다.

전체적으로, 이 전략의 핵심 논리는: 중장기 트렌드 방향을 확인하는 것-> 강한 트렌드가 다시 시작될 기회를 기다리는 것-> 진입 트렌드를 추적하는 것-> 스톱 손실 출구를 추적하는 것->

구체적으로 중장기 경향을 판단할 때 전면 구름과 후면 구름의 변화 관계에 의해 결정된다. 중장기 경향을 확인한 후, 전환선과 기준선의 교차점과 가격의 파업 클라우드 그래프의 신호를 통해 경향 판단을 다시 시작하여 입시 신호를 발사한다. 입시 후 기준선을 중지 손실 라인으로 사용하여 중지 손실을 추적한다.

이 방법은 중·단기적인 불안을 필터링하는 동시에 강력한 추세를 잡을 수 있는 기회를 통해 증권 시장에서 장기적으로 안정적인 초과 수익을 얻을 수 있다.

네, 전략적 장점

(i) 평형형 클라우드 차트를 이용하여 중장기 트렌드 방향을 판단하여 주요 방향을 파악하는 데 도움이 됩니다.

(ii) 전환선과 기준선의 교차와 가격과 클라우드 차트와의 관계 변화의 입상 시기를 판단하여 불안을 효과적으로 필터하여 강력한 추세를 포착할 수 있습니다.

(iii) 대형 트렌드 수익을 얻을 수 있는 스톱 손실 탈퇴 메커니즘을 추적하고 개별 손실을 효과적으로 제어할 수 있습니다.

(4) 다양한 평형 클라우드 차트 신호를 통합하여 체계적인 트렌드 추적 전략을 형성하고 안정적으로 잘 수행합니다.

5. 전략적 위험

1) 중장기간에 잘못된 판단의 체계적 위험. 중장기간에 잘못된 추세 판단이 있다면 후속 작업도 잘못된 방향의 위험에 직면할 것이다.

(2) 출입시간의 잘못된 선택에 대한 위험.

(iii) 너무 가까운 중지 손실의 위험을 추적한다. 너무 가까운 중지 손실 거리가 있다면 극단적인 시장이 중단 손실을 초래할 수 있습니다.

(4) 거래 빈도가 너무 높으면 거래 수수료 부담. 만약 매개 변수 설정이 적절하지 않아 거래 빈도가 너무 높으면 거래 수수료도 증가한다.

6. 전략 최적화

(i) 서로 다른 평형 사이클 파라미터의 조합을 테스트하여 최적 파라미터를 찾습니다.

2) 진입 조건을 최적화하고, 더 엄격한 필터를 설계하여 효과적인 진입을 보장합니다.

(3) 손해배상 거리를 조정하여 위험과 이익의 최적의 균형을 찾습니다.

(4) 수익률 가격 목표를 추가하여 가격과 핵심 평형 지표 거리를 결합하여 동적 수익 메커니즘을 형성합니다.

7 요약

이 평형화구표는 트렌드 추적 전략으로, 통합 평형화구표는 여러 신호를 통해 트렌드 방향, 입시, 스톱 손실 출퇴를 판단한다. 실습은 이 전략이 중장기 트렌드를 효과적으로 파악하고, 격변을 필터링하고, 안정적으로 초과 수익을 얻을 수 있음을 보여준다. 향후 지속적인 최적화 테스트를 통해 더 나은 수익을 얻기 위해 전략의 성능을 개선할 수 있을 것으로 기대된다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2)

//***************************
//  INPUT BACKTEST RANGE    *
//***************************
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2010, title = "From Year", minval = 2000) 
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2000)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

//***************
//*  ICHIMOKU   *
//***************
//inizializzazione parametri,,
tenkanPeriods = input(9, minval=1, title="Tenkan-Sen")
kinjunPeriods = input(26, minval=1, title="Kinjun-Sen")
senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B")
displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A")

//definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line)
averageHighLow(period) => avg(lowest(period), highest(period))
tenkan= averageHighLow(tenkanPeriods)
kinjun = averageHighLow(kinjunPeriods)
senkouSpanA = avg(tenkan, kinjun)
senkouSpanB = averageHighLow(senkouSpanBPeriods)

//definisco il colore della kumo in base al trend.
senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na
senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na

span1plotU = senkouSpan1Above ? senkouSpanA : na
span2plotU = senkouSpan1Above ? senkouSpanB : na
span1plotD = senkouSpan2Below ? senkouSpanA : na
span2plotD = senkouSpan2Below ? senkouSpanB : na

col = senkouSpanA >= senkouSpanB ? lime : red

//plots Ichimoku
plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue)
plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red)
plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua)
plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime)
plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red)

//Cloud Lines Plot 
p1 = plot(span1plotU ? span1plotU  : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col)
p2 = plot(span2plotU ? span2plotU  : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p3 = plot(span1plotD ? span1plotD  : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
p4 = plot(span2plotD ? span2plotD  : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col)
//Fills that color cloud based on Trend.
fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)')
fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)')

//***********************************************
//*     condizioni ingresso ed uscita mercato   *
//***********************************************
isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false
isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement]))
isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement]))
isChinkouSpanSopra = high[displacement]<close
isChinkouSpanSotto = low[displacement]>close

filtroLong=isSopraKumo and isChinkouSpanSopra
filtroShort=isSottoKumo and isChinkouSpanSotto

//rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long
isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) 
isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and  (close<kinjun) 

//Breackout Kumo
isBreackoutKumoEntryLong =  crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) 
isBreackoutKumoEntryShort =  crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun)

ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong
ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort

isExitLong = close<kinjun
isExitShort = close>kinjun

//ingressi ed uscite Mercato
strategy.entry ("Long",long=true, when = window() and ConditionEntryLong)
strategy.entry ("Short",long=false, when = window() and ConditionEntryShort)

strategy.close(id="Long", when=isExitLong)
strategy.close(id="Short", when=isExitShort)
strategy.close_all(when=not window())


더 많은 내용