십자 이동 평균 황금 십자 죽음의 십자 전략

저자:차오장, 날짜: 2023-12-05 11:11:02
태그:

img

이것은 매우 고전적인 이동 평균 황금 십자 죽음의 십자 전략입니다. 전략은 긴 거래와 짧은 거래에 황금 십자 및 죽음의 십자 신호를 형성하기 위해 다른 시간 기간과 함께 두 개의 이동 평균, TENKAN 및 KIJUN을 사용합니다.

전략 논리

이 전략은 주로 Ichimoku Kinko Hyo라는 일본의 주식 기술 분석 방법을 기반으로 하며, TENKAN 및 KIJUN 라인 같은 여러 이동 평균을 사용하여 시장 트렌드 방향을 결정합니다.

우선, TENKAN 라인은 단기 트렌드를 나타내는 9일 라인이며, KIJUN 라인은 중기 트렌드를 나타내는 26일 라인이다. TENKAN 라인이 KIJUN 라인의 위를 넘을 때 구매 신호가 생성된다. TENKAN 라인이 KIJUN 라인의 아래로 떨어질 때 판매 신호가 생성된다. 이것은 고전적인 이동 평균 황금 십자가와 죽음의 십자가 전략을 형성한다.

둘째, 전략은 또한 센코 스판 A (SSA) 라인과 센코 스판 B (SSB) 라인을 도입한다. SSA 라인은 TENKAN 및 KIJUN 라인의 평균이며 SSB 라인은 52 일 이동 평균이다. 그들은 함께 장기 트렌드 방향을 결정하는 Kumo (구름) 대역을 형성한다. 구름 위의 가격은 상승 추세를 나타내고 구름 아래의 가격은 하락 추세를 나타낸다.

마지막으로, 가짜 신호를 필터링하기 위해 이 전략은 또한 치코 스판과 비교한 가격의 위치를 조사합니다 (폐기 가격 26 일 지연) 가격은 치코 아래에서 구매 신호를 생성하고 가격이 치코 위에있을 때 판매 신호를 생성합니다.

이점

이것은 매우 전형적인 이동 평균 전략입니다. 주요 장점은 다음과 같습니다.

  1. 서로 다른 기간의 두 개의 이동 평균을 사용하면 단기 및 중장기 트렌드 방향을 동시에 효과적으로 판단합니다.

  2. 장기적인 동향은 Kumo 대역으로 결정되어 장기적인 하위 시장에서 구매를 피합니다.

  3. 지연된 치코 라인과 가격을 비교하면 많은 가짜 신호를 필터링하고 불필요한 거래를 줄입니다.

이동 평균의 다양한 함수를 능숙하게 활용함으로써 이 전략은 단기, 중장기 및 긴 시간 프레임에 걸쳐 트렌드를 따라갈 수 있습니다.

위험성

이 전략의 주요 위험은 다음과 같습니다.

  1. 이동 평균 전략은 많은 가짜 신호를 생성하는 경향이 있습니다. 부정확한 매개 변수로 인한 빈번한 거래는 손실로 이어질 수 있습니다.

  2. 이 전략은 근본적인 요소를 고려하지 않고 기술에 집중합니다. 비즈니스 성과 또는 시장 정책의 주요 변화는 기술 신호를 무효화 할 수 있습니다.

  3. 스톱 로스 메커니즘이 포함되어 있지 않습니다. 시장 방향 판단이 잘못되면 손실이 축적 될 수 있습니다.

따라서 우리는 이 전략을 더욱 정밀화하고 위험을 줄이기 위해 더 진보된 이동 평균 시스템, 적절한 스톱 로스 규칙 또는 추가적인 기본 신호가 필요합니다.

더 나은 기회

이 전략은 다음 측면에서도 개선될 수 있습니다.

  1. 더 많은 백테스트를 통해 더 안정적이고 효율적인 매개 변수 집합을 검색합니다.

  2. 스톱 로스 규칙을 추가합니다. 합리적인 스톱 로스는 최대 손실을 효과적으로 제어하는 데 도움이됩니다.

  3. 회사 전망에 대한 통찰력을 포함하는 수익 추정치 수정과 같은 기본 신호를 보충하십시오.

  4. 더 안정적인 솔루션으로 치코 라인 가격 비교 전략을 최적화하십시오.

  5. 주식 선택 신호를 포함합니다. PE 비율과 ROE와 같은 점수 요소는 낮은 품질의 주식을 필터링 할 수 있습니다.

결론

이것은 매우 전형적이고 실용적인 이동 평균 전략입니다. 단기, 중장기 및 장기 트렌드를 동시에 모니터링하여 이동 평균의 다양한 기능을 활용하여 견고한 성능을 가진 거래 신호를 생성합니다. 매개 변수 조정, 스톱 로스 추가, 주식 선택 등을 통해 추가적으로 개선 할 수 있습니다. 전반적으로 이것은 연구와 추적에 가치가있는 유망한 수치 전략입니다.


/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © mdeous

//@version=4
strategy(
     title="Ichimoku Kinko Hyo Strategy", 
     shorttitle="Ichimoku Strategy", 
     overlay=true,
     pyramiding=0,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     initial_capital=1000,
     currency="USD",
     commission_type=strategy.commission.percent,
     commission_value=0.0
     )

//
// SETTINGS
//

// Ichimoku

int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1)
int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1)
int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1)
int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1)

// Strategy

int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1)
bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false)

//
// HELPERS
//

color _red = color.red
color _blue = color.blue
color _lime = color.lime
color _fuchsia = color.fuchsia
color _silver = color.silver
color _aqua = color.aqua

f_donchian(_len) => avg(lowest(_len), highest(_len))

//
// ICHIMOKU INDICATOR
//

float tenkan = f_donchian(TENKAN_LEN)
float kijun = f_donchian(KIJUN_LEN)
float ssa = avg(tenkan, kijun)
float ssb = f_donchian(SSB_LEN)

plot(tenkan, title="Tenkan", color=_silver)
plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua)
_ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime)
_ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red)
fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90)

//
// STRATEGY
//

// Check if price is "above or below" Chikou (i.e. historic price line):
// This detection is highly imperfect, as it can only know what Chikou position
// was 2*offset candles in the past, therefore if Chikou crossed the price
// line in the last 2*offset periods it won't be detected.
// Use of this detection is disabled by default,

float _chikou_val = close[OFFSET*2+1]
float _last_val = close[OFFSET+1]
bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true
bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true

// Identify short-term trend with Tenkan

bool _above_tenkan = min(open, close) > tenkan
bool _below_tenkan = max(open, close) < tenkan

// Check price position compared to Kumo

bool _above_kumo = min(open, close) > ssa
bool _below_kumo = max(open, close) < ssb

// Check if Kumo is bullish or bearish

bool bullish_kumo = ssa > ssb
bool bearish_kumo = ssa < ssb

// Correlate indicators to confirm the trend

bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo
bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo

// Build signals

bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA
bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist

bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB
bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist

bool go_long = below_chikou and (bullish_trend and (buy1 or buy2))
bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2))

//
// COOLDOWN
//

f_cooldown() =>
    _cd_needed = false
    for i = 1 to COOLDOWN by 1
        if go_long[i]
            _cd_needed := true
            break
    _cd_needed

go_long := f_cooldown() ? false : go_long

//
// ORDERS
//

strategy.entry("buy", strategy.long, when=go_long)
strategy.close_all(when=exit_long)

//
// ALERTS
//

alertcondition(
     condition=go_long,
     title="Buy Signal",
     message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )
alertcondition(
     condition=exit_long,
     title="Sell Signal",
     message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )


더 많은