
이 전략은 간단하지만 수익성 높은 트렌드 추적 전략으로, 1시간 시간 프레임에 있는 ICHIMOKU 지표 시스템의 TENKAN 라인과 KIJUN 라인의 교차를 기반으로 트렌드 방향을 판단하고, ADX 지표와 결합하여 트렌드 약한 시장을 필터링하여 거래 신호를 발산한다. 이 전략은 주로 ETH/BTC와 같은 큰 시장의 altcoin의 BTC 거래 쌍에 적용된다.
이 전략은 ICHIMOKU 클라우드 그래프의 Conversion Line (TENKAN 라인) 과 Base Line (KIJUN 라인) 의 교차를 사용하여 시장의 경향 방향을 판단한다. 그 중, TENKAN 라인 계산 방법은 지난 18 줄의 K 라인에서 가장 최근의 최고점과 가장 최근의 최저점의 평균이며, 빠른 변환 라인을 나타냅니다.
빠른 전환선이 아래에서 표준 전환선을 통과할 때, 호불호 신호; 빠른 전환선이 위에서 아래로 표준 전환선을 통과할 때, 하향 신호 ᅲ.ᅲ 이렇게 중·단기 경향의 전환을 잡을 수 있다。
동시에, 전략은 ADX 지표와 결합하여 시장 경향의 강도를 필터링합니다. ADX 지표는 트렌드의 강도를 판단할 수 있습니다. ADX 값이 20보다 크면 현재 트렌드가 강하다는 것을 나타냅니다.
종합적으로, 이 전략은 TENKAN 선과 KIJUN 선의 교차 판단을 통해 중장기 트렌드 방향을 결정하고, ADX 지표의 필터링 가짜 돌파구와 함께 실제 트렌드를 고정하여 중장기 트렌드를 추적하는 목적을 달성한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
ICHIMOKU 클라우드 그래프를 사용하여 트렌드 방향을 판단하는 것은 그 자체로 매우 성숙하고 신뢰할 수 있는 지표 시스템으로 트렌드 전환점을 정확하게 판단할 수 있습니다.
ADX 지표 필터링과 함께 조정 강도가 약한 시장에 연결하여 정리 과정에서 자주 거래되는 것을 피하십시오.
1시간 줄 개발 전략은 단기 시장 소음을 필터링하여 중장기 경향만을 포착합니다.
전략은 간단하고 직관적이며, 이해하기 쉽고, 트렌드 추적자가 사용할 수 있도록 적합합니다.
전략적 재검토는 특히 ETH/BTC와 같은 대시장 통화 쌍에서 좋은 성과를 거두었습니다.
이 전략에는 몇 가지 위험도 있습니다.
ICHIMOKU 클라우드 그래프 자체는 매개 변수에 민감하며, 서로 다른 주기 매개 변수의 효과는 매우 다양하여, 서로 다른 동전 쌍에 대한 최적 매개 변수를 사용자 정의해야 한다.
ADX 지표는 특정 상황에서 신호를 지연하여 최적의 출입 시간을 놓치게 할 수 있습니다.
중장선 트렌드를 추적하는 전략으로, 충격적인 상황에서는 좋지 않은 성적을 내고, 손해가 발생할 수 있다.
다른 통화 쌍과 다른 시간 주기 이 전략의 효과는 매우 다양하며, 자신이 잘하는 품종에 따라 선택해야 한다.
장기간 지위를 보유하는 것은 위험성이 높으며, 적절하게 중지 및 중지 조건을 설정해야 한다.
이 전략은 ADX 매개 변수를 조정하거나 MACD와 같은 다른 지표를 추가하여 필터링 신호를 보조하여 가상 신호를 줄이고 전략의 안정성을 향상시킬 수 있습니다. 또한 다른 상황 유형에 적응하기 위해 매개 변수를 동적으로 조정하여 더 나은 융통성을 얻을 수 있습니다.
이 전략에는 다음과 같은 주요 최적화 방향이 있습니다.
동적으로 TENKAN 라인 및 KIJUN 라인의 매개 변수를 최적화하여 실시간 상황과 다른 통화에 더 잘 적응합니다.
ADX 지표를 최적화하거나 대체하여 보다 민감하고 효율적인 트렌드 판단 방법을 찾습니다.
단편 거래의 위험과 이익 비율을 통제하고 큰 손실을 피하기 위해 Stop Loss Stop Strategy에 가입하십시오.
포트폴리오를 최적화하고, 상호보완적인 지표들을 찾아서 통합된 전략을 수립하고, 안정성을 높여라.
코드 구조를 모듈화하여 사용자 정의 파라미터의 유연성을 증가시키고, 더 많은 품종에 적합합니다.
극심한 위험으로부터 보호하기 위해 최대 회수, 관련 계수 등과 같은 수량적 풍력 조절 방법을 추가하십시오.
요약하자면, 이 전략은 전체적으로 간단하고 실용적인 트렌드 추적 전략이다. 그것은 주로 TENKAN KIJUN 지표와 ADX를 교차하여 중장선 트렌드 방향을 판단하고 거래 신호를 발산한다. 이 전략은 재측량 효과가 뛰어나고, 특히 ETH/BTC와 같은 큰 시장 가치 통화 쌍에서 비교적 안정적인 수익을 얻을 수 있다.
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Odin's Kraken (TK Cross Strategy)", shorttitle="Odin's Kraken", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
src = input(close, title="Source")
// define tk in ichimoku
conversionPeriods = input(18, minval=1, title="Conversion Line Periods (Tenkan)"),
basePeriods = input(58, minval=1, title="Base Line Periods (Kijun)")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
TK_Uptrend = crossover(conversionLine,baseLine)
TK_Downtrend = crossunder(conversionLine,baseLine)
plot(conversionLine, color=lime, title="Tenkan", linewidth=3)
plot(baseLine, color=red, title="Kijun", linewidth=3)
// define ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", defval=20)
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)
// backtesting range
// From Date Inputs
fromDay = input(defval = 3, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2018, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 3, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2019, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
// open long and short
longCondition = TK_Uptrend
if (longCondition and sig > 12 and time_cond)
strategy.entry("LONG", strategy.long)
shortCondition = TK_Downtrend
if (shortCondition and sig > 12 and time_cond)
strategy.entry("SHORT", strategy.short)
// close trade if backtesting criteria not met
if (not time_cond)
strategy.close_all()