
이 전략은 MACD 지표에 기반하여 각 거래의 위험을 제어할 수 있는 긴 라인 거래 전략을 설계했다. 전통적인 다중 하위 반전 전략에 비해, 이 전략은 각 거래의 위험 통제에 더 많은 관심을 기울였다. 전략은 목표 중지 가격과 중지 가격을 계산하여 합리적인 포지션 크기를 설정하고, 각 거래에 발생할 수있는 최대 손실을 제한했다. 이것은 회수를 효과적으로 제어하여 장기적으로 안정적인 수익을 얻을 수 있다.
이 전략은 먼저 MACD 지표의 macd 라인과 signal 라인을 계산한다. macd 라인이 아래에서 위로 신호 라인을 돌파했을 때, 구매 신호로 판단한다. 필터링 허위 돌파를 위해, 전략은 barssince ((crossover ((macd_line, signal_line)) <= 5를 요구한다. 즉, 돌파가 가장 최근의 5개의 K 라인 내에서 발생한다. 동시에 macd 라인과 신호 라인이 0보다 낮아 현재 초매 상태임을 표시하고, 그리고 종결 가격이 wma 평균 라인보다 높아 상승세를 나타냅니다.
각 거래에 대해, 전략은 합리적인 중지 가격과 중지 가격을 계산한다. 중지 가격은 최근 3 K 라인의 최저 가격으로 설정된다. 중지 가격은 구매 가격에 추가된 중지 가격으로 구매 가격의 4 배로 설정된다.
중요한 것은, 전략은 용납 가능한 위험에 따라 각 거래의 특정 포지션을 계산하는 것이다. capital_risk이라는 변수를 사용하여 각 거래의 최대 용납 가능한 손실이 총 자본의 비율을 설정한다. 그리고는 막손해의 범위에 따라 달러로 된 포지션 크기를 계산한다. 그리고는 계약 수로 전환하여 입점 포지션을 개시한다.
매 거래의 리스크를 총 자본의 1% 내에 통제할 수 있고, 철회를 효과적으로 통제할 수 있다. 동시에, 정지 위치가 더 커지면 더 높은 수익을 얻을 수 있다.
다음을 고려할 수 있습니다:
이 전략은 MACD 지표에 기반하여 트렌드 방향을 판단하고, 위험을 우선으로 제어하고, 합리적인 포지션을 계산하여 거래한다. 핵심은 위험 제어와 포지션 최적화이며, 장기적으로 안정적인 수익을 얻을 수 있다. 그러나 MACD 지표에는 특정 결함이 있으며, 손해 중지 장치도 추가 최적화가 필요합니다. 지표 사용, 손해 중지 설정 및 거래 빈도를 줄이면 전략이 더 강해질 수 있다.
/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy( "McDonalds ", shorttitle="Ur Lovin' It", initial_capital=10000, default_qty_type=strategy.cash, currency=currency.USD )
capital_risk = input( 1.0, "% capital risk per trade" ) / 100
r_exit = input( 4.0, "Take Profit in 'R'" )
wma_length = input( 150, 'WMA Bias Length' )
[macd_line, signal_line, hist ] = macd(close, 12, 26, 9)
w_line = wma( close, wma_length )
golong = barssince(crossover(macd_line, signal_line)) <= 5 and ( macd_line < 0 and signal_line < 0 ) and ( close > w_line ) and strategy.opentrades == 0
float stop = na
float tp = na
// For a stop, use a recent low
stop := golong ? lowest(low, 3)[1] : stop[1]
range = abs(close - stop)
tp := golong ? close + (r_exit * range) : tp[1]
// This is the bit that calculates how much size to use so we only lose 1% of the `strategy.equity`
how_much_willing_to_lose = strategy.equity * capital_risk
// Spread the risk across the stop range
position_size_in_usd = how_much_willing_to_lose / (range / close)
// Sized specified in base contract
position_size_in_contracts = position_size_in_usd / close
// Enter the position
if golong
strategy.entry("long", strategy.long, qty=position_size_in_contracts)
strategy.exit("long exit","long", stop=stop, limit=tp)
// experimental exit strategy
// hist_strength = hist >= 0 ? ( hist[1] < hist ? 'strong' : 'weak') : ( hist[1] < hist ? 'weak' : 'strong' )
// if hist < 0 and hist_strength == 'strong' and falling( hist, 8 )
// strategy.close("long")
plot( strategy.equity, color=strategy.equity > 10000 ? color.green : color.red, linewidth=2 )