리소스 로딩... 로딩...

이치모쿠 쿠모 거래 전략

저자:차오장, 날짜: 2024-05-29 17:23:36
태그:

img

전반적인 설명

이 전략은 시장 트렌드와 거래 신호를 결정하기 위해 이치모쿠 쿠모 지표를 사용합니다. 이 전략은 가격이 쿠모 클라우드 아래에있을 때 길고 가격이 쿠모 클라우드 위에있을 때 짧습니다. 이 전략은 스톱 로스를 위해 ATR 지표를 사용하고 키준 센 및 센쿠 스판 라인의 브레이크로 엔트리 신호를 확인합니다. 이 전략은 위험을 제어하면서 강한 트렌드에 대한 거래 기회를 포착하는 것을 목표로합니다.

전략 원칙

  1. 이치모쿠 지표의 키준센, 텐칸센, 센쿠 스판 라인을 사용하여 시장 트렌드를 결정합니다.
  2. 닫기 가격이 센쿠 스판 라인 아래와 키준센 라인이 쿠모 클라우드 위에 있을 때 긴 신호를 생성합니다.
  3. 닫기 가격이 센쿠 스판 라인 이상이고 키준센 라인이 쿠모 클라우드 아래에 있을 때 짧은 신호를 생성합니다.
  4. 스톱 로스 포지션을 ATR 표시기를 사용하여 계산합니다. 이는 마지막 5개의 촛불 중 가장 높고 가장 낮은 지점인 ATR의 3배인 마이너스/플러스입니다.
  5. 가격이 스톱 로스 수준을 넘으면 포지션을 닫습니다.

전략적 장점

  1. 이 전략은 시장 동향에 대한 포괄적 인 분석을 제공하는 Ichimoku 지표에 기반합니다.
  2. 이 전략은 가격, 키준센 라인, 센쿠 스판 라인 사이의 관계를 고려하여 입시 신호의 신뢰성을 향상시킵니다.
  3. 스톱 로스를 위해 ATR을 사용하면 스톱 로스 포지션의 동적 조정이 가능하며 위험을 더 잘 제어합니다.
  4. 스톱 로스 설정은 시장 변동성을 고려하여 다른 시장 조건에 적응합니다.

전략 위험

  1. 이 전략은 불안한 시장에서 수많은 잘못된 신호를 생성하여 빈번한 거래와 자본 손실로 이어질 수 있습니다.
  2. 전략의 성능은 이치모쿠 지표 매개 변수 선택에 달려 있으며 다른 매개 변수가 다른 거래 결과를 가져올 수 있습니다.
  3. 변동성 있는 시장에서는 가격이 빠르게 스톱 로스 지위를 넘어서서 상당한 미끄러짐과 손실을 초래할 수 있습니다.

전략 최적화 방향

  1. 다른 기술 지표 또는 가격-용량 분석을 도입하여 트렌드와 입시 시기를 결정하고 신호 정확도를 향상시킵니다.
  2. 계정 안전성을 더 잘 보호하기 위해 후속 중지 또는 이동 중지 손실을 고려하는 것과 같은 중지 손실 설정을 최적화하십시오.
  3. 전략에 포지션 크기를 포함하고 시장 변동성과 계정 위험을 기반으로 각 거래의 크기를 조정합니다.
  4. 현재 시장 조건에 가장 적합한 매개 변수 조합을 찾기 위해 전략에 대한 매개 변수 최적화를 수행합니다.

요약

이 전략은 이치모쿠 지표의 여러 구성 요소를 활용하여 시장 트렌드를 포괄적으로 분석합니다. 동시에 전략은 위험을 제어하기 위해 ATR 스톱 로스를 사용하여 전략의 견고성을 향상시킵니다. 그러나 전략은 범위 시장에서 성능이 떨어질 수 있으며 매개 변수 선택에 의존합니다. 미래에 다른 분석 방법을 도입하고 스톱 로스 및 포지션 사이징을 최적화하여 전략의 성능을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © muratatilay

