이치모쿠 쿠모 트위스트 골드 흡수 전략 (Ichimoku Kumo Twist Gold-Absorbing Strategy) 은 이치모쿠 시장 기술 지표와 범위 필터링을 결합한 양적 거래 전략이다. 이치모쿠 지표를 사용하여 시장 추세와 중요한 지원 및 저항 수준을 결정하고, 촛불 패턴과 함께 거래 신호를 생성합니다. 한편, 범위 필터링은 거래 빈도와 위험을 제어하는 데 도움이됩니다.
이 전략은 주로 이치모쿠 지표와 촛불 패턴을 기반으로 시장 트렌드를 판단합니다. 이치모쿠는 전환선, 기본선 및 클라우드 라인을 포함하고 있으며, 그 교차 관계는 시장 트렌드를 나타냅니다. 클라우드 라인은 또한 지원 및 저항 수준으로 작용합니다. 이 전략은 이치모쿠 라인의 민감도를 조정하기 위해 다양한 매개 변수 조합을 설정합니다. 또한, 전략은 전환선이 기본선을 넘어서면 패턴을 식별하고 구매 신호를 생성하며, 밑을 넘을 때 판매 신호를 생성합니다. 이치모쿠는 이치모쿠 라인의 민감도를 조정합니다. 이치모쿠는 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환합니다. 이치모쿠는 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라인을 기준으로 전환하고, 이치모쿠 라
또한, 전략은 날짜 범위 필터를 설정하여 지정된 날짜 범위 내에서만 거래합니다. 이것은 거래 주파수를 제어합니다. 또한, 스톱 로스 설정은 가격이 불리한 방향으로 움직일 때 손실을 중지함으로써 위험을 줄이는 데 도움이됩니다.
이치모쿠 매개 변수를 조정하고, 날짜 범위를 최적화하고, 스톱 로스 포인트를 수정하는 방법들은 위험을 개선하고 통제할 수 있습니다.
이치모쿠 쿠모 트위스트 골드 흡수 전략은 이치모쿠 지표, 촛불 패턴 인식, 범위 필터링을 통합하여 시장 추세를 결정합니다. 트렌드 방향을 상당히 명확하게 파악 할 수 있습니다. 매개 변수 조정, 위험 통제 등과 같은 방법을 통해 좋은 전략 성능을 달성 할 수 있습니다. 그러나 이치모쿠 지체 문제가 주목되어야하며 지속적인 최적화 조정이 이루어집니다.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-27 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true) xlowest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := min(x, v) x xlowest(src, len) => na(src[len]) ? xlowest_(src, len) : lowest(src, len) xhighest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := max(x, v) x xhighest(src, len) => na(src[len]) ? xhighest_(src, len) : highest(src, len) dropn(src, n) => na(src[n]) ? na : src ichiConversionPeriods(presets) => if presets == "Cpt 20 60 120 30" 20 else if presets == "Cpt 10 30 60 30" 10 else if presets == "Std 18 52 104 26" 18 else 9 ichiBasePeriods(presets) => if presets == "Cpt 20 60 120 30" 60 else if presets == "Cpt 10 30 60 30" 30 else if presets == "Std 18 52 104 26" 52 else 26 ichiLaggingSpan2Periods(presets) => if presets == "Cpt 20 60 120 30" 120 else if presets == "Cpt 10 30 60 30" 60 else if presets == "Std 18 52 104 26" 104 else 52 ichiDisplacement(presets) => if presets == "Cpt 20 60 120 30" 30 else if presets == "Cpt 10 30 60 30" 30 else if presets == "Std 18 52 104 26" 26 else 26 scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear") presets = input(title="Presets", options=["Cpt 20 60 120 30", "Cpt 10 30 60 30", "Std 18 52 104 26", "Std 9 26 52 26"], defval="Cpt 20 60 120 30") dropCandles = input(1, minval=0, title="Drop first N candles") showClouds = input(false, "Show Clouds") stoploss = input(true, title="Stop Loss") conversionPeriods = ichiConversionPeriods(presets) basePeriods = ichiBasePeriods(presets) laggingSpan2Periods = ichiLaggingSpan2Periods(presets) displacement = ichiDisplacement(presets) logScaling = scaling == "Log" lows = dropn(low, dropCandles) highs = dropn(high, dropCandles) lowsp = logScaling ? log(lows) : lows highsp = logScaling ? log(highs) : highs donchian(len) => avg(xlowest(lowsp, len), xhighest(highsp, len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) // === BACKTEST RANGE === FromMonth = input(defval = 10, title = "From Month", minval = 1) FromDay = input(defval = 3, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) ToMonth = input(defval = 1, title = "To Month", minval = 1) ToDay = input(defval = 1, title = "To Day", minval = 1) ToYear = input(defval = 9999, title = "To Year", minval = 2014) golong = crossover(leadLine1, leadLine2) goshort = crossunder(leadLine1, leadLine2) strategy.entry("Buy", strategy.long, when=(golong and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59)))) strategy.entry("Sell", strategy.short, when=(goshort and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59)))) conversionLinep = logScaling ? exp(conversionLine) : conversionLine baseLinep = logScaling ? exp(baseLine) : baseLine leadLine1p = logScaling ? exp(leadLine1) : leadLine1 leadLine2p = logScaling ? exp(leadLine2) : leadLine2 plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line") plot(showClouds ? baseLinep : na, color=#991515, title="Base Line") p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1") p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)