//@version=5
strategy(
     "Kumo Trade Concept", 
     overlay=true,
     initial_capital=10000,
     currency=currency.USDT,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=30,
     commission_type=strategy.commission.percent,
     commission_value=0.1,
     margin_long=10, 
     margin_short=10)


// ICHIMOKU Lines 
//  INPUTS
tenkanSenPeriods = input.int(9, minval=1, title="Tenkan-sen")
kijunSenPeriods = input.int(26, minval=1, title="Kijun-sen")
senkouBPeriod = input.int(52, minval=1, title="Senkou span B")
displacement = input.int(26, minval=1, title="Chikou span")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
tenkanSen = donchian(tenkanSenPeriods)
kijunSen = donchian(kijunSenPeriods)
senkouA = math.avg(tenkanSen, kijunSen)
senkouB = donchian(senkouBPeriod)

// Other Indicators
float   atrValue    = ta.atr(5)

// Calculate Senkou Span A 25 bars back
senkouA_current = math.avg(tenkanSen[25], kijunSen[25])
// Calculate Senkou Span B 25 bars back
senkouB_current = math.avg(ta.highest(senkouBPeriod)[25], ta.lowest(senkouBPeriod)[25])

// Kumo top bottom 
senkou_max = (senkouA_current >= senkouB_current) ? senkouA_current : senkouB_current
senkou_min = (senkouB_current >= senkouA_current) ? senkouA_current : senkouB_current

// Trade Setups
long_setup = (kijunSen > senkou_max) and (close < senkou_min) 
short_setup = (kijunSen < senkou_min ) and ( close > senkou_max ) 

// Check long_setup for the last 10 bars
long_setup_last_10 = false
for i = 0 to 50
    if long_setup[i]
        long_setup_last_10 := true
short_setup_last_10 = false
for i = 0 to 50
    if short_setup[i]
        short_setup_last_10 := true


closeSenkouCross = (close > senkou_max) and barstate.isconfirmed 
closeKijunCross = (close > kijunSen ) 

senkouCloseCross = close < senkou_min
kijunCloseCross = close < kijunSen


// Handle Trades
// Enter Trade
var float trailStopLong = na
var float trailStopShort = na
if ( closeSenkouCross and long_setup_last_10 and closeKijunCross ) 
    strategy.entry(id="Buy", direction = strategy.long)
    trailStopLong := na
if senkouCloseCross and short_setup_last_10 and kijunCloseCross
    strategy.entry(id="Sell", direction = strategy.short)
    trailStopShort := na


// Update trailing stop
float temp_trailStop_long = ta.highest(high, 5) - (atrValue * 3)
float temp_trailStop_short = ta.lowest(low, 5) + (atrValue * 3)
if strategy.position_size > 0
    if temp_trailStop_long > trailStopLong or na(trailStopLong)
        trailStopLong := temp_trailStop_long
if strategy.position_size < 0
    if temp_trailStop_short < trailStopShort or na(trailStopShort)
        trailStopShort := temp_trailStop_short

// Handle strategy exit
if close < trailStopLong and barstate.isconfirmed
    strategy.close("Buy", comment="Stop Long")
if close > trailStopShort and barstate.isconfirmed
    strategy.close("Sell", comment="Stop Short")


// PRINT ON CHART
plot(kijunSen, color=color.rgb(214, 58, 30), title="Kijun-sen", linewidth=2)
p1 = plot(senkouA, offset=displacement - 1, color=#A5D6A7, title="Senkou span A")
p2 = plot(senkouB, offset=displacement - 1, color=#EF9A9A, title="Senkou Span B")
fill(p1, p2, color=senkouA > senkouB ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))
// PRINT SETUPS
plotshape(long_setup , style=shape.circle, color=color.green, location=location.belowbar, size=size.small)
plotshape(short_setup, style=shape.circle, color=color.red, location=location.abovebar, size=size.small)

// Trail Stop
plot(strategy.position_size[1] > 0 ? trailStopLong : na, style=plot.style_linebr, color=color.purple, title="Stop Loss")
plot(strategy.position_size[1] < 0 ? trailStopShort : na, style=plot.style_linebr, color=color.purple, title="Stop Loss")


더 많은